// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: proto/remote-storage.proto

package remote;

public final class RemoteStorage {
  private RemoteStorage() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  /**
   * Protobuf enum {@code remote.MatchType}
   */
  public enum MatchType
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <code>EQUAL = 0;</code>
     */
    EQUAL(0, 0),
    /**
     * <code>NOT_EQUAL = 1;</code>
     */
    NOT_EQUAL(1, 1),
    /**
     * <code>REGEX_MATCH = 2;</code>
     */
    REGEX_MATCH(2, 2),
    /**
     * <code>REGEX_NO_MATCH = 3;</code>
     */
    REGEX_NO_MATCH(3, 3),
    ;

    /**
     * <code>EQUAL = 0;</code>
     */
    public static final int EQUAL_VALUE = 0;
    /**
     * <code>NOT_EQUAL = 1;</code>
     */
    public static final int NOT_EQUAL_VALUE = 1;
    /**
     * <code>REGEX_MATCH = 2;</code>
     */
    public static final int REGEX_MATCH_VALUE = 2;
    /**
     * <code>REGEX_NO_MATCH = 3;</code>
     */
    public static final int REGEX_NO_MATCH_VALUE = 3;


    public final int getNumber() { return value; }

    public static MatchType valueOf(int value) {
      switch (value) {
        case 0: return EQUAL;
        case 1: return NOT_EQUAL;
        case 2: return REGEX_MATCH;
        case 3: return REGEX_NO_MATCH;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<MatchType>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static com.google.protobuf.Internal.EnumLiteMap<MatchType>
        internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<MatchType>() {
            public MatchType findValueByNumber(int number) {
              return MatchType.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 remote.RemoteStorage.getDescriptor().getEnumTypes().get(0);
    }

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

    public static MatchType 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 MatchType(int index, int value) {
      this.index = index;
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:remote.MatchType)
  }

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

    // optional double value = 1;
    /**
     * <code>optional double value = 1;</code>
     */
    boolean hasValue();
    /**
     * <code>optional double value = 1;</code>
     */
    double getValue();

    // optional int64 timestamp_ms = 2;
    /**
     * <code>optional int64 timestamp_ms = 2;</code>
     */
    boolean hasTimestampMs();
    /**
     * <code>optional int64 timestamp_ms = 2;</code>
     */
    long getTimestampMs();
  }
  /**
   * Protobuf type {@code remote.Sample}
   */
  public static final class Sample extends
      com.google.protobuf.GeneratedMessage
      implements SampleOrBuilder {
    // Use Sample.newBuilder() to construct.
    private Sample(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Sample(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public Sample getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Sample(
        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 9: {
              bitField0_ |= 0x00000001;
              value_ = input.readDouble();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              timestampMs_ = input.readInt64();
              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 remote.RemoteStorage.internal_static_remote_Sample_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return remote.RemoteStorage.internal_static_remote_Sample_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              remote.RemoteStorage.Sample.class, remote.RemoteStorage.Sample.Builder.class);
    }

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

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

    private int bitField0_;
    // optional double value = 1;
    public static final int VALUE_FIELD_NUMBER = 1;
    private double value_;
    /**
     * <code>optional double value = 1;</code>
     */
    public boolean hasValue() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional double value = 1;</code>
     */
    public double getValue() {
      return value_;
    }

    // optional int64 timestamp_ms = 2;
    public static final int TIMESTAMP_MS_FIELD_NUMBER = 2;
    private long timestampMs_;
    /**
     * <code>optional int64 timestamp_ms = 2;</code>
     */
    public boolean hasTimestampMs() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int64 timestamp_ms = 2;</code>
     */
    public long getTimestampMs() {
      return timestampMs_;
    }

    private void initFields() {
      value_ = 0D;
      timestampMs_ = 0L;
    }
    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.writeDouble(1, value_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt64(2, timestampMs_);
      }
      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
          .computeDoubleSize(1, value_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, timestampMs_);
      }
      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 remote.RemoteStorage.Sample parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static remote.RemoteStorage.Sample parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static remote.RemoteStorage.Sample parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static remote.RemoteStorage.Sample parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static remote.RemoteStorage.Sample parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static remote.RemoteStorage.Sample parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static remote.RemoteStorage.Sample parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static remote.RemoteStorage.Sample parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static remote.RemoteStorage.Sample parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static remote.RemoteStorage.Sample 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(remote.RemoteStorage.Sample 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 remote.Sample}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements remote.RemoteStorage.SampleOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return remote.RemoteStorage.internal_static_remote_Sample_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return remote.RemoteStorage.internal_static_remote_Sample_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                remote.RemoteStorage.Sample.class, remote.RemoteStorage.Sample.Builder.class);
      }

      // Construct using remote.RemoteStorage.Sample.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();
        value_ = 0D;
        bitField0_ = (bitField0_ & ~0x00000001);
        timestampMs_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return remote.RemoteStorage.internal_static_remote_Sample_descriptor;
      }

      public remote.RemoteStorage.Sample getDefaultInstanceForType() {
        return remote.RemoteStorage.Sample.getDefaultInstance();
      }

      public remote.RemoteStorage.Sample build() {
        remote.RemoteStorage.Sample result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public remote.RemoteStorage.Sample buildPartial() {
        remote.RemoteStorage.Sample result = new remote.RemoteStorage.Sample(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.value_ = value_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.timestampMs_ = timestampMs_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(remote.RemoteStorage.Sample other) {
        if (other == remote.RemoteStorage.Sample.getDefaultInstance()) return this;
        if (other.hasValue()) {
          setValue(other.getValue());
        }
        if (other.hasTimestampMs()) {
          setTimestampMs(other.getTimestampMs());
        }
        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 {
        remote.RemoteStorage.Sample parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (remote.RemoteStorage.Sample) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional double value = 1;
      private double value_ ;
      /**
       * <code>optional double value = 1;</code>
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional double value = 1;</code>
       */
      public double getValue() {
        return value_;
      }
      /**
       * <code>optional double value = 1;</code>
       */
      public Builder setValue(double value) {
        bitField0_ |= 0x00000001;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional double value = 1;</code>
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = 0D;
        onChanged();
        return this;
      }

      // optional int64 timestamp_ms = 2;
      private long timestampMs_ ;
      /**
       * <code>optional int64 timestamp_ms = 2;</code>
       */
      public boolean hasTimestampMs() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int64 timestamp_ms = 2;</code>
       */
      public long getTimestampMs() {
        return timestampMs_;
      }
      /**
       * <code>optional int64 timestamp_ms = 2;</code>
       */
      public Builder setTimestampMs(long value) {
        bitField0_ |= 0x00000002;
        timestampMs_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 timestamp_ms = 2;</code>
       */
      public Builder clearTimestampMs() {
        bitField0_ = (bitField0_ & ~0x00000002);
        timestampMs_ = 0L;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:remote.Sample)
    }

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

    // @@protoc_insertion_point(class_scope:remote.Sample)
  }

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

    // optional string name = 1;
    /**
     * <code>optional string name = 1;</code>
     */
    boolean hasName();
    /**
     * <code>optional string name = 1;</code>
     */
    java.lang.String getName();
    /**
     * <code>optional string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    // optional string value = 2;
    /**
     * <code>optional string value = 2;</code>
     */
    boolean hasValue();
    /**
     * <code>optional string value = 2;</code>
     */
    java.lang.String getValue();
    /**
     * <code>optional string value = 2;</code>
     */
    com.google.protobuf.ByteString
        getValueBytes();
  }
  /**
   * Protobuf type {@code remote.LabelPair}
   */
  public static final class LabelPair extends
      com.google.protobuf.GeneratedMessage
      implements LabelPairOrBuilder {
    // Use LabelPair.newBuilder() to construct.
    private LabelPair(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private LabelPair(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public LabelPair getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private LabelPair(
        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;
              name_ = input.readBytes();
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              value_ = 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 remote.RemoteStorage.internal_static_remote_LabelPair_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return remote.RemoteStorage.internal_static_remote_LabelPair_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              remote.RemoteStorage.LabelPair.class, remote.RemoteStorage.LabelPair.Builder.class);
    }

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

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

    private int bitField0_;
    // optional string name = 1;
    public static final int NAME_FIELD_NUMBER = 1;
    private java.lang.Object name_;
    /**
     * <code>optional string name = 1;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional string name = 1;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      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()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string value = 2;
    public static final int VALUE_FIELD_NUMBER = 2;
    private java.lang.Object value_;
    /**
     * <code>optional string value = 2;</code>
     */
    public boolean hasValue() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional string value = 2;</code>
     */
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      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()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string value = 2;</code>
     */
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      name_ = "";
      value_ = "";
    }
    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, getNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeBytes(2, getValueBytes());
      }
      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, getNameBytes());
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, getValueBytes());
      }
      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 remote.RemoteStorage.LabelPair parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static remote.RemoteStorage.LabelPair parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static remote.RemoteStorage.LabelPair parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static remote.RemoteStorage.LabelPair parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static remote.RemoteStorage.LabelPair parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static remote.RemoteStorage.LabelPair parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static remote.RemoteStorage.LabelPair parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static remote.RemoteStorage.LabelPair parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static remote.RemoteStorage.LabelPair parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static remote.RemoteStorage.LabelPair 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(remote.RemoteStorage.LabelPair 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 remote.LabelPair}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements remote.RemoteStorage.LabelPairOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return remote.RemoteStorage.internal_static_remote_LabelPair_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return remote.RemoteStorage.internal_static_remote_LabelPair_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                remote.RemoteStorage.LabelPair.class, remote.RemoteStorage.LabelPair.Builder.class);
      }

      // Construct using remote.RemoteStorage.LabelPair.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();
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000001);
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return remote.RemoteStorage.internal_static_remote_LabelPair_descriptor;
      }

      public remote.RemoteStorage.LabelPair getDefaultInstanceForType() {
        return remote.RemoteStorage.LabelPair.getDefaultInstance();
      }

      public remote.RemoteStorage.LabelPair build() {
        remote.RemoteStorage.LabelPair result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public remote.RemoteStorage.LabelPair buildPartial() {
        remote.RemoteStorage.LabelPair result = new remote.RemoteStorage.LabelPair(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.value_ = value_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(remote.RemoteStorage.LabelPair other) {
        if (other == remote.RemoteStorage.LabelPair.getDefaultInstance()) return this;
        if (other.hasName()) {
          bitField0_ |= 0x00000001;
          name_ = other.name_;
          onChanged();
        }
        if (other.hasValue()) {
          bitField0_ |= 0x00000002;
          value_ = other.value_;
          onChanged();
        }
        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 {
        remote.RemoteStorage.LabelPair parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (remote.RemoteStorage.LabelPair) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional string name = 1;
      private java.lang.Object name_ = "";
      /**
       * <code>optional string name = 1;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional string name = 1;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string name = 1;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string name = 1;</code>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>optional string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        name_ = value;
        onChanged();
        return this;
      }

      // optional string value = 2;
      private java.lang.Object value_ = "";
      /**
       * <code>optional string value = 2;</code>
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional string value = 2;</code>
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          value_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string value = 2;</code>
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string value = 2;</code>
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string value = 2;</code>
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      /**
       * <code>optional string value = 2;</code>
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        value_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:remote.LabelPair)
    }

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

    // @@protoc_insertion_point(class_scope:remote.LabelPair)
  }

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

    // repeated .remote.LabelPair labels = 1;
    /**
     * <code>repeated .remote.LabelPair labels = 1;</code>
     */
    java.util.List<remote.RemoteStorage.LabelPair> 
        getLabelsList();
    /**
     * <code>repeated .remote.LabelPair labels = 1;</code>
     */
    remote.RemoteStorage.LabelPair getLabels(int index);
    /**
     * <code>repeated .remote.LabelPair labels = 1;</code>
     */
    int getLabelsCount();
    /**
     * <code>repeated .remote.LabelPair labels = 1;</code>
     */
    java.util.List<? extends remote.RemoteStorage.LabelPairOrBuilder> 
        getLabelsOrBuilderList();
    /**
     * <code>repeated .remote.LabelPair labels = 1;</code>
     */
    remote.RemoteStorage.LabelPairOrBuilder getLabelsOrBuilder(
        int index);

    // repeated .remote.Sample samples = 2;
    /**
     * <code>repeated .remote.Sample samples = 2;</code>
     *
     * <pre>
     * Sorted by time, oldest sample first.
     * </pre>
     */
    java.util.List<remote.RemoteStorage.Sample> 
        getSamplesList();
    /**
     * <code>repeated .remote.Sample samples = 2;</code>
     *
     * <pre>
     * Sorted by time, oldest sample first.
     * </pre>
     */
    remote.RemoteStorage.Sample getSamples(int index);
    /**
     * <code>repeated .remote.Sample samples = 2;</code>
     *
     * <pre>
     * Sorted by time, oldest sample first.
     * </pre>
     */
    int getSamplesCount();
    /**
     * <code>repeated .remote.Sample samples = 2;</code>
     *
     * <pre>
     * Sorted by time, oldest sample first.
     * </pre>
     */
    java.util.List<? extends remote.RemoteStorage.SampleOrBuilder> 
        getSamplesOrBuilderList();
    /**
     * <code>repeated .remote.Sample samples = 2;</code>
     *
     * <pre>
     * Sorted by time, oldest sample first.
     * </pre>
     */
    remote.RemoteStorage.SampleOrBuilder getSamplesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code remote.TimeSeries}
   */
  public static final class TimeSeries extends
      com.google.protobuf.GeneratedMessage
      implements TimeSeriesOrBuilder {
    // Use TimeSeries.newBuilder() to construct.
    private TimeSeries(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private TimeSeries(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public TimeSeries getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private TimeSeries(
        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: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                labels_ = new java.util.ArrayList<remote.RemoteStorage.LabelPair>();
                mutable_bitField0_ |= 0x00000001;
              }
              labels_.add(input.readMessage(remote.RemoteStorage.LabelPair.PARSER, extensionRegistry));
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                samples_ = new java.util.ArrayList<remote.RemoteStorage.Sample>();
                mutable_bitField0_ |= 0x00000002;
              }
              samples_.add(input.readMessage(remote.RemoteStorage.Sample.PARSER, extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          labels_ = java.util.Collections.unmodifiableList(labels_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          samples_ = java.util.Collections.unmodifiableList(samples_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return remote.RemoteStorage.internal_static_remote_TimeSeries_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return remote.RemoteStorage.internal_static_remote_TimeSeries_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              remote.RemoteStorage.TimeSeries.class, remote.RemoteStorage.TimeSeries.Builder.class);
    }

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

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

    // repeated .remote.LabelPair labels = 1;
    public static final int LABELS_FIELD_NUMBER = 1;
    private java.util.List<remote.RemoteStorage.LabelPair> labels_;
    /**
     * <code>repeated .remote.LabelPair labels = 1;</code>
     */
    public java.util.List<remote.RemoteStorage.LabelPair> getLabelsList() {
      return labels_;
    }
    /**
     * <code>repeated .remote.LabelPair labels = 1;</code>
     */
    public java.util.List<? extends remote.RemoteStorage.LabelPairOrBuilder> 
        getLabelsOrBuilderList() {
      return labels_;
    }
    /**
     * <code>repeated .remote.LabelPair labels = 1;</code>
     */
    public int getLabelsCount() {
      return labels_.size();
    }
    /**
     * <code>repeated .remote.LabelPair labels = 1;</code>
     */
    public remote.RemoteStorage.LabelPair getLabels(int index) {
      return labels_.get(index);
    }
    /**
     * <code>repeated .remote.LabelPair labels = 1;</code>
     */
    public remote.RemoteStorage.LabelPairOrBuilder getLabelsOrBuilder(
        int index) {
      return labels_.get(index);
    }

    // repeated .remote.Sample samples = 2;
    public static final int SAMPLES_FIELD_NUMBER = 2;
    private java.util.List<remote.RemoteStorage.Sample> samples_;
    /**
     * <code>repeated .remote.Sample samples = 2;</code>
     *
     * <pre>
     * Sorted by time, oldest sample first.
     * </pre>
     */
    public java.util.List<remote.RemoteStorage.Sample> getSamplesList() {
      return samples_;
    }
    /**
     * <code>repeated .remote.Sample samples = 2;</code>
     *
     * <pre>
     * Sorted by time, oldest sample first.
     * </pre>
     */
    public java.util.List<? extends remote.RemoteStorage.SampleOrBuilder> 
        getSamplesOrBuilderList() {
      return samples_;
    }
    /**
     * <code>repeated .remote.Sample samples = 2;</code>
     *
     * <pre>
     * Sorted by time, oldest sample first.
     * </pre>
     */
    public int getSamplesCount() {
      return samples_.size();
    }
    /**
     * <code>repeated .remote.Sample samples = 2;</code>
     *
     * <pre>
     * Sorted by time, oldest sample first.
     * </pre>
     */
    public remote.RemoteStorage.Sample getSamples(int index) {
      return samples_.get(index);
    }
    /**
     * <code>repeated .remote.Sample samples = 2;</code>
     *
     * <pre>
     * Sorted by time, oldest sample first.
     * </pre>
     */
    public remote.RemoteStorage.SampleOrBuilder getSamplesOrBuilder(
        int index) {
      return samples_.get(index);
    }

    private void initFields() {
      labels_ = java.util.Collections.emptyList();
      samples_ = java.util.Collections.emptyList();
    }
    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();
      for (int i = 0; i < labels_.size(); i++) {
        output.writeMessage(1, labels_.get(i));
      }
      for (int i = 0; i < samples_.size(); i++) {
        output.writeMessage(2, samples_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < labels_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, labels_.get(i));
      }
      for (int i = 0; i < samples_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, samples_.get(i));
      }
      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 remote.RemoteStorage.TimeSeries parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static remote.RemoteStorage.TimeSeries parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static remote.RemoteStorage.TimeSeries parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static remote.RemoteStorage.TimeSeries parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static remote.RemoteStorage.TimeSeries parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static remote.RemoteStorage.TimeSeries parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static remote.RemoteStorage.TimeSeries parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static remote.RemoteStorage.TimeSeries parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static remote.RemoteStorage.TimeSeries parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static remote.RemoteStorage.TimeSeries 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(remote.RemoteStorage.TimeSeries 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 remote.TimeSeries}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements remote.RemoteStorage.TimeSeriesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return remote.RemoteStorage.internal_static_remote_TimeSeries_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return remote.RemoteStorage.internal_static_remote_TimeSeries_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                remote.RemoteStorage.TimeSeries.class, remote.RemoteStorage.TimeSeries.Builder.class);
      }

      // Construct using remote.RemoteStorage.TimeSeries.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        if (labelsBuilder_ == null) {
          labels_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          labelsBuilder_.clear();
        }
        if (samplesBuilder_ == null) {
          samples_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          samplesBuilder_.clear();
        }
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return remote.RemoteStorage.internal_static_remote_TimeSeries_descriptor;
      }

      public remote.RemoteStorage.TimeSeries getDefaultInstanceForType() {
        return remote.RemoteStorage.TimeSeries.getDefaultInstance();
      }

      public remote.RemoteStorage.TimeSeries build() {
        remote.RemoteStorage.TimeSeries result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public remote.RemoteStorage.TimeSeries buildPartial() {
        remote.RemoteStorage.TimeSeries result = new remote.RemoteStorage.TimeSeries(this);
        int from_bitField0_ = bitField0_;
        if (labelsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            labels_ = java.util.Collections.unmodifiableList(labels_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.labels_ = labels_;
        } else {
          result.labels_ = labelsBuilder_.build();
        }
        if (samplesBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            samples_ = java.util.Collections.unmodifiableList(samples_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.samples_ = samples_;
        } else {
          result.samples_ = samplesBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(remote.RemoteStorage.TimeSeries other) {
        if (other == remote.RemoteStorage.TimeSeries.getDefaultInstance()) return this;
        if (labelsBuilder_ == null) {
          if (!other.labels_.isEmpty()) {
            if (labels_.isEmpty()) {
              labels_ = other.labels_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureLabelsIsMutable();
              labels_.addAll(other.labels_);
            }
            onChanged();
          }
        } else {
          if (!other.labels_.isEmpty()) {
            if (labelsBuilder_.isEmpty()) {
              labelsBuilder_.dispose();
              labelsBuilder_ = null;
              labels_ = other.labels_;
              bitField0_ = (bitField0_ & ~0x00000001);
              labelsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getLabelsFieldBuilder() : null;
            } else {
              labelsBuilder_.addAllMessages(other.labels_);
            }
          }
        }
        if (samplesBuilder_ == null) {
          if (!other.samples_.isEmpty()) {
            if (samples_.isEmpty()) {
              samples_ = other.samples_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureSamplesIsMutable();
              samples_.addAll(other.samples_);
            }
            onChanged();
          }
        } else {
          if (!other.samples_.isEmpty()) {
            if (samplesBuilder_.isEmpty()) {
              samplesBuilder_.dispose();
              samplesBuilder_ = null;
              samples_ = other.samples_;
              bitField0_ = (bitField0_ & ~0x00000002);
              samplesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getSamplesFieldBuilder() : null;
            } else {
              samplesBuilder_.addAllMessages(other.samples_);
            }
          }
        }
        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 {
        remote.RemoteStorage.TimeSeries parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (remote.RemoteStorage.TimeSeries) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .remote.LabelPair labels = 1;
      private java.util.List<remote.RemoteStorage.LabelPair> labels_ =
        java.util.Collections.emptyList();
      private void ensureLabelsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          labels_ = new java.util.ArrayList<remote.RemoteStorage.LabelPair>(labels_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          remote.RemoteStorage.LabelPair, remote.RemoteStorage.LabelPair.Builder, remote.RemoteStorage.LabelPairOrBuilder> labelsBuilder_;

      /**
       * <code>repeated .remote.LabelPair labels = 1;</code>
       */
      public java.util.List<remote.RemoteStorage.LabelPair> getLabelsList() {
        if (labelsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(labels_);
        } else {
          return labelsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .remote.LabelPair labels = 1;</code>
       */
      public int getLabelsCount() {
        if (labelsBuilder_ == null) {
          return labels_.size();
        } else {
          return labelsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .remote.LabelPair labels = 1;</code>
       */
      public remote.RemoteStorage.LabelPair getLabels(int index) {
        if (labelsBuilder_ == null) {
          return labels_.get(index);
        } else {
          return labelsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .remote.LabelPair labels = 1;</code>
       */
      public Builder setLabels(
          int index, remote.RemoteStorage.LabelPair value) {
        if (labelsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLabelsIsMutable();
          labels_.set(index, value);
          onChanged();
        } else {
          labelsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .remote.LabelPair labels = 1;</code>
       */
      public Builder setLabels(
          int index, remote.RemoteStorage.LabelPair.Builder builderForValue) {
        if (labelsBuilder_ == null) {
          ensureLabelsIsMutable();
          labels_.set(index, builderForValue.build());
          onChanged();
        } else {
          labelsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .remote.LabelPair labels = 1;</code>
       */
      public Builder addLabels(remote.RemoteStorage.LabelPair value) {
        if (labelsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLabelsIsMutable();
          labels_.add(value);
          onChanged();
        } else {
          labelsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .remote.LabelPair labels = 1;</code>
       */
      public Builder addLabels(
          int index, remote.RemoteStorage.LabelPair value) {
        if (labelsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLabelsIsMutable();
          labels_.add(index, value);
          onChanged();
        } else {
          labelsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .remote.LabelPair labels = 1;</code>
       */
      public Builder addLabels(
          remote.RemoteStorage.LabelPair.Builder builderForValue) {
        if (labelsBuilder_ == null) {
          ensureLabelsIsMutable();
          labels_.add(builderForValue.build());
          onChanged();
        } else {
          labelsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .remote.LabelPair labels = 1;</code>
       */
      public Builder addLabels(
          int index, remote.RemoteStorage.LabelPair.Builder builderForValue) {
        if (labelsBuilder_ == null) {
          ensureLabelsIsMutable();
          labels_.add(index, builderForValue.build());
          onChanged();
        } else {
          labelsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .remote.LabelPair labels = 1;</code>
       */
      public Builder addAllLabels(
          java.lang.Iterable<? extends remote.RemoteStorage.LabelPair> values) {
        if (labelsBuilder_ == null) {
          ensureLabelsIsMutable();
          super.addAll(values, labels_);
          onChanged();
        } else {
          labelsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .remote.LabelPair labels = 1;</code>
       */
      public Builder clearLabels() {
        if (labelsBuilder_ == null) {
          labels_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          labelsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .remote.LabelPair labels = 1;</code>
       */
      public Builder removeLabels(int index) {
        if (labelsBuilder_ == null) {
          ensureLabelsIsMutable();
          labels_.remove(index);
          onChanged();
        } else {
          labelsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .remote.LabelPair labels = 1;</code>
       */
      public remote.RemoteStorage.LabelPair.Builder getLabelsBuilder(
          int index) {
        return getLabelsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .remote.LabelPair labels = 1;</code>
       */
      public remote.RemoteStorage.LabelPairOrBuilder getLabelsOrBuilder(
          int index) {
        if (labelsBuilder_ == null) {
          return labels_.get(index);  } else {
          return labelsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .remote.LabelPair labels = 1;</code>
       */
      public java.util.List<? extends remote.RemoteStorage.LabelPairOrBuilder> 
           getLabelsOrBuilderList() {
        if (labelsBuilder_ != null) {
          return labelsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(labels_);
        }
      }
      /**
       * <code>repeated .remote.LabelPair labels = 1;</code>
       */
      public remote.RemoteStorage.LabelPair.Builder addLabelsBuilder() {
        return getLabelsFieldBuilder().addBuilder(
            remote.RemoteStorage.LabelPair.getDefaultInstance());
      }
      /**
       * <code>repeated .remote.LabelPair labels = 1;</code>
       */
      public remote.RemoteStorage.LabelPair.Builder addLabelsBuilder(
          int index) {
        return getLabelsFieldBuilder().addBuilder(
            index, remote.RemoteStorage.LabelPair.getDefaultInstance());
      }
      /**
       * <code>repeated .remote.LabelPair labels = 1;</code>
       */
      public java.util.List<remote.RemoteStorage.LabelPair.Builder> 
           getLabelsBuilderList() {
        return getLabelsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          remote.RemoteStorage.LabelPair, remote.RemoteStorage.LabelPair.Builder, remote.RemoteStorage.LabelPairOrBuilder> 
          getLabelsFieldBuilder() {
        if (labelsBuilder_ == null) {
          labelsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              remote.RemoteStorage.LabelPair, remote.RemoteStorage.LabelPair.Builder, remote.RemoteStorage.LabelPairOrBuilder>(
                  labels_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          labels_ = null;
        }
        return labelsBuilder_;
      }

      // repeated .remote.Sample samples = 2;
      private java.util.List<remote.RemoteStorage.Sample> samples_ =
        java.util.Collections.emptyList();
      private void ensureSamplesIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          samples_ = new java.util.ArrayList<remote.RemoteStorage.Sample>(samples_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          remote.RemoteStorage.Sample, remote.RemoteStorage.Sample.Builder, remote.RemoteStorage.SampleOrBuilder> samplesBuilder_;

      /**
       * <code>repeated .remote.Sample samples = 2;</code>
       *
       * <pre>
       * Sorted by time, oldest sample first.
       * </pre>
       */
      public java.util.List<remote.RemoteStorage.Sample> getSamplesList() {
        if (samplesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(samples_);
        } else {
          return samplesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .remote.Sample samples = 2;</code>
       *
       * <pre>
       * Sorted by time, oldest sample first.
       * </pre>
       */
      public int getSamplesCount() {
        if (samplesBuilder_ == null) {
          return samples_.size();
        } else {
          return samplesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .remote.Sample samples = 2;</code>
       *
       * <pre>
       * Sorted by time, oldest sample first.
       * </pre>
       */
      public remote.RemoteStorage.Sample getSamples(int index) {
        if (samplesBuilder_ == null) {
          return samples_.get(index);
        } else {
          return samplesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .remote.Sample samples = 2;</code>
       *
       * <pre>
       * Sorted by time, oldest sample first.
       * </pre>
       */
      public Builder setSamples(
          int index, remote.RemoteStorage.Sample value) {
        if (samplesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSamplesIsMutable();
          samples_.set(index, value);
          onChanged();
        } else {
          samplesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .remote.Sample samples = 2;</code>
       *
       * <pre>
       * Sorted by time, oldest sample first.
       * </pre>
       */
      public Builder setSamples(
          int index, remote.RemoteStorage.Sample.Builder builderForValue) {
        if (samplesBuilder_ == null) {
          ensureSamplesIsMutable();
          samples_.set(index, builderForValue.build());
          onChanged();
        } else {
          samplesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .remote.Sample samples = 2;</code>
       *
       * <pre>
       * Sorted by time, oldest sample first.
       * </pre>
       */
      public Builder addSamples(remote.RemoteStorage.Sample value) {
        if (samplesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSamplesIsMutable();
          samples_.add(value);
          onChanged();
        } else {
          samplesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .remote.Sample samples = 2;</code>
       *
       * <pre>
       * Sorted by time, oldest sample first.
       * </pre>
       */
      public Builder addSamples(
          int index, remote.RemoteStorage.Sample value) {
        if (samplesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSamplesIsMutable();
          samples_.add(index, value);
          onChanged();
        } else {
          samplesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .remote.Sample samples = 2;</code>
       *
       * <pre>
       * Sorted by time, oldest sample first.
       * </pre>
       */
      public Builder addSamples(
          remote.RemoteStorage.Sample.Builder builderForValue) {
        if (samplesBuilder_ == null) {
          ensureSamplesIsMutable();
          samples_.add(builderForValue.build());
          onChanged();
        } else {
          samplesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .remote.Sample samples = 2;</code>
       *
       * <pre>
       * Sorted by time, oldest sample first.
       * </pre>
       */
      public Builder addSamples(
          int index, remote.RemoteStorage.Sample.Builder builderForValue) {
        if (samplesBuilder_ == null) {
          ensureSamplesIsMutable();
          samples_.add(index, builderForValue.build());
          onChanged();
        } else {
          samplesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .remote.Sample samples = 2;</code>
       *
       * <pre>
       * Sorted by time, oldest sample first.
       * </pre>
       */
      public Builder addAllSamples(
          java.lang.Iterable<? extends remote.RemoteStorage.Sample> values) {
        if (samplesBuilder_ == null) {
          ensureSamplesIsMutable();
          super.addAll(values, samples_);
          onChanged();
        } else {
          samplesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .remote.Sample samples = 2;</code>
       *
       * <pre>
       * Sorted by time, oldest sample first.
       * </pre>
       */
      public Builder clearSamples() {
        if (samplesBuilder_ == null) {
          samples_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          samplesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .remote.Sample samples = 2;</code>
       *
       * <pre>
       * Sorted by time, oldest sample first.
       * </pre>
       */
      public Builder removeSamples(int index) {
        if (samplesBuilder_ == null) {
          ensureSamplesIsMutable();
          samples_.remove(index);
          onChanged();
        } else {
          samplesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .remote.Sample samples = 2;</code>
       *
       * <pre>
       * Sorted by time, oldest sample first.
       * </pre>
       */
      public remote.RemoteStorage.Sample.Builder getSamplesBuilder(
          int index) {
        return getSamplesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .remote.Sample samples = 2;</code>
       *
       * <pre>
       * Sorted by time, oldest sample first.
       * </pre>
       */
      public remote.RemoteStorage.SampleOrBuilder getSamplesOrBuilder(
          int index) {
        if (samplesBuilder_ == null) {
          return samples_.get(index);  } else {
          return samplesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .remote.Sample samples = 2;</code>
       *
       * <pre>
       * Sorted by time, oldest sample first.
       * </pre>
       */
      public java.util.List<? extends remote.RemoteStorage.SampleOrBuilder> 
           getSamplesOrBuilderList() {
        if (samplesBuilder_ != null) {
          return samplesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(samples_);
        }
      }
      /**
       * <code>repeated .remote.Sample samples = 2;</code>
       *
       * <pre>
       * Sorted by time, oldest sample first.
       * </pre>
       */
      public remote.RemoteStorage.Sample.Builder addSamplesBuilder() {
        return getSamplesFieldBuilder().addBuilder(
            remote.RemoteStorage.Sample.getDefaultInstance());
      }
      /**
       * <code>repeated .remote.Sample samples = 2;</code>
       *
       * <pre>
       * Sorted by time, oldest sample first.
       * </pre>
       */
      public remote.RemoteStorage.Sample.Builder addSamplesBuilder(
          int index) {
        return getSamplesFieldBuilder().addBuilder(
            index, remote.RemoteStorage.Sample.getDefaultInstance());
      }
      /**
       * <code>repeated .remote.Sample samples = 2;</code>
       *
       * <pre>
       * Sorted by time, oldest sample first.
       * </pre>
       */
      public java.util.List<remote.RemoteStorage.Sample.Builder> 
           getSamplesBuilderList() {
        return getSamplesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          remote.RemoteStorage.Sample, remote.RemoteStorage.Sample.Builder, remote.RemoteStorage.SampleOrBuilder> 
          getSamplesFieldBuilder() {
        if (samplesBuilder_ == null) {
          samplesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              remote.RemoteStorage.Sample, remote.RemoteStorage.Sample.Builder, remote.RemoteStorage.SampleOrBuilder>(
                  samples_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          samples_ = null;
        }
        return samplesBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:remote.TimeSeries)
    }

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

    // @@protoc_insertion_point(class_scope:remote.TimeSeries)
  }

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

    // repeated .remote.TimeSeries timeseries = 1;
    /**
     * <code>repeated .remote.TimeSeries timeseries = 1;</code>
     */
    java.util.List<remote.RemoteStorage.TimeSeries> 
        getTimeseriesList();
    /**
     * <code>repeated .remote.TimeSeries timeseries = 1;</code>
     */
    remote.RemoteStorage.TimeSeries getTimeseries(int index);
    /**
     * <code>repeated .remote.TimeSeries timeseries = 1;</code>
     */
    int getTimeseriesCount();
    /**
     * <code>repeated .remote.TimeSeries timeseries = 1;</code>
     */
    java.util.List<? extends remote.RemoteStorage.TimeSeriesOrBuilder> 
        getTimeseriesOrBuilderList();
    /**
     * <code>repeated .remote.TimeSeries timeseries = 1;</code>
     */
    remote.RemoteStorage.TimeSeriesOrBuilder getTimeseriesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code remote.WriteRequest}
   */
  public static final class WriteRequest extends
      com.google.protobuf.GeneratedMessage
      implements WriteRequestOrBuilder {
    // Use WriteRequest.newBuilder() to construct.
    private WriteRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private WriteRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public WriteRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private WriteRequest(
        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: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                timeseries_ = new java.util.ArrayList<remote.RemoteStorage.TimeSeries>();
                mutable_bitField0_ |= 0x00000001;
              }
              timeseries_.add(input.readMessage(remote.RemoteStorage.TimeSeries.PARSER, extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          timeseries_ = java.util.Collections.unmodifiableList(timeseries_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return remote.RemoteStorage.internal_static_remote_WriteRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return remote.RemoteStorage.internal_static_remote_WriteRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              remote.RemoteStorage.WriteRequest.class, remote.RemoteStorage.WriteRequest.Builder.class);
    }

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

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

    // repeated .remote.TimeSeries timeseries = 1;
    public static final int TIMESERIES_FIELD_NUMBER = 1;
    private java.util.List<remote.RemoteStorage.TimeSeries> timeseries_;
    /**
     * <code>repeated .remote.TimeSeries timeseries = 1;</code>
     */
    public java.util.List<remote.RemoteStorage.TimeSeries> getTimeseriesList() {
      return timeseries_;
    }
    /**
     * <code>repeated .remote.TimeSeries timeseries = 1;</code>
     */
    public java.util.List<? extends remote.RemoteStorage.TimeSeriesOrBuilder> 
        getTimeseriesOrBuilderList() {
      return timeseries_;
    }
    /**
     * <code>repeated .remote.TimeSeries timeseries = 1;</code>
     */
    public int getTimeseriesCount() {
      return timeseries_.size();
    }
    /**
     * <code>repeated .remote.TimeSeries timeseries = 1;</code>
     */
    public remote.RemoteStorage.TimeSeries getTimeseries(int index) {
      return timeseries_.get(index);
    }
    /**
     * <code>repeated .remote.TimeSeries timeseries = 1;</code>
     */
    public remote.RemoteStorage.TimeSeriesOrBuilder getTimeseriesOrBuilder(
        int index) {
      return timeseries_.get(index);
    }

    private void initFields() {
      timeseries_ = java.util.Collections.emptyList();
    }
    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();
      for (int i = 0; i < timeseries_.size(); i++) {
        output.writeMessage(1, timeseries_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < timeseries_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, timeseries_.get(i));
      }
      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 remote.RemoteStorage.WriteRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static remote.RemoteStorage.WriteRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static remote.RemoteStorage.WriteRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static remote.RemoteStorage.WriteRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static remote.RemoteStorage.WriteRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static remote.RemoteStorage.WriteRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static remote.RemoteStorage.WriteRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static remote.RemoteStorage.WriteRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static remote.RemoteStorage.WriteRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static remote.RemoteStorage.WriteRequest 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(remote.RemoteStorage.WriteRequest 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 remote.WriteRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements remote.RemoteStorage.WriteRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return remote.RemoteStorage.internal_static_remote_WriteRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return remote.RemoteStorage.internal_static_remote_WriteRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                remote.RemoteStorage.WriteRequest.class, remote.RemoteStorage.WriteRequest.Builder.class);
      }

      // Construct using remote.RemoteStorage.WriteRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        if (timeseriesBuilder_ == null) {
          timeseries_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          timeseriesBuilder_.clear();
        }
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return remote.RemoteStorage.internal_static_remote_WriteRequest_descriptor;
      }

      public remote.RemoteStorage.WriteRequest getDefaultInstanceForType() {
        return remote.RemoteStorage.WriteRequest.getDefaultInstance();
      }

      public remote.RemoteStorage.WriteRequest build() {
        remote.RemoteStorage.WriteRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public remote.RemoteStorage.WriteRequest buildPartial() {
        remote.RemoteStorage.WriteRequest result = new remote.RemoteStorage.WriteRequest(this);
        int from_bitField0_ = bitField0_;
        if (timeseriesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            timeseries_ = java.util.Collections.unmodifiableList(timeseries_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.timeseries_ = timeseries_;
        } else {
          result.timeseries_ = timeseriesBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(remote.RemoteStorage.WriteRequest other) {
        if (other == remote.RemoteStorage.WriteRequest.getDefaultInstance()) return this;
        if (timeseriesBuilder_ == null) {
          if (!other.timeseries_.isEmpty()) {
            if (timeseries_.isEmpty()) {
              timeseries_ = other.timeseries_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTimeseriesIsMutable();
              timeseries_.addAll(other.timeseries_);
            }
            onChanged();
          }
        } else {
          if (!other.timeseries_.isEmpty()) {
            if (timeseriesBuilder_.isEmpty()) {
              timeseriesBuilder_.dispose();
              timeseriesBuilder_ = null;
              timeseries_ = other.timeseries_;
              bitField0_ = (bitField0_ & ~0x00000001);
              timeseriesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getTimeseriesFieldBuilder() : null;
            } else {
              timeseriesBuilder_.addAllMessages(other.timeseries_);
            }
          }
        }
        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 {
        remote.RemoteStorage.WriteRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (remote.RemoteStorage.WriteRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .remote.TimeSeries timeseries = 1;
      private java.util.List<remote.RemoteStorage.TimeSeries> timeseries_ =
        java.util.Collections.emptyList();
      private void ensureTimeseriesIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          timeseries_ = new java.util.ArrayList<remote.RemoteStorage.TimeSeries>(timeseries_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          remote.RemoteStorage.TimeSeries, remote.RemoteStorage.TimeSeries.Builder, remote.RemoteStorage.TimeSeriesOrBuilder> timeseriesBuilder_;

      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public java.util.List<remote.RemoteStorage.TimeSeries> getTimeseriesList() {
        if (timeseriesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(timeseries_);
        } else {
          return timeseriesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public int getTimeseriesCount() {
        if (timeseriesBuilder_ == null) {
          return timeseries_.size();
        } else {
          return timeseriesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public remote.RemoteStorage.TimeSeries getTimeseries(int index) {
        if (timeseriesBuilder_ == null) {
          return timeseries_.get(index);
        } else {
          return timeseriesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public Builder setTimeseries(
          int index, remote.RemoteStorage.TimeSeries value) {
        if (timeseriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTimeseriesIsMutable();
          timeseries_.set(index, value);
          onChanged();
        } else {
          timeseriesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public Builder setTimeseries(
          int index, remote.RemoteStorage.TimeSeries.Builder builderForValue) {
        if (timeseriesBuilder_ == null) {
          ensureTimeseriesIsMutable();
          timeseries_.set(index, builderForValue.build());
          onChanged();
        } else {
          timeseriesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public Builder addTimeseries(remote.RemoteStorage.TimeSeries value) {
        if (timeseriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTimeseriesIsMutable();
          timeseries_.add(value);
          onChanged();
        } else {
          timeseriesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public Builder addTimeseries(
          int index, remote.RemoteStorage.TimeSeries value) {
        if (timeseriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTimeseriesIsMutable();
          timeseries_.add(index, value);
          onChanged();
        } else {
          timeseriesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public Builder addTimeseries(
          remote.RemoteStorage.TimeSeries.Builder builderForValue) {
        if (timeseriesBuilder_ == null) {
          ensureTimeseriesIsMutable();
          timeseries_.add(builderForValue.build());
          onChanged();
        } else {
          timeseriesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public Builder addTimeseries(
          int index, remote.RemoteStorage.TimeSeries.Builder builderForValue) {
        if (timeseriesBuilder_ == null) {
          ensureTimeseriesIsMutable();
          timeseries_.add(index, builderForValue.build());
          onChanged();
        } else {
          timeseriesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public Builder addAllTimeseries(
          java.lang.Iterable<? extends remote.RemoteStorage.TimeSeries> values) {
        if (timeseriesBuilder_ == null) {
          ensureTimeseriesIsMutable();
          super.addAll(values, timeseries_);
          onChanged();
        } else {
          timeseriesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public Builder clearTimeseries() {
        if (timeseriesBuilder_ == null) {
          timeseries_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          timeseriesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public Builder removeTimeseries(int index) {
        if (timeseriesBuilder_ == null) {
          ensureTimeseriesIsMutable();
          timeseries_.remove(index);
          onChanged();
        } else {
          timeseriesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public remote.RemoteStorage.TimeSeries.Builder getTimeseriesBuilder(
          int index) {
        return getTimeseriesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public remote.RemoteStorage.TimeSeriesOrBuilder getTimeseriesOrBuilder(
          int index) {
        if (timeseriesBuilder_ == null) {
          return timeseries_.get(index);  } else {
          return timeseriesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public java.util.List<? extends remote.RemoteStorage.TimeSeriesOrBuilder> 
           getTimeseriesOrBuilderList() {
        if (timeseriesBuilder_ != null) {
          return timeseriesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(timeseries_);
        }
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public remote.RemoteStorage.TimeSeries.Builder addTimeseriesBuilder() {
        return getTimeseriesFieldBuilder().addBuilder(
            remote.RemoteStorage.TimeSeries.getDefaultInstance());
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public remote.RemoteStorage.TimeSeries.Builder addTimeseriesBuilder(
          int index) {
        return getTimeseriesFieldBuilder().addBuilder(
            index, remote.RemoteStorage.TimeSeries.getDefaultInstance());
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public java.util.List<remote.RemoteStorage.TimeSeries.Builder> 
           getTimeseriesBuilderList() {
        return getTimeseriesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          remote.RemoteStorage.TimeSeries, remote.RemoteStorage.TimeSeries.Builder, remote.RemoteStorage.TimeSeriesOrBuilder> 
          getTimeseriesFieldBuilder() {
        if (timeseriesBuilder_ == null) {
          timeseriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              remote.RemoteStorage.TimeSeries, remote.RemoteStorage.TimeSeries.Builder, remote.RemoteStorage.TimeSeriesOrBuilder>(
                  timeseries_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          timeseries_ = null;
        }
        return timeseriesBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:remote.WriteRequest)
    }

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

    // @@protoc_insertion_point(class_scope:remote.WriteRequest)
  }

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

    // repeated .remote.Query queries = 1;
    /**
     * <code>repeated .remote.Query queries = 1;</code>
     */
    java.util.List<remote.RemoteStorage.Query> 
        getQueriesList();
    /**
     * <code>repeated .remote.Query queries = 1;</code>
     */
    remote.RemoteStorage.Query getQueries(int index);
    /**
     * <code>repeated .remote.Query queries = 1;</code>
     */
    int getQueriesCount();
    /**
     * <code>repeated .remote.Query queries = 1;</code>
     */
    java.util.List<? extends remote.RemoteStorage.QueryOrBuilder> 
        getQueriesOrBuilderList();
    /**
     * <code>repeated .remote.Query queries = 1;</code>
     */
    remote.RemoteStorage.QueryOrBuilder getQueriesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code remote.ReadRequest}
   */
  public static final class ReadRequest extends
      com.google.protobuf.GeneratedMessage
      implements ReadRequestOrBuilder {
    // Use ReadRequest.newBuilder() to construct.
    private ReadRequest(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ReadRequest(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public ReadRequest getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ReadRequest(
        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: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                queries_ = new java.util.ArrayList<remote.RemoteStorage.Query>();
                mutable_bitField0_ |= 0x00000001;
              }
              queries_.add(input.readMessage(remote.RemoteStorage.Query.PARSER, extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          queries_ = java.util.Collections.unmodifiableList(queries_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return remote.RemoteStorage.internal_static_remote_ReadRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return remote.RemoteStorage.internal_static_remote_ReadRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              remote.RemoteStorage.ReadRequest.class, remote.RemoteStorage.ReadRequest.Builder.class);
    }

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

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

    // repeated .remote.Query queries = 1;
    public static final int QUERIES_FIELD_NUMBER = 1;
    private java.util.List<remote.RemoteStorage.Query> queries_;
    /**
     * <code>repeated .remote.Query queries = 1;</code>
     */
    public java.util.List<remote.RemoteStorage.Query> getQueriesList() {
      return queries_;
    }
    /**
     * <code>repeated .remote.Query queries = 1;</code>
     */
    public java.util.List<? extends remote.RemoteStorage.QueryOrBuilder> 
        getQueriesOrBuilderList() {
      return queries_;
    }
    /**
     * <code>repeated .remote.Query queries = 1;</code>
     */
    public int getQueriesCount() {
      return queries_.size();
    }
    /**
     * <code>repeated .remote.Query queries = 1;</code>
     */
    public remote.RemoteStorage.Query getQueries(int index) {
      return queries_.get(index);
    }
    /**
     * <code>repeated .remote.Query queries = 1;</code>
     */
    public remote.RemoteStorage.QueryOrBuilder getQueriesOrBuilder(
        int index) {
      return queries_.get(index);
    }

    private void initFields() {
      queries_ = java.util.Collections.emptyList();
    }
    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();
      for (int i = 0; i < queries_.size(); i++) {
        output.writeMessage(1, queries_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < queries_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, queries_.get(i));
      }
      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 remote.RemoteStorage.ReadRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static remote.RemoteStorage.ReadRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static remote.RemoteStorage.ReadRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static remote.RemoteStorage.ReadRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static remote.RemoteStorage.ReadRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static remote.RemoteStorage.ReadRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static remote.RemoteStorage.ReadRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static remote.RemoteStorage.ReadRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static remote.RemoteStorage.ReadRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static remote.RemoteStorage.ReadRequest 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(remote.RemoteStorage.ReadRequest 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 remote.ReadRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements remote.RemoteStorage.ReadRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return remote.RemoteStorage.internal_static_remote_ReadRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return remote.RemoteStorage.internal_static_remote_ReadRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                remote.RemoteStorage.ReadRequest.class, remote.RemoteStorage.ReadRequest.Builder.class);
      }

      // Construct using remote.RemoteStorage.ReadRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        if (queriesBuilder_ == null) {
          queries_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          queriesBuilder_.clear();
        }
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return remote.RemoteStorage.internal_static_remote_ReadRequest_descriptor;
      }

      public remote.RemoteStorage.ReadRequest getDefaultInstanceForType() {
        return remote.RemoteStorage.ReadRequest.getDefaultInstance();
      }

      public remote.RemoteStorage.ReadRequest build() {
        remote.RemoteStorage.ReadRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public remote.RemoteStorage.ReadRequest buildPartial() {
        remote.RemoteStorage.ReadRequest result = new remote.RemoteStorage.ReadRequest(this);
        int from_bitField0_ = bitField0_;
        if (queriesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            queries_ = java.util.Collections.unmodifiableList(queries_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.queries_ = queries_;
        } else {
          result.queries_ = queriesBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(remote.RemoteStorage.ReadRequest other) {
        if (other == remote.RemoteStorage.ReadRequest.getDefaultInstance()) return this;
        if (queriesBuilder_ == null) {
          if (!other.queries_.isEmpty()) {
            if (queries_.isEmpty()) {
              queries_ = other.queries_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureQueriesIsMutable();
              queries_.addAll(other.queries_);
            }
            onChanged();
          }
        } else {
          if (!other.queries_.isEmpty()) {
            if (queriesBuilder_.isEmpty()) {
              queriesBuilder_.dispose();
              queriesBuilder_ = null;
              queries_ = other.queries_;
              bitField0_ = (bitField0_ & ~0x00000001);
              queriesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getQueriesFieldBuilder() : null;
            } else {
              queriesBuilder_.addAllMessages(other.queries_);
            }
          }
        }
        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 {
        remote.RemoteStorage.ReadRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (remote.RemoteStorage.ReadRequest) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .remote.Query queries = 1;
      private java.util.List<remote.RemoteStorage.Query> queries_ =
        java.util.Collections.emptyList();
      private void ensureQueriesIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          queries_ = new java.util.ArrayList<remote.RemoteStorage.Query>(queries_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          remote.RemoteStorage.Query, remote.RemoteStorage.Query.Builder, remote.RemoteStorage.QueryOrBuilder> queriesBuilder_;

      /**
       * <code>repeated .remote.Query queries = 1;</code>
       */
      public java.util.List<remote.RemoteStorage.Query> getQueriesList() {
        if (queriesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(queries_);
        } else {
          return queriesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .remote.Query queries = 1;</code>
       */
      public int getQueriesCount() {
        if (queriesBuilder_ == null) {
          return queries_.size();
        } else {
          return queriesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .remote.Query queries = 1;</code>
       */
      public remote.RemoteStorage.Query getQueries(int index) {
        if (queriesBuilder_ == null) {
          return queries_.get(index);
        } else {
          return queriesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .remote.Query queries = 1;</code>
       */
      public Builder setQueries(
          int index, remote.RemoteStorage.Query value) {
        if (queriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureQueriesIsMutable();
          queries_.set(index, value);
          onChanged();
        } else {
          queriesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .remote.Query queries = 1;</code>
       */
      public Builder setQueries(
          int index, remote.RemoteStorage.Query.Builder builderForValue) {
        if (queriesBuilder_ == null) {
          ensureQueriesIsMutable();
          queries_.set(index, builderForValue.build());
          onChanged();
        } else {
          queriesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .remote.Query queries = 1;</code>
       */
      public Builder addQueries(remote.RemoteStorage.Query value) {
        if (queriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureQueriesIsMutable();
          queries_.add(value);
          onChanged();
        } else {
          queriesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .remote.Query queries = 1;</code>
       */
      public Builder addQueries(
          int index, remote.RemoteStorage.Query value) {
        if (queriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureQueriesIsMutable();
          queries_.add(index, value);
          onChanged();
        } else {
          queriesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .remote.Query queries = 1;</code>
       */
      public Builder addQueries(
          remote.RemoteStorage.Query.Builder builderForValue) {
        if (queriesBuilder_ == null) {
          ensureQueriesIsMutable();
          queries_.add(builderForValue.build());
          onChanged();
        } else {
          queriesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .remote.Query queries = 1;</code>
       */
      public Builder addQueries(
          int index, remote.RemoteStorage.Query.Builder builderForValue) {
        if (queriesBuilder_ == null) {
          ensureQueriesIsMutable();
          queries_.add(index, builderForValue.build());
          onChanged();
        } else {
          queriesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .remote.Query queries = 1;</code>
       */
      public Builder addAllQueries(
          java.lang.Iterable<? extends remote.RemoteStorage.Query> values) {
        if (queriesBuilder_ == null) {
          ensureQueriesIsMutable();
          super.addAll(values, queries_);
          onChanged();
        } else {
          queriesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .remote.Query queries = 1;</code>
       */
      public Builder clearQueries() {
        if (queriesBuilder_ == null) {
          queries_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          queriesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .remote.Query queries = 1;</code>
       */
      public Builder removeQueries(int index) {
        if (queriesBuilder_ == null) {
          ensureQueriesIsMutable();
          queries_.remove(index);
          onChanged();
        } else {
          queriesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .remote.Query queries = 1;</code>
       */
      public remote.RemoteStorage.Query.Builder getQueriesBuilder(
          int index) {
        return getQueriesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .remote.Query queries = 1;</code>
       */
      public remote.RemoteStorage.QueryOrBuilder getQueriesOrBuilder(
          int index) {
        if (queriesBuilder_ == null) {
          return queries_.get(index);  } else {
          return queriesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .remote.Query queries = 1;</code>
       */
      public java.util.List<? extends remote.RemoteStorage.QueryOrBuilder> 
           getQueriesOrBuilderList() {
        if (queriesBuilder_ != null) {
          return queriesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(queries_);
        }
      }
      /**
       * <code>repeated .remote.Query queries = 1;</code>
       */
      public remote.RemoteStorage.Query.Builder addQueriesBuilder() {
        return getQueriesFieldBuilder().addBuilder(
            remote.RemoteStorage.Query.getDefaultInstance());
      }
      /**
       * <code>repeated .remote.Query queries = 1;</code>
       */
      public remote.RemoteStorage.Query.Builder addQueriesBuilder(
          int index) {
        return getQueriesFieldBuilder().addBuilder(
            index, remote.RemoteStorage.Query.getDefaultInstance());
      }
      /**
       * <code>repeated .remote.Query queries = 1;</code>
       */
      public java.util.List<remote.RemoteStorage.Query.Builder> 
           getQueriesBuilderList() {
        return getQueriesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          remote.RemoteStorage.Query, remote.RemoteStorage.Query.Builder, remote.RemoteStorage.QueryOrBuilder> 
          getQueriesFieldBuilder() {
        if (queriesBuilder_ == null) {
          queriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              remote.RemoteStorage.Query, remote.RemoteStorage.Query.Builder, remote.RemoteStorage.QueryOrBuilder>(
                  queries_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          queries_ = null;
        }
        return queriesBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:remote.ReadRequest)
    }

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

    // @@protoc_insertion_point(class_scope:remote.ReadRequest)
  }

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

    // repeated .remote.QueryResult results = 1;
    /**
     * <code>repeated .remote.QueryResult results = 1;</code>
     *
     * <pre>
     * In same order as the request's queries.
     * </pre>
     */
    java.util.List<remote.RemoteStorage.QueryResult> 
        getResultsList();
    /**
     * <code>repeated .remote.QueryResult results = 1;</code>
     *
     * <pre>
     * In same order as the request's queries.
     * </pre>
     */
    remote.RemoteStorage.QueryResult getResults(int index);
    /**
     * <code>repeated .remote.QueryResult results = 1;</code>
     *
     * <pre>
     * In same order as the request's queries.
     * </pre>
     */
    int getResultsCount();
    /**
     * <code>repeated .remote.QueryResult results = 1;</code>
     *
     * <pre>
     * In same order as the request's queries.
     * </pre>
     */
    java.util.List<? extends remote.RemoteStorage.QueryResultOrBuilder> 
        getResultsOrBuilderList();
    /**
     * <code>repeated .remote.QueryResult results = 1;</code>
     *
     * <pre>
     * In same order as the request's queries.
     * </pre>
     */
    remote.RemoteStorage.QueryResultOrBuilder getResultsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code remote.ReadResponse}
   */
  public static final class ReadResponse extends
      com.google.protobuf.GeneratedMessage
      implements ReadResponseOrBuilder {
    // Use ReadResponse.newBuilder() to construct.
    private ReadResponse(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private ReadResponse(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public ReadResponse getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private ReadResponse(
        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: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                results_ = new java.util.ArrayList<remote.RemoteStorage.QueryResult>();
                mutable_bitField0_ |= 0x00000001;
              }
              results_.add(input.readMessage(remote.RemoteStorage.QueryResult.PARSER, extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          results_ = java.util.Collections.unmodifiableList(results_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return remote.RemoteStorage.internal_static_remote_ReadResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return remote.RemoteStorage.internal_static_remote_ReadResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              remote.RemoteStorage.ReadResponse.class, remote.RemoteStorage.ReadResponse.Builder.class);
    }

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

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

    // repeated .remote.QueryResult results = 1;
    public static final int RESULTS_FIELD_NUMBER = 1;
    private java.util.List<remote.RemoteStorage.QueryResult> results_;
    /**
     * <code>repeated .remote.QueryResult results = 1;</code>
     *
     * <pre>
     * In same order as the request's queries.
     * </pre>
     */
    public java.util.List<remote.RemoteStorage.QueryResult> getResultsList() {
      return results_;
    }
    /**
     * <code>repeated .remote.QueryResult results = 1;</code>
     *
     * <pre>
     * In same order as the request's queries.
     * </pre>
     */
    public java.util.List<? extends remote.RemoteStorage.QueryResultOrBuilder> 
        getResultsOrBuilderList() {
      return results_;
    }
    /**
     * <code>repeated .remote.QueryResult results = 1;</code>
     *
     * <pre>
     * In same order as the request's queries.
     * </pre>
     */
    public int getResultsCount() {
      return results_.size();
    }
    /**
     * <code>repeated .remote.QueryResult results = 1;</code>
     *
     * <pre>
     * In same order as the request's queries.
     * </pre>
     */
    public remote.RemoteStorage.QueryResult getResults(int index) {
      return results_.get(index);
    }
    /**
     * <code>repeated .remote.QueryResult results = 1;</code>
     *
     * <pre>
     * In same order as the request's queries.
     * </pre>
     */
    public remote.RemoteStorage.QueryResultOrBuilder getResultsOrBuilder(
        int index) {
      return results_.get(index);
    }

    private void initFields() {
      results_ = java.util.Collections.emptyList();
    }
    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();
      for (int i = 0; i < results_.size(); i++) {
        output.writeMessage(1, results_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < results_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, results_.get(i));
      }
      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 remote.RemoteStorage.ReadResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static remote.RemoteStorage.ReadResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static remote.RemoteStorage.ReadResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static remote.RemoteStorage.ReadResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static remote.RemoteStorage.ReadResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static remote.RemoteStorage.ReadResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static remote.RemoteStorage.ReadResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static remote.RemoteStorage.ReadResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static remote.RemoteStorage.ReadResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static remote.RemoteStorage.ReadResponse 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(remote.RemoteStorage.ReadResponse 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 remote.ReadResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements remote.RemoteStorage.ReadResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return remote.RemoteStorage.internal_static_remote_ReadResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return remote.RemoteStorage.internal_static_remote_ReadResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                remote.RemoteStorage.ReadResponse.class, remote.RemoteStorage.ReadResponse.Builder.class);
      }

      // Construct using remote.RemoteStorage.ReadResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        if (resultsBuilder_ == null) {
          results_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          resultsBuilder_.clear();
        }
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return remote.RemoteStorage.internal_static_remote_ReadResponse_descriptor;
      }

      public remote.RemoteStorage.ReadResponse getDefaultInstanceForType() {
        return remote.RemoteStorage.ReadResponse.getDefaultInstance();
      }

      public remote.RemoteStorage.ReadResponse build() {
        remote.RemoteStorage.ReadResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public remote.RemoteStorage.ReadResponse buildPartial() {
        remote.RemoteStorage.ReadResponse result = new remote.RemoteStorage.ReadResponse(this);
        int from_bitField0_ = bitField0_;
        if (resultsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            results_ = java.util.Collections.unmodifiableList(results_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.results_ = results_;
        } else {
          result.results_ = resultsBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(remote.RemoteStorage.ReadResponse other) {
        if (other == remote.RemoteStorage.ReadResponse.getDefaultInstance()) return this;
        if (resultsBuilder_ == null) {
          if (!other.results_.isEmpty()) {
            if (results_.isEmpty()) {
              results_ = other.results_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureResultsIsMutable();
              results_.addAll(other.results_);
            }
            onChanged();
          }
        } else {
          if (!other.results_.isEmpty()) {
            if (resultsBuilder_.isEmpty()) {
              resultsBuilder_.dispose();
              resultsBuilder_ = null;
              results_ = other.results_;
              bitField0_ = (bitField0_ & ~0x00000001);
              resultsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getResultsFieldBuilder() : null;
            } else {
              resultsBuilder_.addAllMessages(other.results_);
            }
          }
        }
        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 {
        remote.RemoteStorage.ReadResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (remote.RemoteStorage.ReadResponse) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .remote.QueryResult results = 1;
      private java.util.List<remote.RemoteStorage.QueryResult> results_ =
        java.util.Collections.emptyList();
      private void ensureResultsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          results_ = new java.util.ArrayList<remote.RemoteStorage.QueryResult>(results_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          remote.RemoteStorage.QueryResult, remote.RemoteStorage.QueryResult.Builder, remote.RemoteStorage.QueryResultOrBuilder> resultsBuilder_;

      /**
       * <code>repeated .remote.QueryResult results = 1;</code>
       *
       * <pre>
       * In same order as the request's queries.
       * </pre>
       */
      public java.util.List<remote.RemoteStorage.QueryResult> getResultsList() {
        if (resultsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(results_);
        } else {
          return resultsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .remote.QueryResult results = 1;</code>
       *
       * <pre>
       * In same order as the request's queries.
       * </pre>
       */
      public int getResultsCount() {
        if (resultsBuilder_ == null) {
          return results_.size();
        } else {
          return resultsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .remote.QueryResult results = 1;</code>
       *
       * <pre>
       * In same order as the request's queries.
       * </pre>
       */
      public remote.RemoteStorage.QueryResult getResults(int index) {
        if (resultsBuilder_ == null) {
          return results_.get(index);
        } else {
          return resultsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .remote.QueryResult results = 1;</code>
       *
       * <pre>
       * In same order as the request's queries.
       * </pre>
       */
      public Builder setResults(
          int index, remote.RemoteStorage.QueryResult value) {
        if (resultsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResultsIsMutable();
          results_.set(index, value);
          onChanged();
        } else {
          resultsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .remote.QueryResult results = 1;</code>
       *
       * <pre>
       * In same order as the request's queries.
       * </pre>
       */
      public Builder setResults(
          int index, remote.RemoteStorage.QueryResult.Builder builderForValue) {
        if (resultsBuilder_ == null) {
          ensureResultsIsMutable();
          results_.set(index, builderForValue.build());
          onChanged();
        } else {
          resultsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .remote.QueryResult results = 1;</code>
       *
       * <pre>
       * In same order as the request's queries.
       * </pre>
       */
      public Builder addResults(remote.RemoteStorage.QueryResult value) {
        if (resultsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResultsIsMutable();
          results_.add(value);
          onChanged();
        } else {
          resultsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .remote.QueryResult results = 1;</code>
       *
       * <pre>
       * In same order as the request's queries.
       * </pre>
       */
      public Builder addResults(
          int index, remote.RemoteStorage.QueryResult value) {
        if (resultsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResultsIsMutable();
          results_.add(index, value);
          onChanged();
        } else {
          resultsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .remote.QueryResult results = 1;</code>
       *
       * <pre>
       * In same order as the request's queries.
       * </pre>
       */
      public Builder addResults(
          remote.RemoteStorage.QueryResult.Builder builderForValue) {
        if (resultsBuilder_ == null) {
          ensureResultsIsMutable();
          results_.add(builderForValue.build());
          onChanged();
        } else {
          resultsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .remote.QueryResult results = 1;</code>
       *
       * <pre>
       * In same order as the request's queries.
       * </pre>
       */
      public Builder addResults(
          int index, remote.RemoteStorage.QueryResult.Builder builderForValue) {
        if (resultsBuilder_ == null) {
          ensureResultsIsMutable();
          results_.add(index, builderForValue.build());
          onChanged();
        } else {
          resultsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .remote.QueryResult results = 1;</code>
       *
       * <pre>
       * In same order as the request's queries.
       * </pre>
       */
      public Builder addAllResults(
          java.lang.Iterable<? extends remote.RemoteStorage.QueryResult> values) {
        if (resultsBuilder_ == null) {
          ensureResultsIsMutable();
          super.addAll(values, results_);
          onChanged();
        } else {
          resultsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .remote.QueryResult results = 1;</code>
       *
       * <pre>
       * In same order as the request's queries.
       * </pre>
       */
      public Builder clearResults() {
        if (resultsBuilder_ == null) {
          results_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          resultsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .remote.QueryResult results = 1;</code>
       *
       * <pre>
       * In same order as the request's queries.
       * </pre>
       */
      public Builder removeResults(int index) {
        if (resultsBuilder_ == null) {
          ensureResultsIsMutable();
          results_.remove(index);
          onChanged();
        } else {
          resultsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .remote.QueryResult results = 1;</code>
       *
       * <pre>
       * In same order as the request's queries.
       * </pre>
       */
      public remote.RemoteStorage.QueryResult.Builder getResultsBuilder(
          int index) {
        return getResultsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .remote.QueryResult results = 1;</code>
       *
       * <pre>
       * In same order as the request's queries.
       * </pre>
       */
      public remote.RemoteStorage.QueryResultOrBuilder getResultsOrBuilder(
          int index) {
        if (resultsBuilder_ == null) {
          return results_.get(index);  } else {
          return resultsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .remote.QueryResult results = 1;</code>
       *
       * <pre>
       * In same order as the request's queries.
       * </pre>
       */
      public java.util.List<? extends remote.RemoteStorage.QueryResultOrBuilder> 
           getResultsOrBuilderList() {
        if (resultsBuilder_ != null) {
          return resultsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(results_);
        }
      }
      /**
       * <code>repeated .remote.QueryResult results = 1;</code>
       *
       * <pre>
       * In same order as the request's queries.
       * </pre>
       */
      public remote.RemoteStorage.QueryResult.Builder addResultsBuilder() {
        return getResultsFieldBuilder().addBuilder(
            remote.RemoteStorage.QueryResult.getDefaultInstance());
      }
      /**
       * <code>repeated .remote.QueryResult results = 1;</code>
       *
       * <pre>
       * In same order as the request's queries.
       * </pre>
       */
      public remote.RemoteStorage.QueryResult.Builder addResultsBuilder(
          int index) {
        return getResultsFieldBuilder().addBuilder(
            index, remote.RemoteStorage.QueryResult.getDefaultInstance());
      }
      /**
       * <code>repeated .remote.QueryResult results = 1;</code>
       *
       * <pre>
       * In same order as the request's queries.
       * </pre>
       */
      public java.util.List<remote.RemoteStorage.QueryResult.Builder> 
           getResultsBuilderList() {
        return getResultsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          remote.RemoteStorage.QueryResult, remote.RemoteStorage.QueryResult.Builder, remote.RemoteStorage.QueryResultOrBuilder> 
          getResultsFieldBuilder() {
        if (resultsBuilder_ == null) {
          resultsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              remote.RemoteStorage.QueryResult, remote.RemoteStorage.QueryResult.Builder, remote.RemoteStorage.QueryResultOrBuilder>(
                  results_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          results_ = null;
        }
        return resultsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:remote.ReadResponse)
    }

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

    // @@protoc_insertion_point(class_scope:remote.ReadResponse)
  }

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

    // optional int64 start_timestamp_ms = 1;
    /**
     * <code>optional int64 start_timestamp_ms = 1;</code>
     */
    boolean hasStartTimestampMs();
    /**
     * <code>optional int64 start_timestamp_ms = 1;</code>
     */
    long getStartTimestampMs();

    // optional int64 end_timestamp_ms = 2;
    /**
     * <code>optional int64 end_timestamp_ms = 2;</code>
     */
    boolean hasEndTimestampMs();
    /**
     * <code>optional int64 end_timestamp_ms = 2;</code>
     */
    long getEndTimestampMs();

    // repeated .remote.LabelMatcher matchers = 3;
    /**
     * <code>repeated .remote.LabelMatcher matchers = 3;</code>
     */
    java.util.List<remote.RemoteStorage.LabelMatcher> 
        getMatchersList();
    /**
     * <code>repeated .remote.LabelMatcher matchers = 3;</code>
     */
    remote.RemoteStorage.LabelMatcher getMatchers(int index);
    /**
     * <code>repeated .remote.LabelMatcher matchers = 3;</code>
     */
    int getMatchersCount();
    /**
     * <code>repeated .remote.LabelMatcher matchers = 3;</code>
     */
    java.util.List<? extends remote.RemoteStorage.LabelMatcherOrBuilder> 
        getMatchersOrBuilderList();
    /**
     * <code>repeated .remote.LabelMatcher matchers = 3;</code>
     */
    remote.RemoteStorage.LabelMatcherOrBuilder getMatchersOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code remote.Query}
   */
  public static final class Query extends
      com.google.protobuf.GeneratedMessage
      implements QueryOrBuilder {
    // Use Query.newBuilder() to construct.
    private Query(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Query(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public Query getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Query(
        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;
              startTimestampMs_ = input.readInt64();
              break;
            }
            case 16: {
              bitField0_ |= 0x00000002;
              endTimestampMs_ = input.readInt64();
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                matchers_ = new java.util.ArrayList<remote.RemoteStorage.LabelMatcher>();
                mutable_bitField0_ |= 0x00000004;
              }
              matchers_.add(input.readMessage(remote.RemoteStorage.LabelMatcher.PARSER, extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          matchers_ = java.util.Collections.unmodifiableList(matchers_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return remote.RemoteStorage.internal_static_remote_Query_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return remote.RemoteStorage.internal_static_remote_Query_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              remote.RemoteStorage.Query.class, remote.RemoteStorage.Query.Builder.class);
    }

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

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

    private int bitField0_;
    // optional int64 start_timestamp_ms = 1;
    public static final int START_TIMESTAMP_MS_FIELD_NUMBER = 1;
    private long startTimestampMs_;
    /**
     * <code>optional int64 start_timestamp_ms = 1;</code>
     */
    public boolean hasStartTimestampMs() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional int64 start_timestamp_ms = 1;</code>
     */
    public long getStartTimestampMs() {
      return startTimestampMs_;
    }

    // optional int64 end_timestamp_ms = 2;
    public static final int END_TIMESTAMP_MS_FIELD_NUMBER = 2;
    private long endTimestampMs_;
    /**
     * <code>optional int64 end_timestamp_ms = 2;</code>
     */
    public boolean hasEndTimestampMs() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional int64 end_timestamp_ms = 2;</code>
     */
    public long getEndTimestampMs() {
      return endTimestampMs_;
    }

    // repeated .remote.LabelMatcher matchers = 3;
    public static final int MATCHERS_FIELD_NUMBER = 3;
    private java.util.List<remote.RemoteStorage.LabelMatcher> matchers_;
    /**
     * <code>repeated .remote.LabelMatcher matchers = 3;</code>
     */
    public java.util.List<remote.RemoteStorage.LabelMatcher> getMatchersList() {
      return matchers_;
    }
    /**
     * <code>repeated .remote.LabelMatcher matchers = 3;</code>
     */
    public java.util.List<? extends remote.RemoteStorage.LabelMatcherOrBuilder> 
        getMatchersOrBuilderList() {
      return matchers_;
    }
    /**
     * <code>repeated .remote.LabelMatcher matchers = 3;</code>
     */
    public int getMatchersCount() {
      return matchers_.size();
    }
    /**
     * <code>repeated .remote.LabelMatcher matchers = 3;</code>
     */
    public remote.RemoteStorage.LabelMatcher getMatchers(int index) {
      return matchers_.get(index);
    }
    /**
     * <code>repeated .remote.LabelMatcher matchers = 3;</code>
     */
    public remote.RemoteStorage.LabelMatcherOrBuilder getMatchersOrBuilder(
        int index) {
      return matchers_.get(index);
    }

    private void initFields() {
      startTimestampMs_ = 0L;
      endTimestampMs_ = 0L;
      matchers_ = java.util.Collections.emptyList();
    }
    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.writeInt64(1, startTimestampMs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeInt64(2, endTimestampMs_);
      }
      for (int i = 0; i < matchers_.size(); i++) {
        output.writeMessage(3, matchers_.get(i));
      }
      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
          .computeInt64Size(1, startTimestampMs_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, endTimestampMs_);
      }
      for (int i = 0; i < matchers_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, matchers_.get(i));
      }
      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 remote.RemoteStorage.Query parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static remote.RemoteStorage.Query parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static remote.RemoteStorage.Query parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static remote.RemoteStorage.Query parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static remote.RemoteStorage.Query parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static remote.RemoteStorage.Query parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static remote.RemoteStorage.Query parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static remote.RemoteStorage.Query parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static remote.RemoteStorage.Query parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static remote.RemoteStorage.Query 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(remote.RemoteStorage.Query 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 remote.Query}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements remote.RemoteStorage.QueryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return remote.RemoteStorage.internal_static_remote_Query_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return remote.RemoteStorage.internal_static_remote_Query_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                remote.RemoteStorage.Query.class, remote.RemoteStorage.Query.Builder.class);
      }

      // Construct using remote.RemoteStorage.Query.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        startTimestampMs_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000001);
        endTimestampMs_ = 0L;
        bitField0_ = (bitField0_ & ~0x00000002);
        if (matchersBuilder_ == null) {
          matchers_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          matchersBuilder_.clear();
        }
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return remote.RemoteStorage.internal_static_remote_Query_descriptor;
      }

      public remote.RemoteStorage.Query getDefaultInstanceForType() {
        return remote.RemoteStorage.Query.getDefaultInstance();
      }

      public remote.RemoteStorage.Query build() {
        remote.RemoteStorage.Query result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public remote.RemoteStorage.Query buildPartial() {
        remote.RemoteStorage.Query result = new remote.RemoteStorage.Query(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.startTimestampMs_ = startTimestampMs_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.endTimestampMs_ = endTimestampMs_;
        if (matchersBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            matchers_ = java.util.Collections.unmodifiableList(matchers_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.matchers_ = matchers_;
        } else {
          result.matchers_ = matchersBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(remote.RemoteStorage.Query other) {
        if (other == remote.RemoteStorage.Query.getDefaultInstance()) return this;
        if (other.hasStartTimestampMs()) {
          setStartTimestampMs(other.getStartTimestampMs());
        }
        if (other.hasEndTimestampMs()) {
          setEndTimestampMs(other.getEndTimestampMs());
        }
        if (matchersBuilder_ == null) {
          if (!other.matchers_.isEmpty()) {
            if (matchers_.isEmpty()) {
              matchers_ = other.matchers_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureMatchersIsMutable();
              matchers_.addAll(other.matchers_);
            }
            onChanged();
          }
        } else {
          if (!other.matchers_.isEmpty()) {
            if (matchersBuilder_.isEmpty()) {
              matchersBuilder_.dispose();
              matchersBuilder_ = null;
              matchers_ = other.matchers_;
              bitField0_ = (bitField0_ & ~0x00000004);
              matchersBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getMatchersFieldBuilder() : null;
            } else {
              matchersBuilder_.addAllMessages(other.matchers_);
            }
          }
        }
        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 {
        remote.RemoteStorage.Query parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (remote.RemoteStorage.Query) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional int64 start_timestamp_ms = 1;
      private long startTimestampMs_ ;
      /**
       * <code>optional int64 start_timestamp_ms = 1;</code>
       */
      public boolean hasStartTimestampMs() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional int64 start_timestamp_ms = 1;</code>
       */
      public long getStartTimestampMs() {
        return startTimestampMs_;
      }
      /**
       * <code>optional int64 start_timestamp_ms = 1;</code>
       */
      public Builder setStartTimestampMs(long value) {
        bitField0_ |= 0x00000001;
        startTimestampMs_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 start_timestamp_ms = 1;</code>
       */
      public Builder clearStartTimestampMs() {
        bitField0_ = (bitField0_ & ~0x00000001);
        startTimestampMs_ = 0L;
        onChanged();
        return this;
      }

      // optional int64 end_timestamp_ms = 2;
      private long endTimestampMs_ ;
      /**
       * <code>optional int64 end_timestamp_ms = 2;</code>
       */
      public boolean hasEndTimestampMs() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional int64 end_timestamp_ms = 2;</code>
       */
      public long getEndTimestampMs() {
        return endTimestampMs_;
      }
      /**
       * <code>optional int64 end_timestamp_ms = 2;</code>
       */
      public Builder setEndTimestampMs(long value) {
        bitField0_ |= 0x00000002;
        endTimestampMs_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int64 end_timestamp_ms = 2;</code>
       */
      public Builder clearEndTimestampMs() {
        bitField0_ = (bitField0_ & ~0x00000002);
        endTimestampMs_ = 0L;
        onChanged();
        return this;
      }

      // repeated .remote.LabelMatcher matchers = 3;
      private java.util.List<remote.RemoteStorage.LabelMatcher> matchers_ =
        java.util.Collections.emptyList();
      private void ensureMatchersIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          matchers_ = new java.util.ArrayList<remote.RemoteStorage.LabelMatcher>(matchers_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          remote.RemoteStorage.LabelMatcher, remote.RemoteStorage.LabelMatcher.Builder, remote.RemoteStorage.LabelMatcherOrBuilder> matchersBuilder_;

      /**
       * <code>repeated .remote.LabelMatcher matchers = 3;</code>
       */
      public java.util.List<remote.RemoteStorage.LabelMatcher> getMatchersList() {
        if (matchersBuilder_ == null) {
          return java.util.Collections.unmodifiableList(matchers_);
        } else {
          return matchersBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .remote.LabelMatcher matchers = 3;</code>
       */
      public int getMatchersCount() {
        if (matchersBuilder_ == null) {
          return matchers_.size();
        } else {
          return matchersBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .remote.LabelMatcher matchers = 3;</code>
       */
      public remote.RemoteStorage.LabelMatcher getMatchers(int index) {
        if (matchersBuilder_ == null) {
          return matchers_.get(index);
        } else {
          return matchersBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .remote.LabelMatcher matchers = 3;</code>
       */
      public Builder setMatchers(
          int index, remote.RemoteStorage.LabelMatcher value) {
        if (matchersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchersIsMutable();
          matchers_.set(index, value);
          onChanged();
        } else {
          matchersBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .remote.LabelMatcher matchers = 3;</code>
       */
      public Builder setMatchers(
          int index, remote.RemoteStorage.LabelMatcher.Builder builderForValue) {
        if (matchersBuilder_ == null) {
          ensureMatchersIsMutable();
          matchers_.set(index, builderForValue.build());
          onChanged();
        } else {
          matchersBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .remote.LabelMatcher matchers = 3;</code>
       */
      public Builder addMatchers(remote.RemoteStorage.LabelMatcher value) {
        if (matchersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchersIsMutable();
          matchers_.add(value);
          onChanged();
        } else {
          matchersBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .remote.LabelMatcher matchers = 3;</code>
       */
      public Builder addMatchers(
          int index, remote.RemoteStorage.LabelMatcher value) {
        if (matchersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatchersIsMutable();
          matchers_.add(index, value);
          onChanged();
        } else {
          matchersBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .remote.LabelMatcher matchers = 3;</code>
       */
      public Builder addMatchers(
          remote.RemoteStorage.LabelMatcher.Builder builderForValue) {
        if (matchersBuilder_ == null) {
          ensureMatchersIsMutable();
          matchers_.add(builderForValue.build());
          onChanged();
        } else {
          matchersBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .remote.LabelMatcher matchers = 3;</code>
       */
      public Builder addMatchers(
          int index, remote.RemoteStorage.LabelMatcher.Builder builderForValue) {
        if (matchersBuilder_ == null) {
          ensureMatchersIsMutable();
          matchers_.add(index, builderForValue.build());
          onChanged();
        } else {
          matchersBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .remote.LabelMatcher matchers = 3;</code>
       */
      public Builder addAllMatchers(
          java.lang.Iterable<? extends remote.RemoteStorage.LabelMatcher> values) {
        if (matchersBuilder_ == null) {
          ensureMatchersIsMutable();
          super.addAll(values, matchers_);
          onChanged();
        } else {
          matchersBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .remote.LabelMatcher matchers = 3;</code>
       */
      public Builder clearMatchers() {
        if (matchersBuilder_ == null) {
          matchers_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          matchersBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .remote.LabelMatcher matchers = 3;</code>
       */
      public Builder removeMatchers(int index) {
        if (matchersBuilder_ == null) {
          ensureMatchersIsMutable();
          matchers_.remove(index);
          onChanged();
        } else {
          matchersBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .remote.LabelMatcher matchers = 3;</code>
       */
      public remote.RemoteStorage.LabelMatcher.Builder getMatchersBuilder(
          int index) {
        return getMatchersFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .remote.LabelMatcher matchers = 3;</code>
       */
      public remote.RemoteStorage.LabelMatcherOrBuilder getMatchersOrBuilder(
          int index) {
        if (matchersBuilder_ == null) {
          return matchers_.get(index);  } else {
          return matchersBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .remote.LabelMatcher matchers = 3;</code>
       */
      public java.util.List<? extends remote.RemoteStorage.LabelMatcherOrBuilder> 
           getMatchersOrBuilderList() {
        if (matchersBuilder_ != null) {
          return matchersBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(matchers_);
        }
      }
      /**
       * <code>repeated .remote.LabelMatcher matchers = 3;</code>
       */
      public remote.RemoteStorage.LabelMatcher.Builder addMatchersBuilder() {
        return getMatchersFieldBuilder().addBuilder(
            remote.RemoteStorage.LabelMatcher.getDefaultInstance());
      }
      /**
       * <code>repeated .remote.LabelMatcher matchers = 3;</code>
       */
      public remote.RemoteStorage.LabelMatcher.Builder addMatchersBuilder(
          int index) {
        return getMatchersFieldBuilder().addBuilder(
            index, remote.RemoteStorage.LabelMatcher.getDefaultInstance());
      }
      /**
       * <code>repeated .remote.LabelMatcher matchers = 3;</code>
       */
      public java.util.List<remote.RemoteStorage.LabelMatcher.Builder> 
           getMatchersBuilderList() {
        return getMatchersFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          remote.RemoteStorage.LabelMatcher, remote.RemoteStorage.LabelMatcher.Builder, remote.RemoteStorage.LabelMatcherOrBuilder> 
          getMatchersFieldBuilder() {
        if (matchersBuilder_ == null) {
          matchersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              remote.RemoteStorage.LabelMatcher, remote.RemoteStorage.LabelMatcher.Builder, remote.RemoteStorage.LabelMatcherOrBuilder>(
                  matchers_,
                  ((bitField0_ & 0x00000004) == 0x00000004),
                  getParentForChildren(),
                  isClean());
          matchers_ = null;
        }
        return matchersBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:remote.Query)
    }

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

    // @@protoc_insertion_point(class_scope:remote.Query)
  }

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

    // optional .remote.MatchType type = 1;
    /**
     * <code>optional .remote.MatchType type = 1;</code>
     */
    boolean hasType();
    /**
     * <code>optional .remote.MatchType type = 1;</code>
     */
    remote.RemoteStorage.MatchType getType();

    // optional string name = 2;
    /**
     * <code>optional string name = 2;</code>
     */
    boolean hasName();
    /**
     * <code>optional string name = 2;</code>
     */
    java.lang.String getName();
    /**
     * <code>optional string name = 2;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();

    // optional string value = 3;
    /**
     * <code>optional string value = 3;</code>
     */
    boolean hasValue();
    /**
     * <code>optional string value = 3;</code>
     */
    java.lang.String getValue();
    /**
     * <code>optional string value = 3;</code>
     */
    com.google.protobuf.ByteString
        getValueBytes();
  }
  /**
   * Protobuf type {@code remote.LabelMatcher}
   */
  public static final class LabelMatcher extends
      com.google.protobuf.GeneratedMessage
      implements LabelMatcherOrBuilder {
    // Use LabelMatcher.newBuilder() to construct.
    private LabelMatcher(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private LabelMatcher(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public LabelMatcher getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private LabelMatcher(
        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();
              remote.RemoteStorage.MatchType value = remote.RemoteStorage.MatchType.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(1, rawValue);
              } else {
                bitField0_ |= 0x00000001;
                type_ = value;
              }
              break;
            }
            case 18: {
              bitField0_ |= 0x00000002;
              name_ = input.readBytes();
              break;
            }
            case 26: {
              bitField0_ |= 0x00000004;
              value_ = 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 remote.RemoteStorage.internal_static_remote_LabelMatcher_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return remote.RemoteStorage.internal_static_remote_LabelMatcher_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              remote.RemoteStorage.LabelMatcher.class, remote.RemoteStorage.LabelMatcher.Builder.class);
    }

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

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

    private int bitField0_;
    // optional .remote.MatchType type = 1;
    public static final int TYPE_FIELD_NUMBER = 1;
    private remote.RemoteStorage.MatchType type_;
    /**
     * <code>optional .remote.MatchType type = 1;</code>
     */
    public boolean hasType() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional .remote.MatchType type = 1;</code>
     */
    public remote.RemoteStorage.MatchType getType() {
      return type_;
    }

    // optional string name = 2;
    public static final int NAME_FIELD_NUMBER = 2;
    private java.lang.Object name_;
    /**
     * <code>optional string name = 2;</code>
     */
    public boolean hasName() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional string name = 2;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      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()) {
          name_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string name = 2;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    // optional string value = 3;
    public static final int VALUE_FIELD_NUMBER = 3;
    private java.lang.Object value_;
    /**
     * <code>optional string value = 3;</code>
     */
    public boolean hasValue() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional string value = 3;</code>
     */
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      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()) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * <code>optional string value = 3;</code>
     */
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private void initFields() {
      type_ = remote.RemoteStorage.MatchType.EQUAL;
      name_ = "";
      value_ = "";
    }
    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.writeBytes(2, getNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeBytes(3, getValueBytes());
      }
      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
          .computeBytesSize(2, getNameBytes());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, getValueBytes());
      }
      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 remote.RemoteStorage.LabelMatcher parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static remote.RemoteStorage.LabelMatcher parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static remote.RemoteStorage.LabelMatcher parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static remote.RemoteStorage.LabelMatcher parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static remote.RemoteStorage.LabelMatcher parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static remote.RemoteStorage.LabelMatcher parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static remote.RemoteStorage.LabelMatcher parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static remote.RemoteStorage.LabelMatcher parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static remote.RemoteStorage.LabelMatcher parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static remote.RemoteStorage.LabelMatcher 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(remote.RemoteStorage.LabelMatcher 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 remote.LabelMatcher}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements remote.RemoteStorage.LabelMatcherOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return remote.RemoteStorage.internal_static_remote_LabelMatcher_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return remote.RemoteStorage.internal_static_remote_LabelMatcher_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                remote.RemoteStorage.LabelMatcher.class, remote.RemoteStorage.LabelMatcher.Builder.class);
      }

      // Construct using remote.RemoteStorage.LabelMatcher.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();
        type_ = remote.RemoteStorage.MatchType.EQUAL;
        bitField0_ = (bitField0_ & ~0x00000001);
        name_ = "";
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = "";
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return remote.RemoteStorage.internal_static_remote_LabelMatcher_descriptor;
      }

      public remote.RemoteStorage.LabelMatcher getDefaultInstanceForType() {
        return remote.RemoteStorage.LabelMatcher.getDefaultInstance();
      }

      public remote.RemoteStorage.LabelMatcher build() {
        remote.RemoteStorage.LabelMatcher result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public remote.RemoteStorage.LabelMatcher buildPartial() {
        remote.RemoteStorage.LabelMatcher result = new remote.RemoteStorage.LabelMatcher(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;
        }
        result.name_ = name_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.value_ = value_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(remote.RemoteStorage.LabelMatcher other) {
        if (other == remote.RemoteStorage.LabelMatcher.getDefaultInstance()) return this;
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasName()) {
          bitField0_ |= 0x00000002;
          name_ = other.name_;
          onChanged();
        }
        if (other.hasValue()) {
          bitField0_ |= 0x00000004;
          value_ = other.value_;
          onChanged();
        }
        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 {
        remote.RemoteStorage.LabelMatcher parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (remote.RemoteStorage.LabelMatcher) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // optional .remote.MatchType type = 1;
      private remote.RemoteStorage.MatchType type_ = remote.RemoteStorage.MatchType.EQUAL;
      /**
       * <code>optional .remote.MatchType type = 1;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional .remote.MatchType type = 1;</code>
       */
      public remote.RemoteStorage.MatchType getType() {
        return type_;
      }
      /**
       * <code>optional .remote.MatchType type = 1;</code>
       */
      public Builder setType(remote.RemoteStorage.MatchType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional .remote.MatchType type = 1;</code>
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = remote.RemoteStorage.MatchType.EQUAL;
        onChanged();
        return this;
      }

      // optional string name = 2;
      private java.lang.Object name_ = "";
      /**
       * <code>optional string name = 2;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional string name = 2;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string name = 2;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string name = 2;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string name = 2;</code>
       */
      public Builder clearName() {
        bitField0_ = (bitField0_ & ~0x00000002);
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>optional string name = 2;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000002;
        name_ = value;
        onChanged();
        return this;
      }

      // optional string value = 3;
      private java.lang.Object value_ = "";
      /**
       * <code>optional string value = 3;</code>
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional string value = 3;</code>
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          java.lang.String s = ((com.google.protobuf.ByteString) ref)
              .toStringUtf8();
          value_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>optional string value = 3;</code>
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>optional string value = 3;</code>
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional string value = 3;</code>
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000004);
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      /**
       * <code>optional string value = 3;</code>
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000004;
        value_ = value;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:remote.LabelMatcher)
    }

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

    // @@protoc_insertion_point(class_scope:remote.LabelMatcher)
  }

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

    // repeated .remote.TimeSeries timeseries = 1;
    /**
     * <code>repeated .remote.TimeSeries timeseries = 1;</code>
     */
    java.util.List<remote.RemoteStorage.TimeSeries> 
        getTimeseriesList();
    /**
     * <code>repeated .remote.TimeSeries timeseries = 1;</code>
     */
    remote.RemoteStorage.TimeSeries getTimeseries(int index);
    /**
     * <code>repeated .remote.TimeSeries timeseries = 1;</code>
     */
    int getTimeseriesCount();
    /**
     * <code>repeated .remote.TimeSeries timeseries = 1;</code>
     */
    java.util.List<? extends remote.RemoteStorage.TimeSeriesOrBuilder> 
        getTimeseriesOrBuilderList();
    /**
     * <code>repeated .remote.TimeSeries timeseries = 1;</code>
     */
    remote.RemoteStorage.TimeSeriesOrBuilder getTimeseriesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code remote.QueryResult}
   */
  public static final class QueryResult extends
      com.google.protobuf.GeneratedMessage
      implements QueryResultOrBuilder {
    // Use QueryResult.newBuilder() to construct.
    private QueryResult(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private QueryResult(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

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

    public QueryResult getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private QueryResult(
        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: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                timeseries_ = new java.util.ArrayList<remote.RemoteStorage.TimeSeries>();
                mutable_bitField0_ |= 0x00000001;
              }
              timeseries_.add(input.readMessage(remote.RemoteStorage.TimeSeries.PARSER, extensionRegistry));
              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 {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          timeseries_ = java.util.Collections.unmodifiableList(timeseries_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return remote.RemoteStorage.internal_static_remote_QueryResult_descriptor;
    }

    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return remote.RemoteStorage.internal_static_remote_QueryResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              remote.RemoteStorage.QueryResult.class, remote.RemoteStorage.QueryResult.Builder.class);
    }

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

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

    // repeated .remote.TimeSeries timeseries = 1;
    public static final int TIMESERIES_FIELD_NUMBER = 1;
    private java.util.List<remote.RemoteStorage.TimeSeries> timeseries_;
    /**
     * <code>repeated .remote.TimeSeries timeseries = 1;</code>
     */
    public java.util.List<remote.RemoteStorage.TimeSeries> getTimeseriesList() {
      return timeseries_;
    }
    /**
     * <code>repeated .remote.TimeSeries timeseries = 1;</code>
     */
    public java.util.List<? extends remote.RemoteStorage.TimeSeriesOrBuilder> 
        getTimeseriesOrBuilderList() {
      return timeseries_;
    }
    /**
     * <code>repeated .remote.TimeSeries timeseries = 1;</code>
     */
    public int getTimeseriesCount() {
      return timeseries_.size();
    }
    /**
     * <code>repeated .remote.TimeSeries timeseries = 1;</code>
     */
    public remote.RemoteStorage.TimeSeries getTimeseries(int index) {
      return timeseries_.get(index);
    }
    /**
     * <code>repeated .remote.TimeSeries timeseries = 1;</code>
     */
    public remote.RemoteStorage.TimeSeriesOrBuilder getTimeseriesOrBuilder(
        int index) {
      return timeseries_.get(index);
    }

    private void initFields() {
      timeseries_ = java.util.Collections.emptyList();
    }
    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();
      for (int i = 0; i < timeseries_.size(); i++) {
        output.writeMessage(1, timeseries_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < timeseries_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, timeseries_.get(i));
      }
      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 remote.RemoteStorage.QueryResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static remote.RemoteStorage.QueryResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static remote.RemoteStorage.QueryResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static remote.RemoteStorage.QueryResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static remote.RemoteStorage.QueryResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static remote.RemoteStorage.QueryResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static remote.RemoteStorage.QueryResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static remote.RemoteStorage.QueryResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static remote.RemoteStorage.QueryResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static remote.RemoteStorage.QueryResult 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(remote.RemoteStorage.QueryResult 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 remote.QueryResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder>
       implements remote.RemoteStorage.QueryResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return remote.RemoteStorage.internal_static_remote_QueryResult_descriptor;
      }

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return remote.RemoteStorage.internal_static_remote_QueryResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                remote.RemoteStorage.QueryResult.class, remote.RemoteStorage.QueryResult.Builder.class);
      }

      // Construct using remote.RemoteStorage.QueryResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public Builder clear() {
        super.clear();
        if (timeseriesBuilder_ == null) {
          timeseries_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          timeseriesBuilder_.clear();
        }
        return this;
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return remote.RemoteStorage.internal_static_remote_QueryResult_descriptor;
      }

      public remote.RemoteStorage.QueryResult getDefaultInstanceForType() {
        return remote.RemoteStorage.QueryResult.getDefaultInstance();
      }

      public remote.RemoteStorage.QueryResult build() {
        remote.RemoteStorage.QueryResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public remote.RemoteStorage.QueryResult buildPartial() {
        remote.RemoteStorage.QueryResult result = new remote.RemoteStorage.QueryResult(this);
        int from_bitField0_ = bitField0_;
        if (timeseriesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            timeseries_ = java.util.Collections.unmodifiableList(timeseries_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.timeseries_ = timeseries_;
        } else {
          result.timeseries_ = timeseriesBuilder_.build();
        }
        onBuilt();
        return result;
      }

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

      public Builder mergeFrom(remote.RemoteStorage.QueryResult other) {
        if (other == remote.RemoteStorage.QueryResult.getDefaultInstance()) return this;
        if (timeseriesBuilder_ == null) {
          if (!other.timeseries_.isEmpty()) {
            if (timeseries_.isEmpty()) {
              timeseries_ = other.timeseries_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTimeseriesIsMutable();
              timeseries_.addAll(other.timeseries_);
            }
            onChanged();
          }
        } else {
          if (!other.timeseries_.isEmpty()) {
            if (timeseriesBuilder_.isEmpty()) {
              timeseriesBuilder_.dispose();
              timeseriesBuilder_ = null;
              timeseries_ = other.timeseries_;
              bitField0_ = (bitField0_ & ~0x00000001);
              timeseriesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getTimeseriesFieldBuilder() : null;
            } else {
              timeseriesBuilder_.addAllMessages(other.timeseries_);
            }
          }
        }
        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 {
        remote.RemoteStorage.QueryResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (remote.RemoteStorage.QueryResult) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      // repeated .remote.TimeSeries timeseries = 1;
      private java.util.List<remote.RemoteStorage.TimeSeries> timeseries_ =
        java.util.Collections.emptyList();
      private void ensureTimeseriesIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          timeseries_ = new java.util.ArrayList<remote.RemoteStorage.TimeSeries>(timeseries_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          remote.RemoteStorage.TimeSeries, remote.RemoteStorage.TimeSeries.Builder, remote.RemoteStorage.TimeSeriesOrBuilder> timeseriesBuilder_;

      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public java.util.List<remote.RemoteStorage.TimeSeries> getTimeseriesList() {
        if (timeseriesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(timeseries_);
        } else {
          return timeseriesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public int getTimeseriesCount() {
        if (timeseriesBuilder_ == null) {
          return timeseries_.size();
        } else {
          return timeseriesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public remote.RemoteStorage.TimeSeries getTimeseries(int index) {
        if (timeseriesBuilder_ == null) {
          return timeseries_.get(index);
        } else {
          return timeseriesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public Builder setTimeseries(
          int index, remote.RemoteStorage.TimeSeries value) {
        if (timeseriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTimeseriesIsMutable();
          timeseries_.set(index, value);
          onChanged();
        } else {
          timeseriesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public Builder setTimeseries(
          int index, remote.RemoteStorage.TimeSeries.Builder builderForValue) {
        if (timeseriesBuilder_ == null) {
          ensureTimeseriesIsMutable();
          timeseries_.set(index, builderForValue.build());
          onChanged();
        } else {
          timeseriesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public Builder addTimeseries(remote.RemoteStorage.TimeSeries value) {
        if (timeseriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTimeseriesIsMutable();
          timeseries_.add(value);
          onChanged();
        } else {
          timeseriesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public Builder addTimeseries(
          int index, remote.RemoteStorage.TimeSeries value) {
        if (timeseriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTimeseriesIsMutable();
          timeseries_.add(index, value);
          onChanged();
        } else {
          timeseriesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public Builder addTimeseries(
          remote.RemoteStorage.TimeSeries.Builder builderForValue) {
        if (timeseriesBuilder_ == null) {
          ensureTimeseriesIsMutable();
          timeseries_.add(builderForValue.build());
          onChanged();
        } else {
          timeseriesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public Builder addTimeseries(
          int index, remote.RemoteStorage.TimeSeries.Builder builderForValue) {
        if (timeseriesBuilder_ == null) {
          ensureTimeseriesIsMutable();
          timeseries_.add(index, builderForValue.build());
          onChanged();
        } else {
          timeseriesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public Builder addAllTimeseries(
          java.lang.Iterable<? extends remote.RemoteStorage.TimeSeries> values) {
        if (timeseriesBuilder_ == null) {
          ensureTimeseriesIsMutable();
          super.addAll(values, timeseries_);
          onChanged();
        } else {
          timeseriesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public Builder clearTimeseries() {
        if (timeseriesBuilder_ == null) {
          timeseries_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          timeseriesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public Builder removeTimeseries(int index) {
        if (timeseriesBuilder_ == null) {
          ensureTimeseriesIsMutable();
          timeseries_.remove(index);
          onChanged();
        } else {
          timeseriesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public remote.RemoteStorage.TimeSeries.Builder getTimeseriesBuilder(
          int index) {
        return getTimeseriesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public remote.RemoteStorage.TimeSeriesOrBuilder getTimeseriesOrBuilder(
          int index) {
        if (timeseriesBuilder_ == null) {
          return timeseries_.get(index);  } else {
          return timeseriesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public java.util.List<? extends remote.RemoteStorage.TimeSeriesOrBuilder> 
           getTimeseriesOrBuilderList() {
        if (timeseriesBuilder_ != null) {
          return timeseriesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(timeseries_);
        }
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public remote.RemoteStorage.TimeSeries.Builder addTimeseriesBuilder() {
        return getTimeseriesFieldBuilder().addBuilder(
            remote.RemoteStorage.TimeSeries.getDefaultInstance());
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public remote.RemoteStorage.TimeSeries.Builder addTimeseriesBuilder(
          int index) {
        return getTimeseriesFieldBuilder().addBuilder(
            index, remote.RemoteStorage.TimeSeries.getDefaultInstance());
      }
      /**
       * <code>repeated .remote.TimeSeries timeseries = 1;</code>
       */
      public java.util.List<remote.RemoteStorage.TimeSeries.Builder> 
           getTimeseriesBuilderList() {
        return getTimeseriesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          remote.RemoteStorage.TimeSeries, remote.RemoteStorage.TimeSeries.Builder, remote.RemoteStorage.TimeSeriesOrBuilder> 
          getTimeseriesFieldBuilder() {
        if (timeseriesBuilder_ == null) {
          timeseriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              remote.RemoteStorage.TimeSeries, remote.RemoteStorage.TimeSeries.Builder, remote.RemoteStorage.TimeSeriesOrBuilder>(
                  timeseries_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          timeseries_ = null;
        }
        return timeseriesBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:remote.QueryResult)
    }

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

    // @@protoc_insertion_point(class_scope:remote.QueryResult)
  }

  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_remote_Sample_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_remote_Sample_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_remote_LabelPair_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_remote_LabelPair_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_remote_TimeSeries_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_remote_TimeSeries_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_remote_WriteRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_remote_WriteRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_remote_ReadRequest_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_remote_ReadRequest_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_remote_ReadResponse_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_remote_ReadResponse_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_remote_Query_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_remote_Query_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_remote_LabelMatcher_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_remote_LabelMatcher_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_remote_QueryResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_remote_QueryResult_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\032proto/remote-storage.proto\022\006remote\"-\n\006" +
      "Sample\022\r\n\005value\030\001 \001(\001\022\024\n\014timestamp_ms\030\002 " +
      "\001(\003\"(\n\tLabelPair\022\014\n\004name\030\001 \001(\t\022\r\n\005value\030" +
      "\002 \001(\t\"P\n\nTimeSeries\022!\n\006labels\030\001 \003(\0132\021.re" +
      "mote.LabelPair\022\037\n\007samples\030\002 \003(\0132\016.remote" +
      ".Sample\"6\n\014WriteRequest\022&\n\ntimeseries\030\001 " +
      "\003(\0132\022.remote.TimeSeries\"-\n\013ReadRequest\022\036" +
      "\n\007queries\030\001 \003(\0132\r.remote.Query\"4\n\014ReadRe" +
      "sponse\022$\n\007results\030\001 \003(\0132\023.remote.QueryRe" +
      "sult\"e\n\005Query\022\032\n\022start_timestamp_ms\030\001 \001(",
      "\003\022\030\n\020end_timestamp_ms\030\002 \001(\003\022&\n\010matchers\030" +
      "\003 \003(\0132\024.remote.LabelMatcher\"L\n\014LabelMatc" +
      "her\022\037\n\004type\030\001 \001(\0162\021.remote.MatchType\022\014\n\004" +
      "name\030\002 \001(\t\022\r\n\005value\030\003 \001(\t\"5\n\013QueryResult" +
      "\022&\n\ntimeseries\030\001 \003(\0132\022.remote.TimeSeries" +
      "*J\n\tMatchType\022\t\n\005EQUAL\020\000\022\r\n\tNOT_EQUAL\020\001\022" +
      "\017\n\013REGEX_MATCH\020\002\022\022\n\016REGEX_NO_MATCH\020\003"
    };
    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_remote_Sample_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_remote_Sample_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_remote_Sample_descriptor,
              new java.lang.String[] { "Value", "TimestampMs", });
          internal_static_remote_LabelPair_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_remote_LabelPair_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_remote_LabelPair_descriptor,
              new java.lang.String[] { "Name", "Value", });
          internal_static_remote_TimeSeries_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_remote_TimeSeries_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_remote_TimeSeries_descriptor,
              new java.lang.String[] { "Labels", "Samples", });
          internal_static_remote_WriteRequest_descriptor =
            getDescriptor().getMessageTypes().get(3);
          internal_static_remote_WriteRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_remote_WriteRequest_descriptor,
              new java.lang.String[] { "Timeseries", });
          internal_static_remote_ReadRequest_descriptor =
            getDescriptor().getMessageTypes().get(4);
          internal_static_remote_ReadRequest_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_remote_ReadRequest_descriptor,
              new java.lang.String[] { "Queries", });
          internal_static_remote_ReadResponse_descriptor =
            getDescriptor().getMessageTypes().get(5);
          internal_static_remote_ReadResponse_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_remote_ReadResponse_descriptor,
              new java.lang.String[] { "Results", });
          internal_static_remote_Query_descriptor =
            getDescriptor().getMessageTypes().get(6);
          internal_static_remote_Query_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_remote_Query_descriptor,
              new java.lang.String[] { "StartTimestampMs", "EndTimestampMs", "Matchers", });
          internal_static_remote_LabelMatcher_descriptor =
            getDescriptor().getMessageTypes().get(7);
          internal_static_remote_LabelMatcher_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_remote_LabelMatcher_descriptor,
              new java.lang.String[] { "Type", "Name", "Value", });
          internal_static_remote_QueryResult_descriptor =
            getDescriptor().getMessageTypes().get(8);
          internal_static_remote_QueryResult_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_remote_QueryResult_descriptor,
              new java.lang.String[] { "Timeseries", });
          return null;
        }
      };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
  }

  // @@protoc_insertion_point(outer_class_scope)
}
