public final class DisplayDirectMessage {
  private DisplayDirectMessage() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface SubscribeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:display_direct.Subscribe)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated string stop_code = 1;</code>
     */
    java.util.List<java.lang.String>
        getStopCodeList();
    /**
     * <code>repeated string stop_code = 1;</code>
     */
    int getStopCodeCount();
    /**
     * <code>repeated string stop_code = 1;</code>
     */
    java.lang.String getStopCode(int index);
    /**
     * <code>repeated string stop_code = 1;</code>
     */
    com.google.protobuf.ByteString
        getStopCodeBytes(int index);

    /**
     * <code>.display_direct.Subscribe.DisplayProperties display_properties = 2;</code>
     */
    boolean hasDisplayProperties();
    /**
     * <code>.display_direct.Subscribe.DisplayProperties display_properties = 2;</code>
     */
    nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties getDisplayProperties();
    /**
     * <code>.display_direct.Subscribe.DisplayProperties display_properties = 2;</code>
     */
    nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayPropertiesOrBuilder getDisplayPropertiesOrBuilder();

    /**
     * <code>.display_direct.Subscribe.FieldFilter field_filter = 3;</code>
     */
    boolean hasFieldFilter();
    /**
     * <code>.display_direct.Subscribe.FieldFilter field_filter = 3;</code>
     */
    nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter getFieldFilter();
    /**
     * <code>.display_direct.Subscribe.FieldFilter field_filter = 3;</code>
     */
    nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilterOrBuilder getFieldFilterOrBuilder();

    /**
     * <code>string description = 4;</code>
     */
    java.lang.String getDescription();
    /**
     * <code>string description = 4;</code>
     */
    com.google.protobuf.ByteString
        getDescriptionBytes();

    /**
     * <code>string email = 5;</code>
     */
    java.lang.String getEmail();
    /**
     * <code>string email = 5;</code>
     */
    com.google.protobuf.ByteString
        getEmailBytes();
  }
  /**
   * <pre>
   * aanmelden
   * </pre>
   *
   * Protobuf type {@code display_direct.Subscribe}
   */
  public  static final class Subscribe extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:display_direct.Subscribe)
      SubscribeOrBuilder {
    // Use Subscribe.newBuilder() to construct.
    private Subscribe(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Subscribe() {
      stopCode_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      description_ = "";
      email_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private Subscribe(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                stopCode_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              stopCode_.add(s);
              break;
            }
            case 18: {
              nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties.Builder subBuilder = null;
              if (displayProperties_ != null) {
                subBuilder = displayProperties_.toBuilder();
              }
              displayProperties_ = input.readMessage(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(displayProperties_);
                displayProperties_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Builder subBuilder = null;
              if (fieldFilter_ != null) {
                subBuilder = fieldFilter_.toBuilder();
              }
              fieldFilter_ = input.readMessage(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(fieldFilter_);
                fieldFilter_ = subBuilder.buildPartial();
              }

              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              description_ = s;
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              email_ = s;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          stopCode_ = stopCode_.getUnmodifiableView();
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Subscribe_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Subscribe_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.Builder.class);
    }

    public interface DisplayPropertiesOrBuilder extends
        // @@protoc_insertion_point(interface_extends:display_direct.Subscribe.DisplayProperties)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>uint32 text_characters = 1;</code>
       */
      int getTextCharacters();

      /**
       * <code>uint32 lines = 2;</code>
       */
      int getLines();

      /**
       * <code>uint32 max_combined_directions = 3;</code>
       */
      int getMaxCombinedDirections();
    }
    /**
     * Protobuf type {@code display_direct.Subscribe.DisplayProperties}
     */
    public  static final class DisplayProperties extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:display_direct.Subscribe.DisplayProperties)
        DisplayPropertiesOrBuilder {
      // Use DisplayProperties.newBuilder() to construct.
      private DisplayProperties(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private DisplayProperties() {
        textCharacters_ = 0;
        lines_ = 0;
        maxCombinedDirections_ = 0;
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
      }
      private DisplayProperties(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!input.skipField(tag)) {
                  done = true;
                }
                break;
              }
              case 8: {

                textCharacters_ = input.readUInt32();
                break;
              }
              case 16: {

                lines_ = input.readUInt32();
                break;
              }
              case 24: {

                maxCombinedDirections_ = input.readUInt32();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Subscribe_DisplayProperties_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Subscribe_DisplayProperties_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties.Builder.class);
      }

      public static final int TEXT_CHARACTERS_FIELD_NUMBER = 1;
      private int textCharacters_;
      /**
       * <code>uint32 text_characters = 1;</code>
       */
      public int getTextCharacters() {
        return textCharacters_;
      }

      public static final int LINES_FIELD_NUMBER = 2;
      private int lines_;
      /**
       * <code>uint32 lines = 2;</code>
       */
      public int getLines() {
        return lines_;
      }

      public static final int MAX_COMBINED_DIRECTIONS_FIELD_NUMBER = 3;
      private int maxCombinedDirections_;
      /**
       * <code>uint32 max_combined_directions = 3;</code>
       */
      public int getMaxCombinedDirections() {
        return maxCombinedDirections_;
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (textCharacters_ != 0) {
          output.writeUInt32(1, textCharacters_);
        }
        if (lines_ != 0) {
          output.writeUInt32(2, lines_);
        }
        if (maxCombinedDirections_ != 0) {
          output.writeUInt32(3, maxCombinedDirections_);
        }
      }

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

        size = 0;
        if (textCharacters_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, textCharacters_);
        }
        if (lines_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(2, lines_);
        }
        if (maxCombinedDirections_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(3, maxCombinedDirections_);
        }
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties)) {
          return super.equals(obj);
        }
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties other = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties) obj;

        boolean result = true;
        result = result && (getTextCharacters()
            == other.getTextCharacters());
        result = result && (getLines()
            == other.getLines());
        result = result && (getMaxCombinedDirections()
            == other.getMaxCombinedDirections());
        return result;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + TEXT_CHARACTERS_FIELD_NUMBER;
        hash = (53 * hash) + getTextCharacters();
        hash = (37 * hash) + LINES_FIELD_NUMBER;
        hash = (53 * hash) + getLines();
        hash = (37 * hash) + MAX_COMBINED_DIRECTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getMaxCombinedDirections();
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code display_direct.Subscribe.DisplayProperties}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:display_direct.Subscribe.DisplayProperties)
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayPropertiesOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Subscribe_DisplayProperties_descriptor;
        }

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Subscribe_DisplayProperties_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties.Builder.class);
        }

        // Construct using nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          textCharacters_ = 0;

          lines_ = 0;

          maxCombinedDirections_ = 0;

          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Subscribe_DisplayProperties_descriptor;
        }

        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties getDefaultInstanceForType() {
          return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties.getDefaultInstance();
        }

        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties build() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties buildPartial() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties result = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties(this);
          result.textCharacters_ = textCharacters_;
          result.lines_ = lines_;
          result.maxCombinedDirections_ = maxCombinedDirections_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties) {
            return mergeFrom((nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties other) {
          if (other == nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties.getDefaultInstance()) return this;
          if (other.getTextCharacters() != 0) {
            setTextCharacters(other.getTextCharacters());
          }
          if (other.getLines() != 0) {
            setLines(other.getLines());
          }
          if (other.getMaxCombinedDirections() != 0) {
            setMaxCombinedDirections(other.getMaxCombinedDirections());
          }
          onChanged();
          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 {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }

        private int textCharacters_ ;
        /**
         * <code>uint32 text_characters = 1;</code>
         */
        public int getTextCharacters() {
          return textCharacters_;
        }
        /**
         * <code>uint32 text_characters = 1;</code>
         */
        public Builder setTextCharacters(int value) {
          
          textCharacters_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>uint32 text_characters = 1;</code>
         */
        public Builder clearTextCharacters() {
          
          textCharacters_ = 0;
          onChanged();
          return this;
        }

        private int lines_ ;
        /**
         * <code>uint32 lines = 2;</code>
         */
        public int getLines() {
          return lines_;
        }
        /**
         * <code>uint32 lines = 2;</code>
         */
        public Builder setLines(int value) {
          
          lines_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>uint32 lines = 2;</code>
         */
        public Builder clearLines() {
          
          lines_ = 0;
          onChanged();
          return this;
        }

        private int maxCombinedDirections_ ;
        /**
         * <code>uint32 max_combined_directions = 3;</code>
         */
        public int getMaxCombinedDirections() {
          return maxCombinedDirections_;
        }
        /**
         * <code>uint32 max_combined_directions = 3;</code>
         */
        public Builder setMaxCombinedDirections(int value) {
          
          maxCombinedDirections_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>uint32 max_combined_directions = 3;</code>
         */
        public Builder clearMaxCombinedDirections() {
          
          maxCombinedDirections_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return this;
        }

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


        // @@protoc_insertion_point(builder_scope:display_direct.Subscribe.DisplayProperties)
      }

      // @@protoc_insertion_point(class_scope:display_direct.Subscribe.DisplayProperties)
      private static final nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties();
      }

      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface FieldFilterOrBuilder extends
        // @@protoc_insertion_point(interface_extends:display_direct.Subscribe.FieldFilter)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery target_arrival_time = 1;</code>
       */
      int getTargetArrivalTimeValue();
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery target_arrival_time = 1;</code>
       */
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getTargetArrivalTime();

      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery target_departure_time = 2;</code>
       */
      int getTargetDepartureTimeValue();
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery target_departure_time = 2;</code>
       */
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getTargetDepartureTime();

      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery expected_arrival_time = 3;</code>
       */
      int getExpectedArrivalTimeValue();
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery expected_arrival_time = 3;</code>
       */
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getExpectedArrivalTime();

      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery number_of_coaches = 4;</code>
       */
      int getNumberOfCoachesValue();
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery number_of_coaches = 4;</code>
       */
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getNumberOfCoaches();

      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery trip_stop_status = 5;</code>
       */
      int getTripStopStatusValue();
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery trip_stop_status = 5;</code>
       */
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getTripStopStatus();

      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery transport_type = 6;</code>
       */
      int getTransportTypeValue();
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery transport_type = 6;</code>
       */
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getTransportType();

      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery wheelchair_accessible = 7;</code>
       */
      int getWheelchairAccessibleValue();
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery wheelchair_accessible = 7;</code>
       */
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getWheelchairAccessible();

      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery is_timing_stop = 8;</code>
       */
      int getIsTimingStopValue();
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery is_timing_stop = 8;</code>
       */
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getIsTimingStop();

      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery stop_code = 9;</code>
       */
      int getStopCodeValue();
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery stop_code = 9;</code>
       */
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getStopCode();

      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery destination = 10;</code>
       */
      int getDestinationValue();
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery destination = 10;</code>
       */
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getDestination();

      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery line_public_number = 11;</code>
       */
      int getLinePublicNumberValue();
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery line_public_number = 11;</code>
       */
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getLinePublicNumber();

      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery side_code = 12;</code>
       */
      int getSideCodeValue();
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery side_code = 12;</code>
       */
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getSideCode();

      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery line_direction = 13;</code>
       */
      int getLineDirectionValue();
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery line_direction = 13;</code>
       */
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getLineDirection();

      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery journey_message_content = 14;</code>
       */
      int getJourneyMessageContentValue();
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery journey_message_content = 14;</code>
       */
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getJourneyMessageContent();

      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery line_color = 15;</code>
       */
      int getLineColorValue();
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery line_color = 15;</code>
       */
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getLineColor();

      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery line_text_color = 16;</code>
       */
      int getLineTextColorValue();
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery line_text_color = 16;</code>
       */
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getLineTextColor();

      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery line_icon = 17;</code>
       */
      int getLineIconValue();
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery line_icon = 17;</code>
       */
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getLineIcon();

      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_color = 18;</code>
       */
      int getDestinationColorValue();
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_color = 18;</code>
       */
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getDestinationColor();

      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_text_color = 19;</code>
       */
      int getDestinationTextColorValue();
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_text_color = 19;</code>
       */
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getDestinationTextColor();

      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_icon = 20;</code>
       */
      int getDestinationIconValue();
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_icon = 20;</code>
       */
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getDestinationIcon();

      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery generated_timestamp = 21;</code>
       */
      int getGeneratedTimestampValue();
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery generated_timestamp = 21;</code>
       */
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getGeneratedTimestamp();
    }
    /**
     * Protobuf type {@code display_direct.Subscribe.FieldFilter}
     */
    public  static final class FieldFilter extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:display_direct.Subscribe.FieldFilter)
        FieldFilterOrBuilder {
      // Use FieldFilter.newBuilder() to construct.
      private FieldFilter(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private FieldFilter() {
        targetArrivalTime_ = 0;
        targetDepartureTime_ = 0;
        expectedArrivalTime_ = 0;
        numberOfCoaches_ = 0;
        tripStopStatus_ = 0;
        transportType_ = 0;
        wheelchairAccessible_ = 0;
        isTimingStop_ = 0;
        stopCode_ = 0;
        destination_ = 0;
        linePublicNumber_ = 0;
        sideCode_ = 0;
        lineDirection_ = 0;
        journeyMessageContent_ = 0;
        lineColor_ = 0;
        lineTextColor_ = 0;
        lineIcon_ = 0;
        destinationColor_ = 0;
        destinationTextColor_ = 0;
        destinationIcon_ = 0;
        generatedTimestamp_ = 0;
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
      }
      private FieldFilter(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!input.skipField(tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();

                targetArrivalTime_ = rawValue;
                break;
              }
              case 16: {
                int rawValue = input.readEnum();

                targetDepartureTime_ = rawValue;
                break;
              }
              case 24: {
                int rawValue = input.readEnum();

                expectedArrivalTime_ = rawValue;
                break;
              }
              case 32: {
                int rawValue = input.readEnum();

                numberOfCoaches_ = rawValue;
                break;
              }
              case 40: {
                int rawValue = input.readEnum();

                tripStopStatus_ = rawValue;
                break;
              }
              case 48: {
                int rawValue = input.readEnum();

                transportType_ = rawValue;
                break;
              }
              case 56: {
                int rawValue = input.readEnum();

                wheelchairAccessible_ = rawValue;
                break;
              }
              case 64: {
                int rawValue = input.readEnum();

                isTimingStop_ = rawValue;
                break;
              }
              case 72: {
                int rawValue = input.readEnum();

                stopCode_ = rawValue;
                break;
              }
              case 80: {
                int rawValue = input.readEnum();

                destination_ = rawValue;
                break;
              }
              case 88: {
                int rawValue = input.readEnum();

                linePublicNumber_ = rawValue;
                break;
              }
              case 96: {
                int rawValue = input.readEnum();

                sideCode_ = rawValue;
                break;
              }
              case 104: {
                int rawValue = input.readEnum();

                lineDirection_ = rawValue;
                break;
              }
              case 112: {
                int rawValue = input.readEnum();

                journeyMessageContent_ = rawValue;
                break;
              }
              case 120: {
                int rawValue = input.readEnum();

                lineColor_ = rawValue;
                break;
              }
              case 128: {
                int rawValue = input.readEnum();

                lineTextColor_ = rawValue;
                break;
              }
              case 136: {
                int rawValue = input.readEnum();

                lineIcon_ = rawValue;
                break;
              }
              case 144: {
                int rawValue = input.readEnum();

                destinationColor_ = rawValue;
                break;
              }
              case 152: {
                int rawValue = input.readEnum();

                destinationTextColor_ = rawValue;
                break;
              }
              case 160: {
                int rawValue = input.readEnum();

                destinationIcon_ = rawValue;
                break;
              }
              case 168: {
                int rawValue = input.readEnum();

                generatedTimestamp_ = rawValue;
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Subscribe_FieldFilter_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Subscribe_FieldFilter_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Builder.class);
      }

      /**
       * Protobuf enum {@code display_direct.Subscribe.FieldFilter.Delivery}
       */
      public enum Delivery
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <code>NEVER = 0;</code>
         */
        NEVER(0),
        /**
         * <code>ALWAYS = 1;</code>
         */
        ALWAYS(1),
        /**
         * <code>DELTA = 2;</code>
         */
        DELTA(2),
        UNRECOGNIZED(-1),
        ;

        /**
         * <code>NEVER = 0;</code>
         */
        public static final int NEVER_VALUE = 0;
        /**
         * <code>ALWAYS = 1;</code>
         */
        public static final int ALWAYS_VALUE = 1;
        /**
         * <code>DELTA = 2;</code>
         */
        public static final int DELTA_VALUE = 2;


        public final int getNumber() {
          if (this == UNRECOGNIZED) {
            throw new java.lang.IllegalArgumentException(
                "Can't get the number of an unknown enum value.");
          }
          return value;
        }

        /**
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static Delivery valueOf(int value) {
          return forNumber(value);
        }

        public static Delivery forNumber(int value) {
          switch (value) {
            case 0: return NEVER;
            case 1: return ALWAYS;
            case 2: return DELTA;
            default: return null;
          }
        }

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

        public final com.google.protobuf.Descriptors.EnumValueDescriptor
            getValueDescriptor() {
          return getDescriptor().getValues().get(ordinal());
        }
        public final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptorForType() {
          return getDescriptor();
        }
        public static final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptor() {
          return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.getDescriptor().getEnumTypes().get(0);
        }

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

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

        private final int value;

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

        // @@protoc_insertion_point(enum_scope:display_direct.Subscribe.FieldFilter.Delivery)
      }

      public static final int TARGET_ARRIVAL_TIME_FIELD_NUMBER = 1;
      private int targetArrivalTime_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery target_arrival_time = 1;</code>
       */
      public int getTargetArrivalTimeValue() {
        return targetArrivalTime_;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery target_arrival_time = 1;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getTargetArrivalTime() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(targetArrivalTime_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
      }

      public static final int TARGET_DEPARTURE_TIME_FIELD_NUMBER = 2;
      private int targetDepartureTime_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery target_departure_time = 2;</code>
       */
      public int getTargetDepartureTimeValue() {
        return targetDepartureTime_;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery target_departure_time = 2;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getTargetDepartureTime() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(targetDepartureTime_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
      }

      public static final int EXPECTED_ARRIVAL_TIME_FIELD_NUMBER = 3;
      private int expectedArrivalTime_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery expected_arrival_time = 3;</code>
       */
      public int getExpectedArrivalTimeValue() {
        return expectedArrivalTime_;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery expected_arrival_time = 3;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getExpectedArrivalTime() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(expectedArrivalTime_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
      }

      public static final int NUMBER_OF_COACHES_FIELD_NUMBER = 4;
      private int numberOfCoaches_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery number_of_coaches = 4;</code>
       */
      public int getNumberOfCoachesValue() {
        return numberOfCoaches_;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery number_of_coaches = 4;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getNumberOfCoaches() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(numberOfCoaches_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
      }

      public static final int TRIP_STOP_STATUS_FIELD_NUMBER = 5;
      private int tripStopStatus_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery trip_stop_status = 5;</code>
       */
      public int getTripStopStatusValue() {
        return tripStopStatus_;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery trip_stop_status = 5;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getTripStopStatus() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(tripStopStatus_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
      }

      public static final int TRANSPORT_TYPE_FIELD_NUMBER = 6;
      private int transportType_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery transport_type = 6;</code>
       */
      public int getTransportTypeValue() {
        return transportType_;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery transport_type = 6;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getTransportType() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(transportType_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
      }

      public static final int WHEELCHAIR_ACCESSIBLE_FIELD_NUMBER = 7;
      private int wheelchairAccessible_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery wheelchair_accessible = 7;</code>
       */
      public int getWheelchairAccessibleValue() {
        return wheelchairAccessible_;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery wheelchair_accessible = 7;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getWheelchairAccessible() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(wheelchairAccessible_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
      }

      public static final int IS_TIMING_STOP_FIELD_NUMBER = 8;
      private int isTimingStop_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery is_timing_stop = 8;</code>
       */
      public int getIsTimingStopValue() {
        return isTimingStop_;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery is_timing_stop = 8;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getIsTimingStop() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(isTimingStop_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
      }

      public static final int STOP_CODE_FIELD_NUMBER = 9;
      private int stopCode_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery stop_code = 9;</code>
       */
      public int getStopCodeValue() {
        return stopCode_;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery stop_code = 9;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getStopCode() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(stopCode_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
      }

      public static final int DESTINATION_FIELD_NUMBER = 10;
      private int destination_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery destination = 10;</code>
       */
      public int getDestinationValue() {
        return destination_;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery destination = 10;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getDestination() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(destination_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
      }

      public static final int LINE_PUBLIC_NUMBER_FIELD_NUMBER = 11;
      private int linePublicNumber_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery line_public_number = 11;</code>
       */
      public int getLinePublicNumberValue() {
        return linePublicNumber_;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery line_public_number = 11;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getLinePublicNumber() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(linePublicNumber_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
      }

      public static final int SIDE_CODE_FIELD_NUMBER = 12;
      private int sideCode_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery side_code = 12;</code>
       */
      public int getSideCodeValue() {
        return sideCode_;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery side_code = 12;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getSideCode() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(sideCode_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
      }

      public static final int LINE_DIRECTION_FIELD_NUMBER = 13;
      private int lineDirection_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery line_direction = 13;</code>
       */
      public int getLineDirectionValue() {
        return lineDirection_;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery line_direction = 13;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getLineDirection() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(lineDirection_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
      }

      public static final int JOURNEY_MESSAGE_CONTENT_FIELD_NUMBER = 14;
      private int journeyMessageContent_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery journey_message_content = 14;</code>
       */
      public int getJourneyMessageContentValue() {
        return journeyMessageContent_;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery journey_message_content = 14;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getJourneyMessageContent() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(journeyMessageContent_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
      }

      public static final int LINE_COLOR_FIELD_NUMBER = 15;
      private int lineColor_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery line_color = 15;</code>
       */
      public int getLineColorValue() {
        return lineColor_;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery line_color = 15;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getLineColor() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(lineColor_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
      }

      public static final int LINE_TEXT_COLOR_FIELD_NUMBER = 16;
      private int lineTextColor_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery line_text_color = 16;</code>
       */
      public int getLineTextColorValue() {
        return lineTextColor_;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery line_text_color = 16;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getLineTextColor() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(lineTextColor_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
      }

      public static final int LINE_ICON_FIELD_NUMBER = 17;
      private int lineIcon_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery line_icon = 17;</code>
       */
      public int getLineIconValue() {
        return lineIcon_;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery line_icon = 17;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getLineIcon() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(lineIcon_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
      }

      public static final int DESTINATION_COLOR_FIELD_NUMBER = 18;
      private int destinationColor_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_color = 18;</code>
       */
      public int getDestinationColorValue() {
        return destinationColor_;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_color = 18;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getDestinationColor() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(destinationColor_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
      }

      public static final int DESTINATION_TEXT_COLOR_FIELD_NUMBER = 19;
      private int destinationTextColor_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_text_color = 19;</code>
       */
      public int getDestinationTextColorValue() {
        return destinationTextColor_;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_text_color = 19;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getDestinationTextColor() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(destinationTextColor_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
      }

      public static final int DESTINATION_ICON_FIELD_NUMBER = 20;
      private int destinationIcon_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_icon = 20;</code>
       */
      public int getDestinationIconValue() {
        return destinationIcon_;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_icon = 20;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getDestinationIcon() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(destinationIcon_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
      }

      public static final int GENERATED_TIMESTAMP_FIELD_NUMBER = 21;
      private int generatedTimestamp_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery generated_timestamp = 21;</code>
       */
      public int getGeneratedTimestampValue() {
        return generatedTimestamp_;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter.Delivery generated_timestamp = 21;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getGeneratedTimestamp() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(generatedTimestamp_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (targetArrivalTime_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          output.writeEnum(1, targetArrivalTime_);
        }
        if (targetDepartureTime_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          output.writeEnum(2, targetDepartureTime_);
        }
        if (expectedArrivalTime_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          output.writeEnum(3, expectedArrivalTime_);
        }
        if (numberOfCoaches_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          output.writeEnum(4, numberOfCoaches_);
        }
        if (tripStopStatus_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          output.writeEnum(5, tripStopStatus_);
        }
        if (transportType_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          output.writeEnum(6, transportType_);
        }
        if (wheelchairAccessible_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          output.writeEnum(7, wheelchairAccessible_);
        }
        if (isTimingStop_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          output.writeEnum(8, isTimingStop_);
        }
        if (stopCode_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          output.writeEnum(9, stopCode_);
        }
        if (destination_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          output.writeEnum(10, destination_);
        }
        if (linePublicNumber_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          output.writeEnum(11, linePublicNumber_);
        }
        if (sideCode_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          output.writeEnum(12, sideCode_);
        }
        if (lineDirection_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          output.writeEnum(13, lineDirection_);
        }
        if (journeyMessageContent_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          output.writeEnum(14, journeyMessageContent_);
        }
        if (lineColor_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          output.writeEnum(15, lineColor_);
        }
        if (lineTextColor_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          output.writeEnum(16, lineTextColor_);
        }
        if (lineIcon_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          output.writeEnum(17, lineIcon_);
        }
        if (destinationColor_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          output.writeEnum(18, destinationColor_);
        }
        if (destinationTextColor_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          output.writeEnum(19, destinationTextColor_);
        }
        if (destinationIcon_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          output.writeEnum(20, destinationIcon_);
        }
        if (generatedTimestamp_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          output.writeEnum(21, generatedTimestamp_);
        }
      }

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

        size = 0;
        if (targetArrivalTime_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, targetArrivalTime_);
        }
        if (targetDepartureTime_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(2, targetDepartureTime_);
        }
        if (expectedArrivalTime_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(3, expectedArrivalTime_);
        }
        if (numberOfCoaches_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(4, numberOfCoaches_);
        }
        if (tripStopStatus_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(5, tripStopStatus_);
        }
        if (transportType_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(6, transportType_);
        }
        if (wheelchairAccessible_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(7, wheelchairAccessible_);
        }
        if (isTimingStop_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(8, isTimingStop_);
        }
        if (stopCode_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(9, stopCode_);
        }
        if (destination_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(10, destination_);
        }
        if (linePublicNumber_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(11, linePublicNumber_);
        }
        if (sideCode_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(12, sideCode_);
        }
        if (lineDirection_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(13, lineDirection_);
        }
        if (journeyMessageContent_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(14, journeyMessageContent_);
        }
        if (lineColor_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(15, lineColor_);
        }
        if (lineTextColor_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(16, lineTextColor_);
        }
        if (lineIcon_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(17, lineIcon_);
        }
        if (destinationColor_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(18, destinationColor_);
        }
        if (destinationTextColor_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(19, destinationTextColor_);
        }
        if (destinationIcon_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(20, destinationIcon_);
        }
        if (generatedTimestamp_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.NEVER.getNumber()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(21, generatedTimestamp_);
        }
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter)) {
          return super.equals(obj);
        }
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter other = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter) obj;

        boolean result = true;
        result = result && targetArrivalTime_ == other.targetArrivalTime_;
        result = result && targetDepartureTime_ == other.targetDepartureTime_;
        result = result && expectedArrivalTime_ == other.expectedArrivalTime_;
        result = result && numberOfCoaches_ == other.numberOfCoaches_;
        result = result && tripStopStatus_ == other.tripStopStatus_;
        result = result && transportType_ == other.transportType_;
        result = result && wheelchairAccessible_ == other.wheelchairAccessible_;
        result = result && isTimingStop_ == other.isTimingStop_;
        result = result && stopCode_ == other.stopCode_;
        result = result && destination_ == other.destination_;
        result = result && linePublicNumber_ == other.linePublicNumber_;
        result = result && sideCode_ == other.sideCode_;
        result = result && lineDirection_ == other.lineDirection_;
        result = result && journeyMessageContent_ == other.journeyMessageContent_;
        result = result && lineColor_ == other.lineColor_;
        result = result && lineTextColor_ == other.lineTextColor_;
        result = result && lineIcon_ == other.lineIcon_;
        result = result && destinationColor_ == other.destinationColor_;
        result = result && destinationTextColor_ == other.destinationTextColor_;
        result = result && destinationIcon_ == other.destinationIcon_;
        result = result && generatedTimestamp_ == other.generatedTimestamp_;
        return result;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + TARGET_ARRIVAL_TIME_FIELD_NUMBER;
        hash = (53 * hash) + targetArrivalTime_;
        hash = (37 * hash) + TARGET_DEPARTURE_TIME_FIELD_NUMBER;
        hash = (53 * hash) + targetDepartureTime_;
        hash = (37 * hash) + EXPECTED_ARRIVAL_TIME_FIELD_NUMBER;
        hash = (53 * hash) + expectedArrivalTime_;
        hash = (37 * hash) + NUMBER_OF_COACHES_FIELD_NUMBER;
        hash = (53 * hash) + numberOfCoaches_;
        hash = (37 * hash) + TRIP_STOP_STATUS_FIELD_NUMBER;
        hash = (53 * hash) + tripStopStatus_;
        hash = (37 * hash) + TRANSPORT_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + transportType_;
        hash = (37 * hash) + WHEELCHAIR_ACCESSIBLE_FIELD_NUMBER;
        hash = (53 * hash) + wheelchairAccessible_;
        hash = (37 * hash) + IS_TIMING_STOP_FIELD_NUMBER;
        hash = (53 * hash) + isTimingStop_;
        hash = (37 * hash) + STOP_CODE_FIELD_NUMBER;
        hash = (53 * hash) + stopCode_;
        hash = (37 * hash) + DESTINATION_FIELD_NUMBER;
        hash = (53 * hash) + destination_;
        hash = (37 * hash) + LINE_PUBLIC_NUMBER_FIELD_NUMBER;
        hash = (53 * hash) + linePublicNumber_;
        hash = (37 * hash) + SIDE_CODE_FIELD_NUMBER;
        hash = (53 * hash) + sideCode_;
        hash = (37 * hash) + LINE_DIRECTION_FIELD_NUMBER;
        hash = (53 * hash) + lineDirection_;
        hash = (37 * hash) + JOURNEY_MESSAGE_CONTENT_FIELD_NUMBER;
        hash = (53 * hash) + journeyMessageContent_;
        hash = (37 * hash) + LINE_COLOR_FIELD_NUMBER;
        hash = (53 * hash) + lineColor_;
        hash = (37 * hash) + LINE_TEXT_COLOR_FIELD_NUMBER;
        hash = (53 * hash) + lineTextColor_;
        hash = (37 * hash) + LINE_ICON_FIELD_NUMBER;
        hash = (53 * hash) + lineIcon_;
        hash = (37 * hash) + DESTINATION_COLOR_FIELD_NUMBER;
        hash = (53 * hash) + destinationColor_;
        hash = (37 * hash) + DESTINATION_TEXT_COLOR_FIELD_NUMBER;
        hash = (53 * hash) + destinationTextColor_;
        hash = (37 * hash) + DESTINATION_ICON_FIELD_NUMBER;
        hash = (53 * hash) + destinationIcon_;
        hash = (37 * hash) + GENERATED_TIMESTAMP_FIELD_NUMBER;
        hash = (53 * hash) + generatedTimestamp_;
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code display_direct.Subscribe.FieldFilter}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:display_direct.Subscribe.FieldFilter)
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilterOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Subscribe_FieldFilter_descriptor;
        }

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Subscribe_FieldFilter_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Builder.class);
        }

        // Construct using nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          targetArrivalTime_ = 0;

          targetDepartureTime_ = 0;

          expectedArrivalTime_ = 0;

          numberOfCoaches_ = 0;

          tripStopStatus_ = 0;

          transportType_ = 0;

          wheelchairAccessible_ = 0;

          isTimingStop_ = 0;

          stopCode_ = 0;

          destination_ = 0;

          linePublicNumber_ = 0;

          sideCode_ = 0;

          lineDirection_ = 0;

          journeyMessageContent_ = 0;

          lineColor_ = 0;

          lineTextColor_ = 0;

          lineIcon_ = 0;

          destinationColor_ = 0;

          destinationTextColor_ = 0;

          destinationIcon_ = 0;

          generatedTimestamp_ = 0;

          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Subscribe_FieldFilter_descriptor;
        }

        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter getDefaultInstanceForType() {
          return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.getDefaultInstance();
        }

        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter build() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter buildPartial() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter result = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter(this);
          result.targetArrivalTime_ = targetArrivalTime_;
          result.targetDepartureTime_ = targetDepartureTime_;
          result.expectedArrivalTime_ = expectedArrivalTime_;
          result.numberOfCoaches_ = numberOfCoaches_;
          result.tripStopStatus_ = tripStopStatus_;
          result.transportType_ = transportType_;
          result.wheelchairAccessible_ = wheelchairAccessible_;
          result.isTimingStop_ = isTimingStop_;
          result.stopCode_ = stopCode_;
          result.destination_ = destination_;
          result.linePublicNumber_ = linePublicNumber_;
          result.sideCode_ = sideCode_;
          result.lineDirection_ = lineDirection_;
          result.journeyMessageContent_ = journeyMessageContent_;
          result.lineColor_ = lineColor_;
          result.lineTextColor_ = lineTextColor_;
          result.lineIcon_ = lineIcon_;
          result.destinationColor_ = destinationColor_;
          result.destinationTextColor_ = destinationTextColor_;
          result.destinationIcon_ = destinationIcon_;
          result.generatedTimestamp_ = generatedTimestamp_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter) {
            return mergeFrom((nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter other) {
          if (other == nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.getDefaultInstance()) return this;
          if (other.targetArrivalTime_ != 0) {
            setTargetArrivalTimeValue(other.getTargetArrivalTimeValue());
          }
          if (other.targetDepartureTime_ != 0) {
            setTargetDepartureTimeValue(other.getTargetDepartureTimeValue());
          }
          if (other.expectedArrivalTime_ != 0) {
            setExpectedArrivalTimeValue(other.getExpectedArrivalTimeValue());
          }
          if (other.numberOfCoaches_ != 0) {
            setNumberOfCoachesValue(other.getNumberOfCoachesValue());
          }
          if (other.tripStopStatus_ != 0) {
            setTripStopStatusValue(other.getTripStopStatusValue());
          }
          if (other.transportType_ != 0) {
            setTransportTypeValue(other.getTransportTypeValue());
          }
          if (other.wheelchairAccessible_ != 0) {
            setWheelchairAccessibleValue(other.getWheelchairAccessibleValue());
          }
          if (other.isTimingStop_ != 0) {
            setIsTimingStopValue(other.getIsTimingStopValue());
          }
          if (other.stopCode_ != 0) {
            setStopCodeValue(other.getStopCodeValue());
          }
          if (other.destination_ != 0) {
            setDestinationValue(other.getDestinationValue());
          }
          if (other.linePublicNumber_ != 0) {
            setLinePublicNumberValue(other.getLinePublicNumberValue());
          }
          if (other.sideCode_ != 0) {
            setSideCodeValue(other.getSideCodeValue());
          }
          if (other.lineDirection_ != 0) {
            setLineDirectionValue(other.getLineDirectionValue());
          }
          if (other.journeyMessageContent_ != 0) {
            setJourneyMessageContentValue(other.getJourneyMessageContentValue());
          }
          if (other.lineColor_ != 0) {
            setLineColorValue(other.getLineColorValue());
          }
          if (other.lineTextColor_ != 0) {
            setLineTextColorValue(other.getLineTextColorValue());
          }
          if (other.lineIcon_ != 0) {
            setLineIconValue(other.getLineIconValue());
          }
          if (other.destinationColor_ != 0) {
            setDestinationColorValue(other.getDestinationColorValue());
          }
          if (other.destinationTextColor_ != 0) {
            setDestinationTextColorValue(other.getDestinationTextColorValue());
          }
          if (other.destinationIcon_ != 0) {
            setDestinationIconValue(other.getDestinationIconValue());
          }
          if (other.generatedTimestamp_ != 0) {
            setGeneratedTimestampValue(other.getGeneratedTimestampValue());
          }
          onChanged();
          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 {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }

        private int targetArrivalTime_ = 0;
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery target_arrival_time = 1;</code>
         */
        public int getTargetArrivalTimeValue() {
          return targetArrivalTime_;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery target_arrival_time = 1;</code>
         */
        public Builder setTargetArrivalTimeValue(int value) {
          targetArrivalTime_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery target_arrival_time = 1;</code>
         */
        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getTargetArrivalTime() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(targetArrivalTime_);
          return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery target_arrival_time = 1;</code>
         */
        public Builder setTargetArrivalTime(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          targetArrivalTime_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery target_arrival_time = 1;</code>
         */
        public Builder clearTargetArrivalTime() {
          
          targetArrivalTime_ = 0;
          onChanged();
          return this;
        }

        private int targetDepartureTime_ = 0;
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery target_departure_time = 2;</code>
         */
        public int getTargetDepartureTimeValue() {
          return targetDepartureTime_;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery target_departure_time = 2;</code>
         */
        public Builder setTargetDepartureTimeValue(int value) {
          targetDepartureTime_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery target_departure_time = 2;</code>
         */
        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getTargetDepartureTime() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(targetDepartureTime_);
          return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery target_departure_time = 2;</code>
         */
        public Builder setTargetDepartureTime(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          targetDepartureTime_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery target_departure_time = 2;</code>
         */
        public Builder clearTargetDepartureTime() {
          
          targetDepartureTime_ = 0;
          onChanged();
          return this;
        }

        private int expectedArrivalTime_ = 0;
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery expected_arrival_time = 3;</code>
         */
        public int getExpectedArrivalTimeValue() {
          return expectedArrivalTime_;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery expected_arrival_time = 3;</code>
         */
        public Builder setExpectedArrivalTimeValue(int value) {
          expectedArrivalTime_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery expected_arrival_time = 3;</code>
         */
        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getExpectedArrivalTime() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(expectedArrivalTime_);
          return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery expected_arrival_time = 3;</code>
         */
        public Builder setExpectedArrivalTime(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          expectedArrivalTime_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery expected_arrival_time = 3;</code>
         */
        public Builder clearExpectedArrivalTime() {
          
          expectedArrivalTime_ = 0;
          onChanged();
          return this;
        }

        private int numberOfCoaches_ = 0;
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery number_of_coaches = 4;</code>
         */
        public int getNumberOfCoachesValue() {
          return numberOfCoaches_;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery number_of_coaches = 4;</code>
         */
        public Builder setNumberOfCoachesValue(int value) {
          numberOfCoaches_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery number_of_coaches = 4;</code>
         */
        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getNumberOfCoaches() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(numberOfCoaches_);
          return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery number_of_coaches = 4;</code>
         */
        public Builder setNumberOfCoaches(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          numberOfCoaches_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery number_of_coaches = 4;</code>
         */
        public Builder clearNumberOfCoaches() {
          
          numberOfCoaches_ = 0;
          onChanged();
          return this;
        }

        private int tripStopStatus_ = 0;
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery trip_stop_status = 5;</code>
         */
        public int getTripStopStatusValue() {
          return tripStopStatus_;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery trip_stop_status = 5;</code>
         */
        public Builder setTripStopStatusValue(int value) {
          tripStopStatus_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery trip_stop_status = 5;</code>
         */
        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getTripStopStatus() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(tripStopStatus_);
          return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery trip_stop_status = 5;</code>
         */
        public Builder setTripStopStatus(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          tripStopStatus_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery trip_stop_status = 5;</code>
         */
        public Builder clearTripStopStatus() {
          
          tripStopStatus_ = 0;
          onChanged();
          return this;
        }

        private int transportType_ = 0;
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery transport_type = 6;</code>
         */
        public int getTransportTypeValue() {
          return transportType_;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery transport_type = 6;</code>
         */
        public Builder setTransportTypeValue(int value) {
          transportType_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery transport_type = 6;</code>
         */
        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getTransportType() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(transportType_);
          return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery transport_type = 6;</code>
         */
        public Builder setTransportType(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          transportType_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery transport_type = 6;</code>
         */
        public Builder clearTransportType() {
          
          transportType_ = 0;
          onChanged();
          return this;
        }

        private int wheelchairAccessible_ = 0;
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery wheelchair_accessible = 7;</code>
         */
        public int getWheelchairAccessibleValue() {
          return wheelchairAccessible_;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery wheelchair_accessible = 7;</code>
         */
        public Builder setWheelchairAccessibleValue(int value) {
          wheelchairAccessible_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery wheelchair_accessible = 7;</code>
         */
        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getWheelchairAccessible() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(wheelchairAccessible_);
          return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery wheelchair_accessible = 7;</code>
         */
        public Builder setWheelchairAccessible(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          wheelchairAccessible_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery wheelchair_accessible = 7;</code>
         */
        public Builder clearWheelchairAccessible() {
          
          wheelchairAccessible_ = 0;
          onChanged();
          return this;
        }

        private int isTimingStop_ = 0;
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery is_timing_stop = 8;</code>
         */
        public int getIsTimingStopValue() {
          return isTimingStop_;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery is_timing_stop = 8;</code>
         */
        public Builder setIsTimingStopValue(int value) {
          isTimingStop_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery is_timing_stop = 8;</code>
         */
        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getIsTimingStop() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(isTimingStop_);
          return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery is_timing_stop = 8;</code>
         */
        public Builder setIsTimingStop(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          isTimingStop_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery is_timing_stop = 8;</code>
         */
        public Builder clearIsTimingStop() {
          
          isTimingStop_ = 0;
          onChanged();
          return this;
        }

        private int stopCode_ = 0;
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery stop_code = 9;</code>
         */
        public int getStopCodeValue() {
          return stopCode_;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery stop_code = 9;</code>
         */
        public Builder setStopCodeValue(int value) {
          stopCode_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery stop_code = 9;</code>
         */
        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getStopCode() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(stopCode_);
          return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery stop_code = 9;</code>
         */
        public Builder setStopCode(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          stopCode_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery stop_code = 9;</code>
         */
        public Builder clearStopCode() {
          
          stopCode_ = 0;
          onChanged();
          return this;
        }

        private int destination_ = 0;
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery destination = 10;</code>
         */
        public int getDestinationValue() {
          return destination_;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery destination = 10;</code>
         */
        public Builder setDestinationValue(int value) {
          destination_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery destination = 10;</code>
         */
        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getDestination() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(destination_);
          return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery destination = 10;</code>
         */
        public Builder setDestination(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          destination_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery destination = 10;</code>
         */
        public Builder clearDestination() {
          
          destination_ = 0;
          onChanged();
          return this;
        }

        private int linePublicNumber_ = 0;
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_public_number = 11;</code>
         */
        public int getLinePublicNumberValue() {
          return linePublicNumber_;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_public_number = 11;</code>
         */
        public Builder setLinePublicNumberValue(int value) {
          linePublicNumber_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_public_number = 11;</code>
         */
        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getLinePublicNumber() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(linePublicNumber_);
          return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_public_number = 11;</code>
         */
        public Builder setLinePublicNumber(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          linePublicNumber_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_public_number = 11;</code>
         */
        public Builder clearLinePublicNumber() {
          
          linePublicNumber_ = 0;
          onChanged();
          return this;
        }

        private int sideCode_ = 0;
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery side_code = 12;</code>
         */
        public int getSideCodeValue() {
          return sideCode_;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery side_code = 12;</code>
         */
        public Builder setSideCodeValue(int value) {
          sideCode_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery side_code = 12;</code>
         */
        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getSideCode() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(sideCode_);
          return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery side_code = 12;</code>
         */
        public Builder setSideCode(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          sideCode_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery side_code = 12;</code>
         */
        public Builder clearSideCode() {
          
          sideCode_ = 0;
          onChanged();
          return this;
        }

        private int lineDirection_ = 0;
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_direction = 13;</code>
         */
        public int getLineDirectionValue() {
          return lineDirection_;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_direction = 13;</code>
         */
        public Builder setLineDirectionValue(int value) {
          lineDirection_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_direction = 13;</code>
         */
        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getLineDirection() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(lineDirection_);
          return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_direction = 13;</code>
         */
        public Builder setLineDirection(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          lineDirection_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_direction = 13;</code>
         */
        public Builder clearLineDirection() {
          
          lineDirection_ = 0;
          onChanged();
          return this;
        }

        private int journeyMessageContent_ = 0;
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery journey_message_content = 14;</code>
         */
        public int getJourneyMessageContentValue() {
          return journeyMessageContent_;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery journey_message_content = 14;</code>
         */
        public Builder setJourneyMessageContentValue(int value) {
          journeyMessageContent_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery journey_message_content = 14;</code>
         */
        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getJourneyMessageContent() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(journeyMessageContent_);
          return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery journey_message_content = 14;</code>
         */
        public Builder setJourneyMessageContent(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          journeyMessageContent_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery journey_message_content = 14;</code>
         */
        public Builder clearJourneyMessageContent() {
          
          journeyMessageContent_ = 0;
          onChanged();
          return this;
        }

        private int lineColor_ = 0;
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_color = 15;</code>
         */
        public int getLineColorValue() {
          return lineColor_;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_color = 15;</code>
         */
        public Builder setLineColorValue(int value) {
          lineColor_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_color = 15;</code>
         */
        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getLineColor() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(lineColor_);
          return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_color = 15;</code>
         */
        public Builder setLineColor(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          lineColor_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_color = 15;</code>
         */
        public Builder clearLineColor() {
          
          lineColor_ = 0;
          onChanged();
          return this;
        }

        private int lineTextColor_ = 0;
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_text_color = 16;</code>
         */
        public int getLineTextColorValue() {
          return lineTextColor_;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_text_color = 16;</code>
         */
        public Builder setLineTextColorValue(int value) {
          lineTextColor_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_text_color = 16;</code>
         */
        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getLineTextColor() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(lineTextColor_);
          return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_text_color = 16;</code>
         */
        public Builder setLineTextColor(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          lineTextColor_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_text_color = 16;</code>
         */
        public Builder clearLineTextColor() {
          
          lineTextColor_ = 0;
          onChanged();
          return this;
        }

        private int lineIcon_ = 0;
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_icon = 17;</code>
         */
        public int getLineIconValue() {
          return lineIcon_;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_icon = 17;</code>
         */
        public Builder setLineIconValue(int value) {
          lineIcon_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_icon = 17;</code>
         */
        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getLineIcon() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(lineIcon_);
          return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_icon = 17;</code>
         */
        public Builder setLineIcon(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          lineIcon_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery line_icon = 17;</code>
         */
        public Builder clearLineIcon() {
          
          lineIcon_ = 0;
          onChanged();
          return this;
        }

        private int destinationColor_ = 0;
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_color = 18;</code>
         */
        public int getDestinationColorValue() {
          return destinationColor_;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_color = 18;</code>
         */
        public Builder setDestinationColorValue(int value) {
          destinationColor_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_color = 18;</code>
         */
        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getDestinationColor() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(destinationColor_);
          return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_color = 18;</code>
         */
        public Builder setDestinationColor(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          destinationColor_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_color = 18;</code>
         */
        public Builder clearDestinationColor() {
          
          destinationColor_ = 0;
          onChanged();
          return this;
        }

        private int destinationTextColor_ = 0;
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_text_color = 19;</code>
         */
        public int getDestinationTextColorValue() {
          return destinationTextColor_;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_text_color = 19;</code>
         */
        public Builder setDestinationTextColorValue(int value) {
          destinationTextColor_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_text_color = 19;</code>
         */
        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getDestinationTextColor() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(destinationTextColor_);
          return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_text_color = 19;</code>
         */
        public Builder setDestinationTextColor(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          destinationTextColor_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_text_color = 19;</code>
         */
        public Builder clearDestinationTextColor() {
          
          destinationTextColor_ = 0;
          onChanged();
          return this;
        }

        private int destinationIcon_ = 0;
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_icon = 20;</code>
         */
        public int getDestinationIconValue() {
          return destinationIcon_;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_icon = 20;</code>
         */
        public Builder setDestinationIconValue(int value) {
          destinationIcon_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_icon = 20;</code>
         */
        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getDestinationIcon() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(destinationIcon_);
          return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_icon = 20;</code>
         */
        public Builder setDestinationIcon(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          destinationIcon_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery destination_icon = 20;</code>
         */
        public Builder clearDestinationIcon() {
          
          destinationIcon_ = 0;
          onChanged();
          return this;
        }

        private int generatedTimestamp_ = 0;
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery generated_timestamp = 21;</code>
         */
        public int getGeneratedTimestampValue() {
          return generatedTimestamp_;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery generated_timestamp = 21;</code>
         */
        public Builder setGeneratedTimestampValue(int value) {
          generatedTimestamp_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery generated_timestamp = 21;</code>
         */
        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery getGeneratedTimestamp() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.valueOf(generatedTimestamp_);
          return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery.UNRECOGNIZED : result;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery generated_timestamp = 21;</code>
         */
        public Builder setGeneratedTimestamp(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Delivery value) {
          if (value == null) {
            throw new NullPointerException();
          }
          
          generatedTimestamp_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>.display_direct.Subscribe.FieldFilter.Delivery generated_timestamp = 21;</code>
         */
        public Builder clearGeneratedTimestamp() {
          
          generatedTimestamp_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return this;
        }

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


        // @@protoc_insertion_point(builder_scope:display_direct.Subscribe.FieldFilter)
      }

      // @@protoc_insertion_point(class_scope:display_direct.Subscribe.FieldFilter)
      private static final nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter();
      }

      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int STOP_CODE_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList stopCode_;
    /**
     * <code>repeated string stop_code = 1;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getStopCodeList() {
      return stopCode_;
    }
    /**
     * <code>repeated string stop_code = 1;</code>
     */
    public int getStopCodeCount() {
      return stopCode_.size();
    }
    /**
     * <code>repeated string stop_code = 1;</code>
     */
    public java.lang.String getStopCode(int index) {
      return stopCode_.get(index);
    }
    /**
     * <code>repeated string stop_code = 1;</code>
     */
    public com.google.protobuf.ByteString
        getStopCodeBytes(int index) {
      return stopCode_.getByteString(index);
    }

    public static final int DISPLAY_PROPERTIES_FIELD_NUMBER = 2;
    private nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties displayProperties_;
    /**
     * <code>.display_direct.Subscribe.DisplayProperties display_properties = 2;</code>
     */
    public boolean hasDisplayProperties() {
      return displayProperties_ != null;
    }
    /**
     * <code>.display_direct.Subscribe.DisplayProperties display_properties = 2;</code>
     */
    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties getDisplayProperties() {
      return displayProperties_ == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties.getDefaultInstance() : displayProperties_;
    }
    /**
     * <code>.display_direct.Subscribe.DisplayProperties display_properties = 2;</code>
     */
    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayPropertiesOrBuilder getDisplayPropertiesOrBuilder() {
      return getDisplayProperties();
    }

    public static final int FIELD_FILTER_FIELD_NUMBER = 3;
    private nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter fieldFilter_;
    /**
     * <code>.display_direct.Subscribe.FieldFilter field_filter = 3;</code>
     */
    public boolean hasFieldFilter() {
      return fieldFilter_ != null;
    }
    /**
     * <code>.display_direct.Subscribe.FieldFilter field_filter = 3;</code>
     */
    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter getFieldFilter() {
      return fieldFilter_ == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.getDefaultInstance() : fieldFilter_;
    }
    /**
     * <code>.display_direct.Subscribe.FieldFilter field_filter = 3;</code>
     */
    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilterOrBuilder getFieldFilterOrBuilder() {
      return getFieldFilter();
    }

    public static final int DESCRIPTION_FIELD_NUMBER = 4;
    private volatile java.lang.Object description_;
    /**
     * <code>string description = 4;</code>
     */
    public java.lang.String getDescription() {
      java.lang.Object ref = description_;
      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();
        description_ = s;
        return s;
      }
    }
    /**
     * <code>string description = 4;</code>
     */
    public com.google.protobuf.ByteString
        getDescriptionBytes() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        description_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EMAIL_FIELD_NUMBER = 5;
    private volatile java.lang.Object email_;
    /**
     * <code>string email = 5;</code>
     */
    public java.lang.String getEmail() {
      java.lang.Object ref = email_;
      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();
        email_ = s;
        return s;
      }
    }
    /**
     * <code>string email = 5;</code>
     */
    public com.google.protobuf.ByteString
        getEmailBytes() {
      java.lang.Object ref = email_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        email_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < stopCode_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, stopCode_.getRaw(i));
      }
      if (displayProperties_ != null) {
        output.writeMessage(2, getDisplayProperties());
      }
      if (fieldFilter_ != null) {
        output.writeMessage(3, getFieldFilter());
      }
      if (!getDescriptionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, description_);
      }
      if (!getEmailBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, email_);
      }
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < stopCode_.size(); i++) {
          dataSize += computeStringSizeNoTag(stopCode_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getStopCodeList().size();
      }
      if (displayProperties_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getDisplayProperties());
      }
      if (fieldFilter_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getFieldFilter());
      }
      if (!getDescriptionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, description_);
      }
      if (!getEmailBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, email_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe)) {
        return super.equals(obj);
      }
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe other = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe) obj;

      boolean result = true;
      result = result && getStopCodeList()
          .equals(other.getStopCodeList());
      result = result && (hasDisplayProperties() == other.hasDisplayProperties());
      if (hasDisplayProperties()) {
        result = result && getDisplayProperties()
            .equals(other.getDisplayProperties());
      }
      result = result && (hasFieldFilter() == other.hasFieldFilter());
      if (hasFieldFilter()) {
        result = result && getFieldFilter()
            .equals(other.getFieldFilter());
      }
      result = result && getDescription()
          .equals(other.getDescription());
      result = result && getEmail()
          .equals(other.getEmail());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getStopCodeCount() > 0) {
        hash = (37 * hash) + STOP_CODE_FIELD_NUMBER;
        hash = (53 * hash) + getStopCodeList().hashCode();
      }
      if (hasDisplayProperties()) {
        hash = (37 * hash) + DISPLAY_PROPERTIES_FIELD_NUMBER;
        hash = (53 * hash) + getDisplayProperties().hashCode();
      }
      if (hasFieldFilter()) {
        hash = (37 * hash) + FIELD_FILTER_FIELD_NUMBER;
        hash = (53 * hash) + getFieldFilter().hashCode();
      }
      hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
      hash = (53 * hash) + getDescription().hashCode();
      hash = (37 * hash) + EMAIL_FIELD_NUMBER;
      hash = (53 * hash) + getEmail().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * aanmelden
     * </pre>
     *
     * Protobuf type {@code display_direct.Subscribe}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:display_direct.Subscribe)
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscribeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Subscribe_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Subscribe_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.Builder.class);
      }

      // Construct using nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        stopCode_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (displayPropertiesBuilder_ == null) {
          displayProperties_ = null;
        } else {
          displayProperties_ = null;
          displayPropertiesBuilder_ = null;
        }
        if (fieldFilterBuilder_ == null) {
          fieldFilter_ = null;
        } else {
          fieldFilter_ = null;
          fieldFilterBuilder_ = null;
        }
        description_ = "";

        email_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Subscribe_descriptor;
      }

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe getDefaultInstanceForType() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.getDefaultInstance();
      }

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe build() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe buildPartial() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe result = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          stopCode_ = stopCode_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.stopCode_ = stopCode_;
        if (displayPropertiesBuilder_ == null) {
          result.displayProperties_ = displayProperties_;
        } else {
          result.displayProperties_ = displayPropertiesBuilder_.build();
        }
        if (fieldFilterBuilder_ == null) {
          result.fieldFilter_ = fieldFilter_;
        } else {
          result.fieldFilter_ = fieldFilterBuilder_.build();
        }
        result.description_ = description_;
        result.email_ = email_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe) {
          return mergeFrom((nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe other) {
        if (other == nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.getDefaultInstance()) return this;
        if (!other.stopCode_.isEmpty()) {
          if (stopCode_.isEmpty()) {
            stopCode_ = other.stopCode_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureStopCodeIsMutable();
            stopCode_.addAll(other.stopCode_);
          }
          onChanged();
        }
        if (other.hasDisplayProperties()) {
          mergeDisplayProperties(other.getDisplayProperties());
        }
        if (other.hasFieldFilter()) {
          mergeFieldFilter(other.getFieldFilter());
        }
        if (!other.getDescription().isEmpty()) {
          description_ = other.description_;
          onChanged();
        }
        if (!other.getEmail().isEmpty()) {
          email_ = other.email_;
          onChanged();
        }
        onChanged();
        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 {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList stopCode_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureStopCodeIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          stopCode_ = new com.google.protobuf.LazyStringArrayList(stopCode_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated string stop_code = 1;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getStopCodeList() {
        return stopCode_.getUnmodifiableView();
      }
      /**
       * <code>repeated string stop_code = 1;</code>
       */
      public int getStopCodeCount() {
        return stopCode_.size();
      }
      /**
       * <code>repeated string stop_code = 1;</code>
       */
      public java.lang.String getStopCode(int index) {
        return stopCode_.get(index);
      }
      /**
       * <code>repeated string stop_code = 1;</code>
       */
      public com.google.protobuf.ByteString
          getStopCodeBytes(int index) {
        return stopCode_.getByteString(index);
      }
      /**
       * <code>repeated string stop_code = 1;</code>
       */
      public Builder setStopCode(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStopCodeIsMutable();
        stopCode_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string stop_code = 1;</code>
       */
      public Builder addStopCode(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStopCodeIsMutable();
        stopCode_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string stop_code = 1;</code>
       */
      public Builder addAllStopCode(
          java.lang.Iterable<java.lang.String> values) {
        ensureStopCodeIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, stopCode_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string stop_code = 1;</code>
       */
      public Builder clearStopCode() {
        stopCode_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string stop_code = 1;</code>
       */
      public Builder addStopCodeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureStopCodeIsMutable();
        stopCode_.add(value);
        onChanged();
        return this;
      }

      private nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties displayProperties_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties.Builder, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayPropertiesOrBuilder> displayPropertiesBuilder_;
      /**
       * <code>.display_direct.Subscribe.DisplayProperties display_properties = 2;</code>
       */
      public boolean hasDisplayProperties() {
        return displayPropertiesBuilder_ != null || displayProperties_ != null;
      }
      /**
       * <code>.display_direct.Subscribe.DisplayProperties display_properties = 2;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties getDisplayProperties() {
        if (displayPropertiesBuilder_ == null) {
          return displayProperties_ == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties.getDefaultInstance() : displayProperties_;
        } else {
          return displayPropertiesBuilder_.getMessage();
        }
      }
      /**
       * <code>.display_direct.Subscribe.DisplayProperties display_properties = 2;</code>
       */
      public Builder setDisplayProperties(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties value) {
        if (displayPropertiesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          displayProperties_ = value;
          onChanged();
        } else {
          displayPropertiesBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.display_direct.Subscribe.DisplayProperties display_properties = 2;</code>
       */
      public Builder setDisplayProperties(
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties.Builder builderForValue) {
        if (displayPropertiesBuilder_ == null) {
          displayProperties_ = builderForValue.build();
          onChanged();
        } else {
          displayPropertiesBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.display_direct.Subscribe.DisplayProperties display_properties = 2;</code>
       */
      public Builder mergeDisplayProperties(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties value) {
        if (displayPropertiesBuilder_ == null) {
          if (displayProperties_ != null) {
            displayProperties_ =
              nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties.newBuilder(displayProperties_).mergeFrom(value).buildPartial();
          } else {
            displayProperties_ = value;
          }
          onChanged();
        } else {
          displayPropertiesBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.display_direct.Subscribe.DisplayProperties display_properties = 2;</code>
       */
      public Builder clearDisplayProperties() {
        if (displayPropertiesBuilder_ == null) {
          displayProperties_ = null;
          onChanged();
        } else {
          displayProperties_ = null;
          displayPropertiesBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.display_direct.Subscribe.DisplayProperties display_properties = 2;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties.Builder getDisplayPropertiesBuilder() {
        
        onChanged();
        return getDisplayPropertiesFieldBuilder().getBuilder();
      }
      /**
       * <code>.display_direct.Subscribe.DisplayProperties display_properties = 2;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayPropertiesOrBuilder getDisplayPropertiesOrBuilder() {
        if (displayPropertiesBuilder_ != null) {
          return displayPropertiesBuilder_.getMessageOrBuilder();
        } else {
          return displayProperties_ == null ?
              nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties.getDefaultInstance() : displayProperties_;
        }
      }
      /**
       * <code>.display_direct.Subscribe.DisplayProperties display_properties = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties.Builder, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayPropertiesOrBuilder> 
          getDisplayPropertiesFieldBuilder() {
        if (displayPropertiesBuilder_ == null) {
          displayPropertiesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayProperties.Builder, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.DisplayPropertiesOrBuilder>(
                  getDisplayProperties(),
                  getParentForChildren(),
                  isClean());
          displayProperties_ = null;
        }
        return displayPropertiesBuilder_;
      }

      private nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter fieldFilter_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Builder, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilterOrBuilder> fieldFilterBuilder_;
      /**
       * <code>.display_direct.Subscribe.FieldFilter field_filter = 3;</code>
       */
      public boolean hasFieldFilter() {
        return fieldFilterBuilder_ != null || fieldFilter_ != null;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter field_filter = 3;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter getFieldFilter() {
        if (fieldFilterBuilder_ == null) {
          return fieldFilter_ == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.getDefaultInstance() : fieldFilter_;
        } else {
          return fieldFilterBuilder_.getMessage();
        }
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter field_filter = 3;</code>
       */
      public Builder setFieldFilter(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter value) {
        if (fieldFilterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          fieldFilter_ = value;
          onChanged();
        } else {
          fieldFilterBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter field_filter = 3;</code>
       */
      public Builder setFieldFilter(
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Builder builderForValue) {
        if (fieldFilterBuilder_ == null) {
          fieldFilter_ = builderForValue.build();
          onChanged();
        } else {
          fieldFilterBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter field_filter = 3;</code>
       */
      public Builder mergeFieldFilter(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter value) {
        if (fieldFilterBuilder_ == null) {
          if (fieldFilter_ != null) {
            fieldFilter_ =
              nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.newBuilder(fieldFilter_).mergeFrom(value).buildPartial();
          } else {
            fieldFilter_ = value;
          }
          onChanged();
        } else {
          fieldFilterBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter field_filter = 3;</code>
       */
      public Builder clearFieldFilter() {
        if (fieldFilterBuilder_ == null) {
          fieldFilter_ = null;
          onChanged();
        } else {
          fieldFilter_ = null;
          fieldFilterBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter field_filter = 3;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Builder getFieldFilterBuilder() {
        
        onChanged();
        return getFieldFilterFieldBuilder().getBuilder();
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter field_filter = 3;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilterOrBuilder getFieldFilterOrBuilder() {
        if (fieldFilterBuilder_ != null) {
          return fieldFilterBuilder_.getMessageOrBuilder();
        } else {
          return fieldFilter_ == null ?
              nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.getDefaultInstance() : fieldFilter_;
        }
      }
      /**
       * <code>.display_direct.Subscribe.FieldFilter field_filter = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Builder, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilterOrBuilder> 
          getFieldFilterFieldBuilder() {
        if (fieldFilterBuilder_ == null) {
          fieldFilterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilter.Builder, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe.FieldFilterOrBuilder>(
                  getFieldFilter(),
                  getParentForChildren(),
                  isClean());
          fieldFilter_ = null;
        }
        return fieldFilterBuilder_;
      }

      private java.lang.Object description_ = "";
      /**
       * <code>string description = 4;</code>
       */
      public java.lang.String getDescription() {
        java.lang.Object ref = description_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          description_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string description = 4;</code>
       */
      public com.google.protobuf.ByteString
          getDescriptionBytes() {
        java.lang.Object ref = description_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          description_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string description = 4;</code>
       */
      public Builder setDescription(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        description_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string description = 4;</code>
       */
      public Builder clearDescription() {
        
        description_ = getDefaultInstance().getDescription();
        onChanged();
        return this;
      }
      /**
       * <code>string description = 4;</code>
       */
      public Builder setDescriptionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        description_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object email_ = "";
      /**
       * <code>string email = 5;</code>
       */
      public java.lang.String getEmail() {
        java.lang.Object ref = email_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          email_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string email = 5;</code>
       */
      public com.google.protobuf.ByteString
          getEmailBytes() {
        java.lang.Object ref = email_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          email_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string email = 5;</code>
       */
      public Builder setEmail(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        email_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string email = 5;</code>
       */
      public Builder clearEmail() {
        
        email_ = getDefaultInstance().getEmail();
        onChanged();
        return this;
      }
      /**
       * <code>string email = 5;</code>
       */
      public Builder setEmailBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        email_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:display_direct.Subscribe)
    }

    // @@protoc_insertion_point(class_scope:display_direct.Subscribe)
    private static final nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe();
    }

    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Subscribe getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UnsubscribeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:display_direct.Unsubscribe)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Last-will is not permament
     * </pre>
     *
     * <code>bool is_permanent = 1;</code>
     */
    boolean getIsPermanent();

    /**
     * <code>uint32 timestamp = 2;</code>
     */
    int getTimestamp();
  }
  /**
   * Protobuf type {@code display_direct.Unsubscribe}
   */
  public  static final class Unsubscribe extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:display_direct.Unsubscribe)
      UnsubscribeOrBuilder {
    // Use Unsubscribe.newBuilder() to construct.
    private Unsubscribe(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Unsubscribe() {
      isPermanent_ = false;
      timestamp_ = 0;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private Unsubscribe(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 8: {

              isPermanent_ = input.readBool();
              break;
            }
            case 16: {

              timestamp_ = input.readUInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Unsubscribe_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Unsubscribe_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe.Builder.class);
    }

    public static final int IS_PERMANENT_FIELD_NUMBER = 1;
    private boolean isPermanent_;
    /**
     * <pre>
     * Last-will is not permament
     * </pre>
     *
     * <code>bool is_permanent = 1;</code>
     */
    public boolean getIsPermanent() {
      return isPermanent_;
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 2;
    private int timestamp_;
    /**
     * <code>uint32 timestamp = 2;</code>
     */
    public int getTimestamp() {
      return timestamp_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (isPermanent_ != false) {
        output.writeBool(1, isPermanent_);
      }
      if (timestamp_ != 0) {
        output.writeUInt32(2, timestamp_);
      }
    }

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

      size = 0;
      if (isPermanent_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, isPermanent_);
      }
      if (timestamp_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, timestamp_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe)) {
        return super.equals(obj);
      }
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe other = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe) obj;

      boolean result = true;
      result = result && (getIsPermanent()
          == other.getIsPermanent());
      result = result && (getTimestamp()
          == other.getTimestamp());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + IS_PERMANENT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsPermanent());
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + getTimestamp();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code display_direct.Unsubscribe}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:display_direct.Unsubscribe)
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.UnsubscribeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Unsubscribe_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Unsubscribe_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe.Builder.class);
      }

      // Construct using nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        isPermanent_ = false;

        timestamp_ = 0;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Unsubscribe_descriptor;
      }

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe getDefaultInstanceForType() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe.getDefaultInstance();
      }

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe build() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe buildPartial() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe result = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe(this);
        result.isPermanent_ = isPermanent_;
        result.timestamp_ = timestamp_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe) {
          return mergeFrom((nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe other) {
        if (other == nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe.getDefaultInstance()) return this;
        if (other.getIsPermanent() != false) {
          setIsPermanent(other.getIsPermanent());
        }
        if (other.getTimestamp() != 0) {
          setTimestamp(other.getTimestamp());
        }
        onChanged();
        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 {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private boolean isPermanent_ ;
      /**
       * <pre>
       * Last-will is not permament
       * </pre>
       *
       * <code>bool is_permanent = 1;</code>
       */
      public boolean getIsPermanent() {
        return isPermanent_;
      }
      /**
       * <pre>
       * Last-will is not permament
       * </pre>
       *
       * <code>bool is_permanent = 1;</code>
       */
      public Builder setIsPermanent(boolean value) {
        
        isPermanent_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Last-will is not permament
       * </pre>
       *
       * <code>bool is_permanent = 1;</code>
       */
      public Builder clearIsPermanent() {
        
        isPermanent_ = false;
        onChanged();
        return this;
      }

      private int timestamp_ ;
      /**
       * <code>uint32 timestamp = 2;</code>
       */
      public int getTimestamp() {
        return timestamp_;
      }
      /**
       * <code>uint32 timestamp = 2;</code>
       */
      public Builder setTimestamp(int value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 timestamp = 2;</code>
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:display_direct.Unsubscribe)
    }

    // @@protoc_insertion_point(class_scope:display_direct.Unsubscribe)
    private static final nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe();
    }

    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Unsubscribe getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SubscriptionResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:display_direct.SubscriptionResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>bool success = 1;</code>
     */
    boolean getSuccess();

    /**
     * <code>.display_direct.SubscriptionResponse.Status status = 2;</code>
     */
    int getStatusValue();
    /**
     * <code>.display_direct.SubscriptionResponse.Status status = 2;</code>
     */
    nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse.Status getStatus();

    /**
     * <code>uint32 timestamp = 3;</code>
     */
    int getTimestamp();
  }
  /**
   * Protobuf type {@code display_direct.SubscriptionResponse}
   */
  public  static final class SubscriptionResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:display_direct.SubscriptionResponse)
      SubscriptionResponseOrBuilder {
    // Use SubscriptionResponse.newBuilder() to construct.
    private SubscriptionResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SubscriptionResponse() {
      success_ = false;
      status_ = 0;
      timestamp_ = 0;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private SubscriptionResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 8: {

              success_ = input.readBool();
              break;
            }
            case 16: {
              int rawValue = input.readEnum();

              status_ = rawValue;
              break;
            }
            case 24: {

              timestamp_ = input.readUInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_SubscriptionResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_SubscriptionResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code display_direct.SubscriptionResponse.Status}
     */
    public enum Status
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>REQUEST_INVALID = 0;</code>
       */
      REQUEST_INVALID(0),
      /**
       * <code>STOP_INVALID = 1;</code>
       */
      STOP_INVALID(1),
      /**
       * <code>AUTHORISATION_REQUIRED = 11;</code>
       */
      AUTHORISATION_REQUIRED(11),
      /**
       * <pre>
       * Successfull
       * </pre>
       *
       * <code>PLANNING_SENT = 20;</code>
       */
      PLANNING_SENT(20),
      /**
       * <pre>
       * Successfull, but no messages to send
       * </pre>
       *
       * <code>NO_PLANNING = 21;</code>
       */
      NO_PLANNING(21),
      /**
       * <code>AUTHORISATION_VALIDATED = 22;</code>
       */
      AUTHORISATION_VALIDATED(22),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>REQUEST_INVALID = 0;</code>
       */
      public static final int REQUEST_INVALID_VALUE = 0;
      /**
       * <code>STOP_INVALID = 1;</code>
       */
      public static final int STOP_INVALID_VALUE = 1;
      /**
       * <code>AUTHORISATION_REQUIRED = 11;</code>
       */
      public static final int AUTHORISATION_REQUIRED_VALUE = 11;
      /**
       * <pre>
       * Successfull
       * </pre>
       *
       * <code>PLANNING_SENT = 20;</code>
       */
      public static final int PLANNING_SENT_VALUE = 20;
      /**
       * <pre>
       * Successfull, but no messages to send
       * </pre>
       *
       * <code>NO_PLANNING = 21;</code>
       */
      public static final int NO_PLANNING_VALUE = 21;
      /**
       * <code>AUTHORISATION_VALIDATED = 22;</code>
       */
      public static final int AUTHORISATION_VALIDATED_VALUE = 22;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Status valueOf(int value) {
        return forNumber(value);
      }

      public static Status forNumber(int value) {
        switch (value) {
          case 0: return REQUEST_INVALID;
          case 1: return STOP_INVALID;
          case 11: return AUTHORISATION_REQUIRED;
          case 20: return PLANNING_SENT;
          case 21: return NO_PLANNING;
          case 22: return AUTHORISATION_VALIDATED;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:display_direct.SubscriptionResponse.Status)
    }

    public static final int SUCCESS_FIELD_NUMBER = 1;
    private boolean success_;
    /**
     * <code>bool success = 1;</code>
     */
    public boolean getSuccess() {
      return success_;
    }

    public static final int STATUS_FIELD_NUMBER = 2;
    private int status_;
    /**
     * <code>.display_direct.SubscriptionResponse.Status status = 2;</code>
     */
    public int getStatusValue() {
      return status_;
    }
    /**
     * <code>.display_direct.SubscriptionResponse.Status status = 2;</code>
     */
    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse.Status getStatus() {
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse.Status result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse.Status.valueOf(status_);
      return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse.Status.UNRECOGNIZED : result;
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 3;
    private int timestamp_;
    /**
     * <code>uint32 timestamp = 3;</code>
     */
    public int getTimestamp() {
      return timestamp_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (success_ != false) {
        output.writeBool(1, success_);
      }
      if (status_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse.Status.REQUEST_INVALID.getNumber()) {
        output.writeEnum(2, status_);
      }
      if (timestamp_ != 0) {
        output.writeUInt32(3, timestamp_);
      }
    }

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

      size = 0;
      if (success_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, success_);
      }
      if (status_ != nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse.Status.REQUEST_INVALID.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, status_);
      }
      if (timestamp_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, timestamp_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse)) {
        return super.equals(obj);
      }
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse other = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse) obj;

      boolean result = true;
      result = result && (getSuccess()
          == other.getSuccess());
      result = result && status_ == other.status_;
      result = result && (getTimestamp()
          == other.getTimestamp());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SUCCESS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getSuccess());
      hash = (37 * hash) + STATUS_FIELD_NUMBER;
      hash = (53 * hash) + status_;
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + getTimestamp();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code display_direct.SubscriptionResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:display_direct.SubscriptionResponse)
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_SubscriptionResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_SubscriptionResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse.Builder.class);
      }

      // Construct using nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        success_ = false;

        status_ = 0;

        timestamp_ = 0;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_SubscriptionResponse_descriptor;
      }

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse getDefaultInstanceForType() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse.getDefaultInstance();
      }

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse build() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse buildPartial() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse result = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse(this);
        result.success_ = success_;
        result.status_ = status_;
        result.timestamp_ = timestamp_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse) {
          return mergeFrom((nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse other) {
        if (other == nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse.getDefaultInstance()) return this;
        if (other.getSuccess() != false) {
          setSuccess(other.getSuccess());
        }
        if (other.status_ != 0) {
          setStatusValue(other.getStatusValue());
        }
        if (other.getTimestamp() != 0) {
          setTimestamp(other.getTimestamp());
        }
        onChanged();
        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 {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private boolean success_ ;
      /**
       * <code>bool success = 1;</code>
       */
      public boolean getSuccess() {
        return success_;
      }
      /**
       * <code>bool success = 1;</code>
       */
      public Builder setSuccess(boolean value) {
        
        success_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool success = 1;</code>
       */
      public Builder clearSuccess() {
        
        success_ = false;
        onChanged();
        return this;
      }

      private int status_ = 0;
      /**
       * <code>.display_direct.SubscriptionResponse.Status status = 2;</code>
       */
      public int getStatusValue() {
        return status_;
      }
      /**
       * <code>.display_direct.SubscriptionResponse.Status status = 2;</code>
       */
      public Builder setStatusValue(int value) {
        status_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.display_direct.SubscriptionResponse.Status status = 2;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse.Status getStatus() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse.Status result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse.Status.valueOf(status_);
        return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse.Status.UNRECOGNIZED : result;
      }
      /**
       * <code>.display_direct.SubscriptionResponse.Status status = 2;</code>
       */
      public Builder setStatus(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse.Status value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        status_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.display_direct.SubscriptionResponse.Status status = 2;</code>
       */
      public Builder clearStatus() {
        
        status_ = 0;
        onChanged();
        return this;
      }

      private int timestamp_ ;
      /**
       * <code>uint32 timestamp = 3;</code>
       */
      public int getTimestamp() {
        return timestamp_;
      }
      /**
       * <code>uint32 timestamp = 3;</code>
       */
      public Builder setTimestamp(int value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 timestamp = 3;</code>
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:display_direct.SubscriptionResponse)
    }

    // @@protoc_insertion_point(class_scope:display_direct.SubscriptionResponse)
    private static final nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse();
    }

    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.SubscriptionResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PassingTimesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:display_direct.PassingTimes)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated uint32 pass_time_hash = 1;</code>
     */
    java.util.List<java.lang.Integer> getPassTimeHashList();
    /**
     * <code>repeated uint32 pass_time_hash = 1;</code>
     */
    int getPassTimeHashCount();
    /**
     * <code>repeated uint32 pass_time_hash = 1;</code>
     */
    int getPassTimeHash(int index);

    /**
     * <code>repeated uint32 target_arrival_time = 2;</code>
     */
    java.util.List<java.lang.Integer> getTargetArrivalTimeList();
    /**
     * <code>repeated uint32 target_arrival_time = 2;</code>
     */
    int getTargetArrivalTimeCount();
    /**
     * <code>repeated uint32 target_arrival_time = 2;</code>
     */
    int getTargetArrivalTime(int index);

    /**
     * <code>repeated uint32 target_departure_time = 3;</code>
     */
    java.util.List<java.lang.Integer> getTargetDepartureTimeList();
    /**
     * <code>repeated uint32 target_departure_time = 3;</code>
     */
    int getTargetDepartureTimeCount();
    /**
     * <code>repeated uint32 target_departure_time = 3;</code>
     */
    int getTargetDepartureTime(int index);

    /**
     * <code>repeated uint32 expected_arrival_time = 4;</code>
     */
    java.util.List<java.lang.Integer> getExpectedArrivalTimeList();
    /**
     * <code>repeated uint32 expected_arrival_time = 4;</code>
     */
    int getExpectedArrivalTimeCount();
    /**
     * <code>repeated uint32 expected_arrival_time = 4;</code>
     */
    int getExpectedArrivalTime(int index);

    /**
     * <code>repeated uint32 expected_departure_time = 5;</code>
     */
    java.util.List<java.lang.Integer> getExpectedDepartureTimeList();
    /**
     * <code>repeated uint32 expected_departure_time = 5;</code>
     */
    int getExpectedDepartureTimeCount();
    /**
     * <code>repeated uint32 expected_departure_time = 5;</code>
     */
    int getExpectedDepartureTime(int index);

    /**
     * <code>repeated uint32 number_of_coaches = 6;</code>
     */
    java.util.List<java.lang.Integer> getNumberOfCoachesList();
    /**
     * <code>repeated uint32 number_of_coaches = 6;</code>
     */
    int getNumberOfCoachesCount();
    /**
     * <code>repeated uint32 number_of_coaches = 6;</code>
     */
    int getNumberOfCoaches(int index);

    /**
     * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
     */
    java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TripStopStatus> getTripStopStatusList();
    /**
     * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
     */
    int getTripStopStatusCount();
    /**
     * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
     */
    nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TripStopStatus getTripStopStatus(int index);
    /**
     * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
     */
    java.util.List<java.lang.Integer>
    getTripStopStatusValueList();
    /**
     * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
     */
    int getTripStopStatusValue(int index);

    /**
     * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
     */
    java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TransportType> getTransportTypeList();
    /**
     * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
     */
    int getTransportTypeCount();
    /**
     * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
     */
    nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TransportType getTransportType(int index);
    /**
     * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
     */
    java.util.List<java.lang.Integer>
    getTransportTypeValueList();
    /**
     * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
     */
    int getTransportTypeValue(int index);

    /**
     * <code>repeated bool wheelchair_accessible = 9;</code>
     */
    java.util.List<java.lang.Boolean> getWheelchairAccessibleList();
    /**
     * <code>repeated bool wheelchair_accessible = 9;</code>
     */
    int getWheelchairAccessibleCount();
    /**
     * <code>repeated bool wheelchair_accessible = 9;</code>
     */
    boolean getWheelchairAccessible(int index);

    /**
     * <code>repeated bool is_timing_stop = 10;</code>
     */
    java.util.List<java.lang.Boolean> getIsTimingStopList();
    /**
     * <code>repeated bool is_timing_stop = 10;</code>
     */
    int getIsTimingStopCount();
    /**
     * <code>repeated bool is_timing_stop = 10;</code>
     */
    boolean getIsTimingStop(int index);

    /**
     * <code>repeated string stop_code = 11;</code>
     */
    java.util.List<java.lang.String>
        getStopCodeList();
    /**
     * <code>repeated string stop_code = 11;</code>
     */
    int getStopCodeCount();
    /**
     * <code>repeated string stop_code = 11;</code>
     */
    java.lang.String getStopCode(int index);
    /**
     * <code>repeated string stop_code = 11;</code>
     */
    com.google.protobuf.ByteString
        getStopCodeBytes(int index);

    /**
     * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
     */
    java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination> 
        getDestinationList();
    /**
     * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
     */
    nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination getDestination(int index);
    /**
     * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
     */
    int getDestinationCount();
    /**
     * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
     */
    java.util.List<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.DestinationOrBuilder> 
        getDestinationOrBuilderList();
    /**
     * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
     */
    nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.DestinationOrBuilder getDestinationOrBuilder(
        int index);

    /**
     * <code>repeated string line_public_number = 13;</code>
     */
    java.util.List<java.lang.String>
        getLinePublicNumberList();
    /**
     * <code>repeated string line_public_number = 13;</code>
     */
    int getLinePublicNumberCount();
    /**
     * <code>repeated string line_public_number = 13;</code>
     */
    java.lang.String getLinePublicNumber(int index);
    /**
     * <code>repeated string line_public_number = 13;</code>
     */
    com.google.protobuf.ByteString
        getLinePublicNumberBytes(int index);

    /**
     * <code>repeated string side_code = 14;</code>
     */
    java.util.List<java.lang.String>
        getSideCodeList();
    /**
     * <code>repeated string side_code = 14;</code>
     */
    int getSideCodeCount();
    /**
     * <code>repeated string side_code = 14;</code>
     */
    java.lang.String getSideCode(int index);
    /**
     * <code>repeated string side_code = 14;</code>
     */
    com.google.protobuf.ByteString
        getSideCodeBytes(int index);

    /**
     * <code>repeated uint32 line_direction = 15;</code>
     */
    java.util.List<java.lang.Integer> getLineDirectionList();
    /**
     * <code>repeated uint32 line_direction = 15;</code>
     */
    int getLineDirectionCount();
    /**
     * <code>repeated uint32 line_direction = 15;</code>
     */
    int getLineDirection(int index);

    /**
     * <code>repeated string journey_message_content = 16;</code>
     */
    java.util.List<java.lang.String>
        getJourneyMessageContentList();
    /**
     * <code>repeated string journey_message_content = 16;</code>
     */
    int getJourneyMessageContentCount();
    /**
     * <code>repeated string journey_message_content = 16;</code>
     */
    java.lang.String getJourneyMessageContent(int index);
    /**
     * <code>repeated string journey_message_content = 16;</code>
     */
    com.google.protobuf.ByteString
        getJourneyMessageContentBytes(int index);

    /**
     * <code>repeated string line_color = 17;</code>
     */
    java.util.List<java.lang.String>
        getLineColorList();
    /**
     * <code>repeated string line_color = 17;</code>
     */
    int getLineColorCount();
    /**
     * <code>repeated string line_color = 17;</code>
     */
    java.lang.String getLineColor(int index);
    /**
     * <code>repeated string line_color = 17;</code>
     */
    com.google.protobuf.ByteString
        getLineColorBytes(int index);

    /**
     * <code>repeated string line_text_color = 18;</code>
     */
    java.util.List<java.lang.String>
        getLineTextColorList();
    /**
     * <code>repeated string line_text_color = 18;</code>
     */
    int getLineTextColorCount();
    /**
     * <code>repeated string line_text_color = 18;</code>
     */
    java.lang.String getLineTextColor(int index);
    /**
     * <code>repeated string line_text_color = 18;</code>
     */
    com.google.protobuf.ByteString
        getLineTextColorBytes(int index);

    /**
     * <code>repeated string line_icon = 19;</code>
     */
    java.util.List<java.lang.String>
        getLineIconList();
    /**
     * <code>repeated string line_icon = 19;</code>
     */
    int getLineIconCount();
    /**
     * <code>repeated string line_icon = 19;</code>
     */
    java.lang.String getLineIcon(int index);
    /**
     * <code>repeated string line_icon = 19;</code>
     */
    com.google.protobuf.ByteString
        getLineIconBytes(int index);

    /**
     * <code>repeated string destination_color = 20;</code>
     */
    java.util.List<java.lang.String>
        getDestinationColorList();
    /**
     * <code>repeated string destination_color = 20;</code>
     */
    int getDestinationColorCount();
    /**
     * <code>repeated string destination_color = 20;</code>
     */
    java.lang.String getDestinationColor(int index);
    /**
     * <code>repeated string destination_color = 20;</code>
     */
    com.google.protobuf.ByteString
        getDestinationColorBytes(int index);

    /**
     * <code>repeated string destination_text_color = 21;</code>
     */
    java.util.List<java.lang.String>
        getDestinationTextColorList();
    /**
     * <code>repeated string destination_text_color = 21;</code>
     */
    int getDestinationTextColorCount();
    /**
     * <code>repeated string destination_text_color = 21;</code>
     */
    java.lang.String getDestinationTextColor(int index);
    /**
     * <code>repeated string destination_text_color = 21;</code>
     */
    com.google.protobuf.ByteString
        getDestinationTextColorBytes(int index);

    /**
     * <code>repeated string destination_icon = 22;</code>
     */
    java.util.List<java.lang.String>
        getDestinationIconList();
    /**
     * <code>repeated string destination_icon = 22;</code>
     */
    int getDestinationIconCount();
    /**
     * <code>repeated string destination_icon = 22;</code>
     */
    java.lang.String getDestinationIcon(int index);
    /**
     * <code>repeated string destination_icon = 22;</code>
     */
    com.google.protobuf.ByteString
        getDestinationIconBytes(int index);

    /**
     * <code>repeated uint32 generated_timestamp = 23;</code>
     */
    java.util.List<java.lang.Integer> getGeneratedTimestampList();
    /**
     * <code>repeated uint32 generated_timestamp = 23;</code>
     */
    int getGeneratedTimestampCount();
    /**
     * <code>repeated uint32 generated_timestamp = 23;</code>
     */
    int getGeneratedTimestamp(int index);
  }
  /**
   * <pre>
   * reisinformatie
   * </pre>
   *
   * Protobuf type {@code display_direct.PassingTimes}
   */
  public  static final class PassingTimes extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:display_direct.PassingTimes)
      PassingTimesOrBuilder {
    // Use PassingTimes.newBuilder() to construct.
    private PassingTimes(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PassingTimes() {
      passTimeHash_ = java.util.Collections.emptyList();
      targetArrivalTime_ = java.util.Collections.emptyList();
      targetDepartureTime_ = java.util.Collections.emptyList();
      expectedArrivalTime_ = java.util.Collections.emptyList();
      expectedDepartureTime_ = java.util.Collections.emptyList();
      numberOfCoaches_ = java.util.Collections.emptyList();
      tripStopStatus_ = java.util.Collections.emptyList();
      transportType_ = java.util.Collections.emptyList();
      wheelchairAccessible_ = java.util.Collections.emptyList();
      isTimingStop_ = java.util.Collections.emptyList();
      stopCode_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      destination_ = java.util.Collections.emptyList();
      linePublicNumber_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      sideCode_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      lineDirection_ = java.util.Collections.emptyList();
      journeyMessageContent_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      lineColor_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      lineTextColor_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      lineIcon_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      destinationColor_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      destinationTextColor_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      destinationIcon_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      generatedTimestamp_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private PassingTimes(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                passTimeHash_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000001;
              }
              passTimeHash_.add(input.readUInt32());
              break;
            }
            case 10: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
                passTimeHash_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000001;
              }
              while (input.getBytesUntilLimit() > 0) {
                passTimeHash_.add(input.readUInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 16: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                targetArrivalTime_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000002;
              }
              targetArrivalTime_.add(input.readUInt32());
              break;
            }
            case 18: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                targetArrivalTime_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000002;
              }
              while (input.getBytesUntilLimit() > 0) {
                targetArrivalTime_.add(input.readUInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 24: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                targetDepartureTime_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              targetDepartureTime_.add(input.readUInt32());
              break;
            }
            case 26: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                targetDepartureTime_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              while (input.getBytesUntilLimit() > 0) {
                targetDepartureTime_.add(input.readUInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 32: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                expectedArrivalTime_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000008;
              }
              expectedArrivalTime_.add(input.readUInt32());
              break;
            }
            case 34: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008) && input.getBytesUntilLimit() > 0) {
                expectedArrivalTime_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000008;
              }
              while (input.getBytesUntilLimit() > 0) {
                expectedArrivalTime_.add(input.readUInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 40: {
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                expectedDepartureTime_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000010;
              }
              expectedDepartureTime_.add(input.readUInt32());
              break;
            }
            case 42: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010) && input.getBytesUntilLimit() > 0) {
                expectedDepartureTime_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000010;
              }
              while (input.getBytesUntilLimit() > 0) {
                expectedDepartureTime_.add(input.readUInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 48: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                numberOfCoaches_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000020;
              }
              numberOfCoaches_.add(input.readUInt32());
              break;
            }
            case 50: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020) && input.getBytesUntilLimit() > 0) {
                numberOfCoaches_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000020;
              }
              while (input.getBytesUntilLimit() > 0) {
                numberOfCoaches_.add(input.readUInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 56: {
              int rawValue = input.readEnum();
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                tripStopStatus_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000040;
              }
              tripStopStatus_.add(rawValue);
              break;
            }
            case 58: {
              int length = input.readRawVarint32();
              int oldLimit = input.pushLimit(length);
              while(input.getBytesUntilLimit() > 0) {
                int rawValue = input.readEnum();
                if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                  tripStopStatus_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000040;
                }
                tripStopStatus_.add(rawValue);
              }
              input.popLimit(oldLimit);
              break;
            }
            case 64: {
              int rawValue = input.readEnum();
              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                transportType_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000080;
              }
              transportType_.add(rawValue);
              break;
            }
            case 66: {
              int length = input.readRawVarint32();
              int oldLimit = input.pushLimit(length);
              while(input.getBytesUntilLimit() > 0) {
                int rawValue = input.readEnum();
                if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                  transportType_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000080;
                }
                transportType_.add(rawValue);
              }
              input.popLimit(oldLimit);
              break;
            }
            case 72: {
              if (!((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
                wheelchairAccessible_ = new java.util.ArrayList<java.lang.Boolean>();
                mutable_bitField0_ |= 0x00000100;
              }
              wheelchairAccessible_.add(input.readBool());
              break;
            }
            case 74: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000100) == 0x00000100) && input.getBytesUntilLimit() > 0) {
                wheelchairAccessible_ = new java.util.ArrayList<java.lang.Boolean>();
                mutable_bitField0_ |= 0x00000100;
              }
              while (input.getBytesUntilLimit() > 0) {
                wheelchairAccessible_.add(input.readBool());
              }
              input.popLimit(limit);
              break;
            }
            case 80: {
              if (!((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
                isTimingStop_ = new java.util.ArrayList<java.lang.Boolean>();
                mutable_bitField0_ |= 0x00000200;
              }
              isTimingStop_.add(input.readBool());
              break;
            }
            case 82: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000200) == 0x00000200) && input.getBytesUntilLimit() > 0) {
                isTimingStop_ = new java.util.ArrayList<java.lang.Boolean>();
                mutable_bitField0_ |= 0x00000200;
              }
              while (input.getBytesUntilLimit() > 0) {
                isTimingStop_.add(input.readBool());
              }
              input.popLimit(limit);
              break;
            }
            case 90: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
                stopCode_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000400;
              }
              stopCode_.add(s);
              break;
            }
            case 98: {
              if (!((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
                destination_ = new java.util.ArrayList<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination>();
                mutable_bitField0_ |= 0x00000800;
              }
              destination_.add(
                  input.readMessage(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination.parser(), extensionRegistry));
              break;
            }
            case 106: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00001000) == 0x00001000)) {
                linePublicNumber_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00001000;
              }
              linePublicNumber_.add(s);
              break;
            }
            case 114: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00002000) == 0x00002000)) {
                sideCode_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00002000;
              }
              sideCode_.add(s);
              break;
            }
            case 120: {
              if (!((mutable_bitField0_ & 0x00004000) == 0x00004000)) {
                lineDirection_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00004000;
              }
              lineDirection_.add(input.readUInt32());
              break;
            }
            case 122: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00004000) == 0x00004000) && input.getBytesUntilLimit() > 0) {
                lineDirection_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00004000;
              }
              while (input.getBytesUntilLimit() > 0) {
                lineDirection_.add(input.readUInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 130: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00008000) == 0x00008000)) {
                journeyMessageContent_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00008000;
              }
              journeyMessageContent_.add(s);
              break;
            }
            case 138: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00010000) == 0x00010000)) {
                lineColor_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00010000;
              }
              lineColor_.add(s);
              break;
            }
            case 146: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00020000) == 0x00020000)) {
                lineTextColor_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00020000;
              }
              lineTextColor_.add(s);
              break;
            }
            case 154: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
                lineIcon_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00040000;
              }
              lineIcon_.add(s);
              break;
            }
            case 162: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00080000) == 0x00080000)) {
                destinationColor_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00080000;
              }
              destinationColor_.add(s);
              break;
            }
            case 170: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00100000) == 0x00100000)) {
                destinationTextColor_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00100000;
              }
              destinationTextColor_.add(s);
              break;
            }
            case 178: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00200000) == 0x00200000)) {
                destinationIcon_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00200000;
              }
              destinationIcon_.add(s);
              break;
            }
            case 184: {
              if (!((mutable_bitField0_ & 0x00400000) == 0x00400000)) {
                generatedTimestamp_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00400000;
              }
              generatedTimestamp_.add(input.readUInt32());
              break;
            }
            case 186: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00400000) == 0x00400000) && input.getBytesUntilLimit() > 0) {
                generatedTimestamp_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00400000;
              }
              while (input.getBytesUntilLimit() > 0) {
                generatedTimestamp_.add(input.readUInt32());
              }
              input.popLimit(limit);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          passTimeHash_ = java.util.Collections.unmodifiableList(passTimeHash_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          targetArrivalTime_ = java.util.Collections.unmodifiableList(targetArrivalTime_);
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          targetDepartureTime_ = java.util.Collections.unmodifiableList(targetDepartureTime_);
        }
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          expectedArrivalTime_ = java.util.Collections.unmodifiableList(expectedArrivalTime_);
        }
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          expectedDepartureTime_ = java.util.Collections.unmodifiableList(expectedDepartureTime_);
        }
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          numberOfCoaches_ = java.util.Collections.unmodifiableList(numberOfCoaches_);
        }
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          tripStopStatus_ = java.util.Collections.unmodifiableList(tripStopStatus_);
        }
        if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
          transportType_ = java.util.Collections.unmodifiableList(transportType_);
        }
        if (((mutable_bitField0_ & 0x00000100) == 0x00000100)) {
          wheelchairAccessible_ = java.util.Collections.unmodifiableList(wheelchairAccessible_);
        }
        if (((mutable_bitField0_ & 0x00000200) == 0x00000200)) {
          isTimingStop_ = java.util.Collections.unmodifiableList(isTimingStop_);
        }
        if (((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
          stopCode_ = stopCode_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000800) == 0x00000800)) {
          destination_ = java.util.Collections.unmodifiableList(destination_);
        }
        if (((mutable_bitField0_ & 0x00001000) == 0x00001000)) {
          linePublicNumber_ = linePublicNumber_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00002000) == 0x00002000)) {
          sideCode_ = sideCode_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00004000) == 0x00004000)) {
          lineDirection_ = java.util.Collections.unmodifiableList(lineDirection_);
        }
        if (((mutable_bitField0_ & 0x00008000) == 0x00008000)) {
          journeyMessageContent_ = journeyMessageContent_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00010000) == 0x00010000)) {
          lineColor_ = lineColor_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00020000) == 0x00020000)) {
          lineTextColor_ = lineTextColor_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00040000) == 0x00040000)) {
          lineIcon_ = lineIcon_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00080000) == 0x00080000)) {
          destinationColor_ = destinationColor_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00100000) == 0x00100000)) {
          destinationTextColor_ = destinationTextColor_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00200000) == 0x00200000)) {
          destinationIcon_ = destinationIcon_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00400000) == 0x00400000)) {
          generatedTimestamp_ = java.util.Collections.unmodifiableList(generatedTimestamp_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_PassingTimes_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_PassingTimes_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Builder.class);
    }

    /**
     * Protobuf enum {@code display_direct.PassingTimes.TripStopStatus}
     */
    public enum TripStopStatus
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>PLANNED = 0;</code>
       */
      PLANNED(0),
      /**
       * <code>DRIVING = 1;</code>
       */
      DRIVING(1),
      /**
       * <code>SKIPPED = 2;</code>
       */
      SKIPPED(2),
      /**
       * <code>CANCELLED = 3;</code>
       */
      CANCELLED(3),
      /**
       * <code>DELETED = 4;</code>
       */
      DELETED(4),
      /**
       * <code>ARRIVED = 5;</code>
       */
      ARRIVED(5),
      /**
       * <code>PASSED = 6;</code>
       */
      PASSED(6),
      /**
       * <code>UNKNOWN = 7;</code>
       */
      UNKNOWN(7),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>PLANNED = 0;</code>
       */
      public static final int PLANNED_VALUE = 0;
      /**
       * <code>DRIVING = 1;</code>
       */
      public static final int DRIVING_VALUE = 1;
      /**
       * <code>SKIPPED = 2;</code>
       */
      public static final int SKIPPED_VALUE = 2;
      /**
       * <code>CANCELLED = 3;</code>
       */
      public static final int CANCELLED_VALUE = 3;
      /**
       * <code>DELETED = 4;</code>
       */
      public static final int DELETED_VALUE = 4;
      /**
       * <code>ARRIVED = 5;</code>
       */
      public static final int ARRIVED_VALUE = 5;
      /**
       * <code>PASSED = 6;</code>
       */
      public static final int PASSED_VALUE = 6;
      /**
       * <code>UNKNOWN = 7;</code>
       */
      public static final int UNKNOWN_VALUE = 7;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static TripStopStatus valueOf(int value) {
        return forNumber(value);
      }

      public static TripStopStatus forNumber(int value) {
        switch (value) {
          case 0: return PLANNED;
          case 1: return DRIVING;
          case 2: return SKIPPED;
          case 3: return CANCELLED;
          case 4: return DELETED;
          case 5: return ARRIVED;
          case 6: return PASSED;
          case 7: return UNKNOWN;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:display_direct.PassingTimes.TripStopStatus)
    }

    /**
     * Protobuf enum {@code display_direct.PassingTimes.TransportType}
     */
    public enum TransportType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>BUS = 0;</code>
       */
      BUS(0),
      /**
       * <code>TRAM = 1;</code>
       */
      TRAM(1),
      /**
       * <code>METRO = 2;</code>
       */
      METRO(2),
      /**
       * <code>TRAIN = 4;</code>
       */
      TRAIN(4),
      /**
       * <code>BOAT = 5;</code>
       */
      BOAT(5),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>BUS = 0;</code>
       */
      public static final int BUS_VALUE = 0;
      /**
       * <code>TRAM = 1;</code>
       */
      public static final int TRAM_VALUE = 1;
      /**
       * <code>METRO = 2;</code>
       */
      public static final int METRO_VALUE = 2;
      /**
       * <code>TRAIN = 4;</code>
       */
      public static final int TRAIN_VALUE = 4;
      /**
       * <code>BOAT = 5;</code>
       */
      public static final int BOAT_VALUE = 5;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static TransportType valueOf(int value) {
        return forNumber(value);
      }

      public static TransportType forNumber(int value) {
        switch (value) {
          case 0: return BUS;
          case 1: return TRAM;
          case 2: return METRO;
          case 4: return TRAIN;
          case 5: return BOAT;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.getDescriptor().getEnumTypes().get(1);
      }

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

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:display_direct.PassingTimes.TransportType)
    }

    public interface DestinationOrBuilder extends
        // @@protoc_insertion_point(interface_extends:display_direct.PassingTimes.Destination)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>repeated string value = 1;</code>
       */
      java.util.List<java.lang.String>
          getValueList();
      /**
       * <code>repeated string value = 1;</code>
       */
      int getValueCount();
      /**
       * <code>repeated string value = 1;</code>
       */
      java.lang.String getValue(int index);
      /**
       * <code>repeated string value = 1;</code>
       */
      com.google.protobuf.ByteString
          getValueBytes(int index);
    }
    /**
     * Protobuf type {@code display_direct.PassingTimes.Destination}
     */
    public  static final class Destination extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:display_direct.PassingTimes.Destination)
        DestinationOrBuilder {
      // Use Destination.newBuilder() to construct.
      private Destination(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Destination() {
        value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
      }
      private Destination(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!input.skipField(tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                java.lang.String s = input.readStringRequireUtf8();
                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                  value_ = new com.google.protobuf.LazyStringArrayList();
                  mutable_bitField0_ |= 0x00000001;
                }
                value_.add(s);
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
            value_ = value_.getUnmodifiableView();
          }
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_PassingTimes_Destination_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_PassingTimes_Destination_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination.Builder.class);
      }

      public static final int VALUE_FIELD_NUMBER = 1;
      private com.google.protobuf.LazyStringList value_;
      /**
       * <code>repeated string value = 1;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getValueList() {
        return value_;
      }
      /**
       * <code>repeated string value = 1;</code>
       */
      public int getValueCount() {
        return value_.size();
      }
      /**
       * <code>repeated string value = 1;</code>
       */
      public java.lang.String getValue(int index) {
        return value_.get(index);
      }
      /**
       * <code>repeated string value = 1;</code>
       */
      public com.google.protobuf.ByteString
          getValueBytes(int index) {
        return value_.getByteString(index);
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        for (int i = 0; i < value_.size(); i++) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, value_.getRaw(i));
        }
      }

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

        size = 0;
        {
          int dataSize = 0;
          for (int i = 0; i < value_.size(); i++) {
            dataSize += computeStringSizeNoTag(value_.getRaw(i));
          }
          size += dataSize;
          size += 1 * getValueList().size();
        }
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination)) {
          return super.equals(obj);
        }
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination other = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination) obj;

        boolean result = true;
        result = result && getValueList()
            .equals(other.getValueList());
        return result;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (getValueCount() > 0) {
          hash = (37 * hash) + VALUE_FIELD_NUMBER;
          hash = (53 * hash) + getValueList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code display_direct.PassingTimes.Destination}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:display_direct.PassingTimes.Destination)
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.DestinationOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_PassingTimes_Destination_descriptor;
        }

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_PassingTimes_Destination_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination.Builder.class);
        }

        // Construct using nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

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

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_PassingTimes_Destination_descriptor;
        }

        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination getDefaultInstanceForType() {
          return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination.getDefaultInstance();
        }

        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination build() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination buildPartial() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination result = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination(this);
          int from_bitField0_ = bitField0_;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            value_ = value_.getUnmodifiableView();
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.value_ = value_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination) {
            return mergeFrom((nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination other) {
          if (other == nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination.getDefaultInstance()) return this;
          if (!other.value_.isEmpty()) {
            if (value_.isEmpty()) {
              value_ = other.value_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureValueIsMutable();
              value_.addAll(other.value_);
            }
            onChanged();
          }
          onChanged();
          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 {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;

        private com.google.protobuf.LazyStringList value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        private void ensureValueIsMutable() {
          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
            value_ = new com.google.protobuf.LazyStringArrayList(value_);
            bitField0_ |= 0x00000001;
           }
        }
        /**
         * <code>repeated string value = 1;</code>
         */
        public com.google.protobuf.ProtocolStringList
            getValueList() {
          return value_.getUnmodifiableView();
        }
        /**
         * <code>repeated string value = 1;</code>
         */
        public int getValueCount() {
          return value_.size();
        }
        /**
         * <code>repeated string value = 1;</code>
         */
        public java.lang.String getValue(int index) {
          return value_.get(index);
        }
        /**
         * <code>repeated string value = 1;</code>
         */
        public com.google.protobuf.ByteString
            getValueBytes(int index) {
          return value_.getByteString(index);
        }
        /**
         * <code>repeated string value = 1;</code>
         */
        public Builder setValue(
            int index, java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureValueIsMutable();
          value_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string value = 1;</code>
         */
        public Builder addValue(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  ensureValueIsMutable();
          value_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string value = 1;</code>
         */
        public Builder addAllValue(
            java.lang.Iterable<java.lang.String> values) {
          ensureValueIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, value_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string value = 1;</code>
         */
        public Builder clearValue() {
          value_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string value = 1;</code>
         */
        public Builder addValueBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          ensureValueIsMutable();
          value_.add(value);
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return this;
        }

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


        // @@protoc_insertion_point(builder_scope:display_direct.PassingTimes.Destination)
      }

      // @@protoc_insertion_point(class_scope:display_direct.PassingTimes.Destination)
      private static final nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination();
      }

      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int PASS_TIME_HASH_FIELD_NUMBER = 1;
    private java.util.List<java.lang.Integer> passTimeHash_;
    /**
     * <code>repeated uint32 pass_time_hash = 1;</code>
     */
    public java.util.List<java.lang.Integer>
        getPassTimeHashList() {
      return passTimeHash_;
    }
    /**
     * <code>repeated uint32 pass_time_hash = 1;</code>
     */
    public int getPassTimeHashCount() {
      return passTimeHash_.size();
    }
    /**
     * <code>repeated uint32 pass_time_hash = 1;</code>
     */
    public int getPassTimeHash(int index) {
      return passTimeHash_.get(index);
    }
    private int passTimeHashMemoizedSerializedSize = -1;

    public static final int TARGET_ARRIVAL_TIME_FIELD_NUMBER = 2;
    private java.util.List<java.lang.Integer> targetArrivalTime_;
    /**
     * <code>repeated uint32 target_arrival_time = 2;</code>
     */
    public java.util.List<java.lang.Integer>
        getTargetArrivalTimeList() {
      return targetArrivalTime_;
    }
    /**
     * <code>repeated uint32 target_arrival_time = 2;</code>
     */
    public int getTargetArrivalTimeCount() {
      return targetArrivalTime_.size();
    }
    /**
     * <code>repeated uint32 target_arrival_time = 2;</code>
     */
    public int getTargetArrivalTime(int index) {
      return targetArrivalTime_.get(index);
    }
    private int targetArrivalTimeMemoizedSerializedSize = -1;

    public static final int TARGET_DEPARTURE_TIME_FIELD_NUMBER = 3;
    private java.util.List<java.lang.Integer> targetDepartureTime_;
    /**
     * <code>repeated uint32 target_departure_time = 3;</code>
     */
    public java.util.List<java.lang.Integer>
        getTargetDepartureTimeList() {
      return targetDepartureTime_;
    }
    /**
     * <code>repeated uint32 target_departure_time = 3;</code>
     */
    public int getTargetDepartureTimeCount() {
      return targetDepartureTime_.size();
    }
    /**
     * <code>repeated uint32 target_departure_time = 3;</code>
     */
    public int getTargetDepartureTime(int index) {
      return targetDepartureTime_.get(index);
    }
    private int targetDepartureTimeMemoizedSerializedSize = -1;

    public static final int EXPECTED_ARRIVAL_TIME_FIELD_NUMBER = 4;
    private java.util.List<java.lang.Integer> expectedArrivalTime_;
    /**
     * <code>repeated uint32 expected_arrival_time = 4;</code>
     */
    public java.util.List<java.lang.Integer>
        getExpectedArrivalTimeList() {
      return expectedArrivalTime_;
    }
    /**
     * <code>repeated uint32 expected_arrival_time = 4;</code>
     */
    public int getExpectedArrivalTimeCount() {
      return expectedArrivalTime_.size();
    }
    /**
     * <code>repeated uint32 expected_arrival_time = 4;</code>
     */
    public int getExpectedArrivalTime(int index) {
      return expectedArrivalTime_.get(index);
    }
    private int expectedArrivalTimeMemoizedSerializedSize = -1;

    public static final int EXPECTED_DEPARTURE_TIME_FIELD_NUMBER = 5;
    private java.util.List<java.lang.Integer> expectedDepartureTime_;
    /**
     * <code>repeated uint32 expected_departure_time = 5;</code>
     */
    public java.util.List<java.lang.Integer>
        getExpectedDepartureTimeList() {
      return expectedDepartureTime_;
    }
    /**
     * <code>repeated uint32 expected_departure_time = 5;</code>
     */
    public int getExpectedDepartureTimeCount() {
      return expectedDepartureTime_.size();
    }
    /**
     * <code>repeated uint32 expected_departure_time = 5;</code>
     */
    public int getExpectedDepartureTime(int index) {
      return expectedDepartureTime_.get(index);
    }
    private int expectedDepartureTimeMemoizedSerializedSize = -1;

    public static final int NUMBER_OF_COACHES_FIELD_NUMBER = 6;
    private java.util.List<java.lang.Integer> numberOfCoaches_;
    /**
     * <code>repeated uint32 number_of_coaches = 6;</code>
     */
    public java.util.List<java.lang.Integer>
        getNumberOfCoachesList() {
      return numberOfCoaches_;
    }
    /**
     * <code>repeated uint32 number_of_coaches = 6;</code>
     */
    public int getNumberOfCoachesCount() {
      return numberOfCoaches_.size();
    }
    /**
     * <code>repeated uint32 number_of_coaches = 6;</code>
     */
    public int getNumberOfCoaches(int index) {
      return numberOfCoaches_.get(index);
    }
    private int numberOfCoachesMemoizedSerializedSize = -1;

    public static final int TRIP_STOP_STATUS_FIELD_NUMBER = 7;
    private java.util.List<java.lang.Integer> tripStopStatus_;
    private static final com.google.protobuf.Internal.ListAdapter.Converter<
        java.lang.Integer, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TripStopStatus> tripStopStatus_converter_ =
            new com.google.protobuf.Internal.ListAdapter.Converter<
                java.lang.Integer, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TripStopStatus>() {
              public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TripStopStatus convert(java.lang.Integer from) {
                nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TripStopStatus result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TripStopStatus.valueOf(from);
                return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TripStopStatus.UNRECOGNIZED : result;
              }
            };
    /**
     * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
     */
    public java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TripStopStatus> getTripStopStatusList() {
      return new com.google.protobuf.Internal.ListAdapter<
          java.lang.Integer, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TripStopStatus>(tripStopStatus_, tripStopStatus_converter_);
    }
    /**
     * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
     */
    public int getTripStopStatusCount() {
      return tripStopStatus_.size();
    }
    /**
     * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
     */
    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TripStopStatus getTripStopStatus(int index) {
      return tripStopStatus_converter_.convert(tripStopStatus_.get(index));
    }
    /**
     * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
     */
    public java.util.List<java.lang.Integer>
    getTripStopStatusValueList() {
      return tripStopStatus_;
    }
    /**
     * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
     */
    public int getTripStopStatusValue(int index) {
      return tripStopStatus_.get(index);
    }
    private int tripStopStatusMemoizedSerializedSize;

    public static final int TRANSPORT_TYPE_FIELD_NUMBER = 8;
    private java.util.List<java.lang.Integer> transportType_;
    private static final com.google.protobuf.Internal.ListAdapter.Converter<
        java.lang.Integer, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TransportType> transportType_converter_ =
            new com.google.protobuf.Internal.ListAdapter.Converter<
                java.lang.Integer, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TransportType>() {
              public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TransportType convert(java.lang.Integer from) {
                nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TransportType result = nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TransportType.valueOf(from);
                return result == null ? nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TransportType.UNRECOGNIZED : result;
              }
            };
    /**
     * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
     */
    public java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TransportType> getTransportTypeList() {
      return new com.google.protobuf.Internal.ListAdapter<
          java.lang.Integer, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TransportType>(transportType_, transportType_converter_);
    }
    /**
     * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
     */
    public int getTransportTypeCount() {
      return transportType_.size();
    }
    /**
     * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
     */
    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TransportType getTransportType(int index) {
      return transportType_converter_.convert(transportType_.get(index));
    }
    /**
     * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
     */
    public java.util.List<java.lang.Integer>
    getTransportTypeValueList() {
      return transportType_;
    }
    /**
     * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
     */
    public int getTransportTypeValue(int index) {
      return transportType_.get(index);
    }
    private int transportTypeMemoizedSerializedSize;

    public static final int WHEELCHAIR_ACCESSIBLE_FIELD_NUMBER = 9;
    private java.util.List<java.lang.Boolean> wheelchairAccessible_;
    /**
     * <code>repeated bool wheelchair_accessible = 9;</code>
     */
    public java.util.List<java.lang.Boolean>
        getWheelchairAccessibleList() {
      return wheelchairAccessible_;
    }
    /**
     * <code>repeated bool wheelchair_accessible = 9;</code>
     */
    public int getWheelchairAccessibleCount() {
      return wheelchairAccessible_.size();
    }
    /**
     * <code>repeated bool wheelchair_accessible = 9;</code>
     */
    public boolean getWheelchairAccessible(int index) {
      return wheelchairAccessible_.get(index);
    }
    private int wheelchairAccessibleMemoizedSerializedSize = -1;

    public static final int IS_TIMING_STOP_FIELD_NUMBER = 10;
    private java.util.List<java.lang.Boolean> isTimingStop_;
    /**
     * <code>repeated bool is_timing_stop = 10;</code>
     */
    public java.util.List<java.lang.Boolean>
        getIsTimingStopList() {
      return isTimingStop_;
    }
    /**
     * <code>repeated bool is_timing_stop = 10;</code>
     */
    public int getIsTimingStopCount() {
      return isTimingStop_.size();
    }
    /**
     * <code>repeated bool is_timing_stop = 10;</code>
     */
    public boolean getIsTimingStop(int index) {
      return isTimingStop_.get(index);
    }
    private int isTimingStopMemoizedSerializedSize = -1;

    public static final int STOP_CODE_FIELD_NUMBER = 11;
    private com.google.protobuf.LazyStringList stopCode_;
    /**
     * <code>repeated string stop_code = 11;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getStopCodeList() {
      return stopCode_;
    }
    /**
     * <code>repeated string stop_code = 11;</code>
     */
    public int getStopCodeCount() {
      return stopCode_.size();
    }
    /**
     * <code>repeated string stop_code = 11;</code>
     */
    public java.lang.String getStopCode(int index) {
      return stopCode_.get(index);
    }
    /**
     * <code>repeated string stop_code = 11;</code>
     */
    public com.google.protobuf.ByteString
        getStopCodeBytes(int index) {
      return stopCode_.getByteString(index);
    }

    public static final int DESTINATION_FIELD_NUMBER = 12;
    private java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination> destination_;
    /**
     * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
     */
    public java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination> getDestinationList() {
      return destination_;
    }
    /**
     * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
     */
    public java.util.List<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.DestinationOrBuilder> 
        getDestinationOrBuilderList() {
      return destination_;
    }
    /**
     * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
     */
    public int getDestinationCount() {
      return destination_.size();
    }
    /**
     * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
     */
    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination getDestination(int index) {
      return destination_.get(index);
    }
    /**
     * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
     */
    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.DestinationOrBuilder getDestinationOrBuilder(
        int index) {
      return destination_.get(index);
    }

    public static final int LINE_PUBLIC_NUMBER_FIELD_NUMBER = 13;
    private com.google.protobuf.LazyStringList linePublicNumber_;
    /**
     * <code>repeated string line_public_number = 13;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getLinePublicNumberList() {
      return linePublicNumber_;
    }
    /**
     * <code>repeated string line_public_number = 13;</code>
     */
    public int getLinePublicNumberCount() {
      return linePublicNumber_.size();
    }
    /**
     * <code>repeated string line_public_number = 13;</code>
     */
    public java.lang.String getLinePublicNumber(int index) {
      return linePublicNumber_.get(index);
    }
    /**
     * <code>repeated string line_public_number = 13;</code>
     */
    public com.google.protobuf.ByteString
        getLinePublicNumberBytes(int index) {
      return linePublicNumber_.getByteString(index);
    }

    public static final int SIDE_CODE_FIELD_NUMBER = 14;
    private com.google.protobuf.LazyStringList sideCode_;
    /**
     * <code>repeated string side_code = 14;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getSideCodeList() {
      return sideCode_;
    }
    /**
     * <code>repeated string side_code = 14;</code>
     */
    public int getSideCodeCount() {
      return sideCode_.size();
    }
    /**
     * <code>repeated string side_code = 14;</code>
     */
    public java.lang.String getSideCode(int index) {
      return sideCode_.get(index);
    }
    /**
     * <code>repeated string side_code = 14;</code>
     */
    public com.google.protobuf.ByteString
        getSideCodeBytes(int index) {
      return sideCode_.getByteString(index);
    }

    public static final int LINE_DIRECTION_FIELD_NUMBER = 15;
    private java.util.List<java.lang.Integer> lineDirection_;
    /**
     * <code>repeated uint32 line_direction = 15;</code>
     */
    public java.util.List<java.lang.Integer>
        getLineDirectionList() {
      return lineDirection_;
    }
    /**
     * <code>repeated uint32 line_direction = 15;</code>
     */
    public int getLineDirectionCount() {
      return lineDirection_.size();
    }
    /**
     * <code>repeated uint32 line_direction = 15;</code>
     */
    public int getLineDirection(int index) {
      return lineDirection_.get(index);
    }
    private int lineDirectionMemoizedSerializedSize = -1;

    public static final int JOURNEY_MESSAGE_CONTENT_FIELD_NUMBER = 16;
    private com.google.protobuf.LazyStringList journeyMessageContent_;
    /**
     * <code>repeated string journey_message_content = 16;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getJourneyMessageContentList() {
      return journeyMessageContent_;
    }
    /**
     * <code>repeated string journey_message_content = 16;</code>
     */
    public int getJourneyMessageContentCount() {
      return journeyMessageContent_.size();
    }
    /**
     * <code>repeated string journey_message_content = 16;</code>
     */
    public java.lang.String getJourneyMessageContent(int index) {
      return journeyMessageContent_.get(index);
    }
    /**
     * <code>repeated string journey_message_content = 16;</code>
     */
    public com.google.protobuf.ByteString
        getJourneyMessageContentBytes(int index) {
      return journeyMessageContent_.getByteString(index);
    }

    public static final int LINE_COLOR_FIELD_NUMBER = 17;
    private com.google.protobuf.LazyStringList lineColor_;
    /**
     * <code>repeated string line_color = 17;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getLineColorList() {
      return lineColor_;
    }
    /**
     * <code>repeated string line_color = 17;</code>
     */
    public int getLineColorCount() {
      return lineColor_.size();
    }
    /**
     * <code>repeated string line_color = 17;</code>
     */
    public java.lang.String getLineColor(int index) {
      return lineColor_.get(index);
    }
    /**
     * <code>repeated string line_color = 17;</code>
     */
    public com.google.protobuf.ByteString
        getLineColorBytes(int index) {
      return lineColor_.getByteString(index);
    }

    public static final int LINE_TEXT_COLOR_FIELD_NUMBER = 18;
    private com.google.protobuf.LazyStringList lineTextColor_;
    /**
     * <code>repeated string line_text_color = 18;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getLineTextColorList() {
      return lineTextColor_;
    }
    /**
     * <code>repeated string line_text_color = 18;</code>
     */
    public int getLineTextColorCount() {
      return lineTextColor_.size();
    }
    /**
     * <code>repeated string line_text_color = 18;</code>
     */
    public java.lang.String getLineTextColor(int index) {
      return lineTextColor_.get(index);
    }
    /**
     * <code>repeated string line_text_color = 18;</code>
     */
    public com.google.protobuf.ByteString
        getLineTextColorBytes(int index) {
      return lineTextColor_.getByteString(index);
    }

    public static final int LINE_ICON_FIELD_NUMBER = 19;
    private com.google.protobuf.LazyStringList lineIcon_;
    /**
     * <code>repeated string line_icon = 19;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getLineIconList() {
      return lineIcon_;
    }
    /**
     * <code>repeated string line_icon = 19;</code>
     */
    public int getLineIconCount() {
      return lineIcon_.size();
    }
    /**
     * <code>repeated string line_icon = 19;</code>
     */
    public java.lang.String getLineIcon(int index) {
      return lineIcon_.get(index);
    }
    /**
     * <code>repeated string line_icon = 19;</code>
     */
    public com.google.protobuf.ByteString
        getLineIconBytes(int index) {
      return lineIcon_.getByteString(index);
    }

    public static final int DESTINATION_COLOR_FIELD_NUMBER = 20;
    private com.google.protobuf.LazyStringList destinationColor_;
    /**
     * <code>repeated string destination_color = 20;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getDestinationColorList() {
      return destinationColor_;
    }
    /**
     * <code>repeated string destination_color = 20;</code>
     */
    public int getDestinationColorCount() {
      return destinationColor_.size();
    }
    /**
     * <code>repeated string destination_color = 20;</code>
     */
    public java.lang.String getDestinationColor(int index) {
      return destinationColor_.get(index);
    }
    /**
     * <code>repeated string destination_color = 20;</code>
     */
    public com.google.protobuf.ByteString
        getDestinationColorBytes(int index) {
      return destinationColor_.getByteString(index);
    }

    public static final int DESTINATION_TEXT_COLOR_FIELD_NUMBER = 21;
    private com.google.protobuf.LazyStringList destinationTextColor_;
    /**
     * <code>repeated string destination_text_color = 21;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getDestinationTextColorList() {
      return destinationTextColor_;
    }
    /**
     * <code>repeated string destination_text_color = 21;</code>
     */
    public int getDestinationTextColorCount() {
      return destinationTextColor_.size();
    }
    /**
     * <code>repeated string destination_text_color = 21;</code>
     */
    public java.lang.String getDestinationTextColor(int index) {
      return destinationTextColor_.get(index);
    }
    /**
     * <code>repeated string destination_text_color = 21;</code>
     */
    public com.google.protobuf.ByteString
        getDestinationTextColorBytes(int index) {
      return destinationTextColor_.getByteString(index);
    }

    public static final int DESTINATION_ICON_FIELD_NUMBER = 22;
    private com.google.protobuf.LazyStringList destinationIcon_;
    /**
     * <code>repeated string destination_icon = 22;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getDestinationIconList() {
      return destinationIcon_;
    }
    /**
     * <code>repeated string destination_icon = 22;</code>
     */
    public int getDestinationIconCount() {
      return destinationIcon_.size();
    }
    /**
     * <code>repeated string destination_icon = 22;</code>
     */
    public java.lang.String getDestinationIcon(int index) {
      return destinationIcon_.get(index);
    }
    /**
     * <code>repeated string destination_icon = 22;</code>
     */
    public com.google.protobuf.ByteString
        getDestinationIconBytes(int index) {
      return destinationIcon_.getByteString(index);
    }

    public static final int GENERATED_TIMESTAMP_FIELD_NUMBER = 23;
    private java.util.List<java.lang.Integer> generatedTimestamp_;
    /**
     * <code>repeated uint32 generated_timestamp = 23;</code>
     */
    public java.util.List<java.lang.Integer>
        getGeneratedTimestampList() {
      return generatedTimestamp_;
    }
    /**
     * <code>repeated uint32 generated_timestamp = 23;</code>
     */
    public int getGeneratedTimestampCount() {
      return generatedTimestamp_.size();
    }
    /**
     * <code>repeated uint32 generated_timestamp = 23;</code>
     */
    public int getGeneratedTimestamp(int index) {
      return generatedTimestamp_.get(index);
    }
    private int generatedTimestampMemoizedSerializedSize = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (getPassTimeHashList().size() > 0) {
        output.writeUInt32NoTag(10);
        output.writeUInt32NoTag(passTimeHashMemoizedSerializedSize);
      }
      for (int i = 0; i < passTimeHash_.size(); i++) {
        output.writeUInt32NoTag(passTimeHash_.get(i));
      }
      if (getTargetArrivalTimeList().size() > 0) {
        output.writeUInt32NoTag(18);
        output.writeUInt32NoTag(targetArrivalTimeMemoizedSerializedSize);
      }
      for (int i = 0; i < targetArrivalTime_.size(); i++) {
        output.writeUInt32NoTag(targetArrivalTime_.get(i));
      }
      if (getTargetDepartureTimeList().size() > 0) {
        output.writeUInt32NoTag(26);
        output.writeUInt32NoTag(targetDepartureTimeMemoizedSerializedSize);
      }
      for (int i = 0; i < targetDepartureTime_.size(); i++) {
        output.writeUInt32NoTag(targetDepartureTime_.get(i));
      }
      if (getExpectedArrivalTimeList().size() > 0) {
        output.writeUInt32NoTag(34);
        output.writeUInt32NoTag(expectedArrivalTimeMemoizedSerializedSize);
      }
      for (int i = 0; i < expectedArrivalTime_.size(); i++) {
        output.writeUInt32NoTag(expectedArrivalTime_.get(i));
      }
      if (getExpectedDepartureTimeList().size() > 0) {
        output.writeUInt32NoTag(42);
        output.writeUInt32NoTag(expectedDepartureTimeMemoizedSerializedSize);
      }
      for (int i = 0; i < expectedDepartureTime_.size(); i++) {
        output.writeUInt32NoTag(expectedDepartureTime_.get(i));
      }
      if (getNumberOfCoachesList().size() > 0) {
        output.writeUInt32NoTag(50);
        output.writeUInt32NoTag(numberOfCoachesMemoizedSerializedSize);
      }
      for (int i = 0; i < numberOfCoaches_.size(); i++) {
        output.writeUInt32NoTag(numberOfCoaches_.get(i));
      }
      if (getTripStopStatusList().size() > 0) {
        output.writeUInt32NoTag(58);
        output.writeUInt32NoTag(tripStopStatusMemoizedSerializedSize);
      }
      for (int i = 0; i < tripStopStatus_.size(); i++) {
        output.writeEnumNoTag(tripStopStatus_.get(i));
      }
      if (getTransportTypeList().size() > 0) {
        output.writeUInt32NoTag(66);
        output.writeUInt32NoTag(transportTypeMemoizedSerializedSize);
      }
      for (int i = 0; i < transportType_.size(); i++) {
        output.writeEnumNoTag(transportType_.get(i));
      }
      if (getWheelchairAccessibleList().size() > 0) {
        output.writeUInt32NoTag(74);
        output.writeUInt32NoTag(wheelchairAccessibleMemoizedSerializedSize);
      }
      for (int i = 0; i < wheelchairAccessible_.size(); i++) {
        output.writeBoolNoTag(wheelchairAccessible_.get(i));
      }
      if (getIsTimingStopList().size() > 0) {
        output.writeUInt32NoTag(82);
        output.writeUInt32NoTag(isTimingStopMemoizedSerializedSize);
      }
      for (int i = 0; i < isTimingStop_.size(); i++) {
        output.writeBoolNoTag(isTimingStop_.get(i));
      }
      for (int i = 0; i < stopCode_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 11, stopCode_.getRaw(i));
      }
      for (int i = 0; i < destination_.size(); i++) {
        output.writeMessage(12, destination_.get(i));
      }
      for (int i = 0; i < linePublicNumber_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 13, linePublicNumber_.getRaw(i));
      }
      for (int i = 0; i < sideCode_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 14, sideCode_.getRaw(i));
      }
      if (getLineDirectionList().size() > 0) {
        output.writeUInt32NoTag(122);
        output.writeUInt32NoTag(lineDirectionMemoizedSerializedSize);
      }
      for (int i = 0; i < lineDirection_.size(); i++) {
        output.writeUInt32NoTag(lineDirection_.get(i));
      }
      for (int i = 0; i < journeyMessageContent_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 16, journeyMessageContent_.getRaw(i));
      }
      for (int i = 0; i < lineColor_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 17, lineColor_.getRaw(i));
      }
      for (int i = 0; i < lineTextColor_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 18, lineTextColor_.getRaw(i));
      }
      for (int i = 0; i < lineIcon_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 19, lineIcon_.getRaw(i));
      }
      for (int i = 0; i < destinationColor_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 20, destinationColor_.getRaw(i));
      }
      for (int i = 0; i < destinationTextColor_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 21, destinationTextColor_.getRaw(i));
      }
      for (int i = 0; i < destinationIcon_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 22, destinationIcon_.getRaw(i));
      }
      if (getGeneratedTimestampList().size() > 0) {
        output.writeUInt32NoTag(186);
        output.writeUInt32NoTag(generatedTimestampMemoizedSerializedSize);
      }
      for (int i = 0; i < generatedTimestamp_.size(); i++) {
        output.writeUInt32NoTag(generatedTimestamp_.get(i));
      }
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < passTimeHash_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(passTimeHash_.get(i));
        }
        size += dataSize;
        if (!getPassTimeHashList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        passTimeHashMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < targetArrivalTime_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(targetArrivalTime_.get(i));
        }
        size += dataSize;
        if (!getTargetArrivalTimeList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        targetArrivalTimeMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < targetDepartureTime_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(targetDepartureTime_.get(i));
        }
        size += dataSize;
        if (!getTargetDepartureTimeList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        targetDepartureTimeMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < expectedArrivalTime_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(expectedArrivalTime_.get(i));
        }
        size += dataSize;
        if (!getExpectedArrivalTimeList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        expectedArrivalTimeMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < expectedDepartureTime_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(expectedDepartureTime_.get(i));
        }
        size += dataSize;
        if (!getExpectedDepartureTimeList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        expectedDepartureTimeMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < numberOfCoaches_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(numberOfCoaches_.get(i));
        }
        size += dataSize;
        if (!getNumberOfCoachesList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        numberOfCoachesMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < tripStopStatus_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeEnumSizeNoTag(tripStopStatus_.get(i));
        }
        size += dataSize;
        if (!getTripStopStatusList().isEmpty()) {  size += 1;
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(dataSize);
        }tripStopStatusMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < transportType_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeEnumSizeNoTag(transportType_.get(i));
        }
        size += dataSize;
        if (!getTransportTypeList().isEmpty()) {  size += 1;
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(dataSize);
        }transportTypeMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 1 * getWheelchairAccessibleList().size();
        size += dataSize;
        if (!getWheelchairAccessibleList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        wheelchairAccessibleMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 1 * getIsTimingStopList().size();
        size += dataSize;
        if (!getIsTimingStopList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        isTimingStopMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < stopCode_.size(); i++) {
          dataSize += computeStringSizeNoTag(stopCode_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getStopCodeList().size();
      }
      for (int i = 0; i < destination_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, destination_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < linePublicNumber_.size(); i++) {
          dataSize += computeStringSizeNoTag(linePublicNumber_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getLinePublicNumberList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < sideCode_.size(); i++) {
          dataSize += computeStringSizeNoTag(sideCode_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getSideCodeList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < lineDirection_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(lineDirection_.get(i));
        }
        size += dataSize;
        if (!getLineDirectionList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        lineDirectionMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < journeyMessageContent_.size(); i++) {
          dataSize += computeStringSizeNoTag(journeyMessageContent_.getRaw(i));
        }
        size += dataSize;
        size += 2 * getJourneyMessageContentList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < lineColor_.size(); i++) {
          dataSize += computeStringSizeNoTag(lineColor_.getRaw(i));
        }
        size += dataSize;
        size += 2 * getLineColorList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < lineTextColor_.size(); i++) {
          dataSize += computeStringSizeNoTag(lineTextColor_.getRaw(i));
        }
        size += dataSize;
        size += 2 * getLineTextColorList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < lineIcon_.size(); i++) {
          dataSize += computeStringSizeNoTag(lineIcon_.getRaw(i));
        }
        size += dataSize;
        size += 2 * getLineIconList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < destinationColor_.size(); i++) {
          dataSize += computeStringSizeNoTag(destinationColor_.getRaw(i));
        }
        size += dataSize;
        size += 2 * getDestinationColorList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < destinationTextColor_.size(); i++) {
          dataSize += computeStringSizeNoTag(destinationTextColor_.getRaw(i));
        }
        size += dataSize;
        size += 2 * getDestinationTextColorList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < destinationIcon_.size(); i++) {
          dataSize += computeStringSizeNoTag(destinationIcon_.getRaw(i));
        }
        size += dataSize;
        size += 2 * getDestinationIconList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < generatedTimestamp_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(generatedTimestamp_.get(i));
        }
        size += dataSize;
        if (!getGeneratedTimestampList().isEmpty()) {
          size += 2;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        generatedTimestampMemoizedSerializedSize = dataSize;
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes)) {
        return super.equals(obj);
      }
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes other = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes) obj;

      boolean result = true;
      result = result && getPassTimeHashList()
          .equals(other.getPassTimeHashList());
      result = result && getTargetArrivalTimeList()
          .equals(other.getTargetArrivalTimeList());
      result = result && getTargetDepartureTimeList()
          .equals(other.getTargetDepartureTimeList());
      result = result && getExpectedArrivalTimeList()
          .equals(other.getExpectedArrivalTimeList());
      result = result && getExpectedDepartureTimeList()
          .equals(other.getExpectedDepartureTimeList());
      result = result && getNumberOfCoachesList()
          .equals(other.getNumberOfCoachesList());
      result = result && tripStopStatus_.equals(other.tripStopStatus_);
      result = result && transportType_.equals(other.transportType_);
      result = result && getWheelchairAccessibleList()
          .equals(other.getWheelchairAccessibleList());
      result = result && getIsTimingStopList()
          .equals(other.getIsTimingStopList());
      result = result && getStopCodeList()
          .equals(other.getStopCodeList());
      result = result && getDestinationList()
          .equals(other.getDestinationList());
      result = result && getLinePublicNumberList()
          .equals(other.getLinePublicNumberList());
      result = result && getSideCodeList()
          .equals(other.getSideCodeList());
      result = result && getLineDirectionList()
          .equals(other.getLineDirectionList());
      result = result && getJourneyMessageContentList()
          .equals(other.getJourneyMessageContentList());
      result = result && getLineColorList()
          .equals(other.getLineColorList());
      result = result && getLineTextColorList()
          .equals(other.getLineTextColorList());
      result = result && getLineIconList()
          .equals(other.getLineIconList());
      result = result && getDestinationColorList()
          .equals(other.getDestinationColorList());
      result = result && getDestinationTextColorList()
          .equals(other.getDestinationTextColorList());
      result = result && getDestinationIconList()
          .equals(other.getDestinationIconList());
      result = result && getGeneratedTimestampList()
          .equals(other.getGeneratedTimestampList());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getPassTimeHashCount() > 0) {
        hash = (37 * hash) + PASS_TIME_HASH_FIELD_NUMBER;
        hash = (53 * hash) + getPassTimeHashList().hashCode();
      }
      if (getTargetArrivalTimeCount() > 0) {
        hash = (37 * hash) + TARGET_ARRIVAL_TIME_FIELD_NUMBER;
        hash = (53 * hash) + getTargetArrivalTimeList().hashCode();
      }
      if (getTargetDepartureTimeCount() > 0) {
        hash = (37 * hash) + TARGET_DEPARTURE_TIME_FIELD_NUMBER;
        hash = (53 * hash) + getTargetDepartureTimeList().hashCode();
      }
      if (getExpectedArrivalTimeCount() > 0) {
        hash = (37 * hash) + EXPECTED_ARRIVAL_TIME_FIELD_NUMBER;
        hash = (53 * hash) + getExpectedArrivalTimeList().hashCode();
      }
      if (getExpectedDepartureTimeCount() > 0) {
        hash = (37 * hash) + EXPECTED_DEPARTURE_TIME_FIELD_NUMBER;
        hash = (53 * hash) + getExpectedDepartureTimeList().hashCode();
      }
      if (getNumberOfCoachesCount() > 0) {
        hash = (37 * hash) + NUMBER_OF_COACHES_FIELD_NUMBER;
        hash = (53 * hash) + getNumberOfCoachesList().hashCode();
      }
      if (getTripStopStatusCount() > 0) {
        hash = (37 * hash) + TRIP_STOP_STATUS_FIELD_NUMBER;
        hash = (53 * hash) + tripStopStatus_.hashCode();
      }
      if (getTransportTypeCount() > 0) {
        hash = (37 * hash) + TRANSPORT_TYPE_FIELD_NUMBER;
        hash = (53 * hash) + transportType_.hashCode();
      }
      if (getWheelchairAccessibleCount() > 0) {
        hash = (37 * hash) + WHEELCHAIR_ACCESSIBLE_FIELD_NUMBER;
        hash = (53 * hash) + getWheelchairAccessibleList().hashCode();
      }
      if (getIsTimingStopCount() > 0) {
        hash = (37 * hash) + IS_TIMING_STOP_FIELD_NUMBER;
        hash = (53 * hash) + getIsTimingStopList().hashCode();
      }
      if (getStopCodeCount() > 0) {
        hash = (37 * hash) + STOP_CODE_FIELD_NUMBER;
        hash = (53 * hash) + getStopCodeList().hashCode();
      }
      if (getDestinationCount() > 0) {
        hash = (37 * hash) + DESTINATION_FIELD_NUMBER;
        hash = (53 * hash) + getDestinationList().hashCode();
      }
      if (getLinePublicNumberCount() > 0) {
        hash = (37 * hash) + LINE_PUBLIC_NUMBER_FIELD_NUMBER;
        hash = (53 * hash) + getLinePublicNumberList().hashCode();
      }
      if (getSideCodeCount() > 0) {
        hash = (37 * hash) + SIDE_CODE_FIELD_NUMBER;
        hash = (53 * hash) + getSideCodeList().hashCode();
      }
      if (getLineDirectionCount() > 0) {
        hash = (37 * hash) + LINE_DIRECTION_FIELD_NUMBER;
        hash = (53 * hash) + getLineDirectionList().hashCode();
      }
      if (getJourneyMessageContentCount() > 0) {
        hash = (37 * hash) + JOURNEY_MESSAGE_CONTENT_FIELD_NUMBER;
        hash = (53 * hash) + getJourneyMessageContentList().hashCode();
      }
      if (getLineColorCount() > 0) {
        hash = (37 * hash) + LINE_COLOR_FIELD_NUMBER;
        hash = (53 * hash) + getLineColorList().hashCode();
      }
      if (getLineTextColorCount() > 0) {
        hash = (37 * hash) + LINE_TEXT_COLOR_FIELD_NUMBER;
        hash = (53 * hash) + getLineTextColorList().hashCode();
      }
      if (getLineIconCount() > 0) {
        hash = (37 * hash) + LINE_ICON_FIELD_NUMBER;
        hash = (53 * hash) + getLineIconList().hashCode();
      }
      if (getDestinationColorCount() > 0) {
        hash = (37 * hash) + DESTINATION_COLOR_FIELD_NUMBER;
        hash = (53 * hash) + getDestinationColorList().hashCode();
      }
      if (getDestinationTextColorCount() > 0) {
        hash = (37 * hash) + DESTINATION_TEXT_COLOR_FIELD_NUMBER;
        hash = (53 * hash) + getDestinationTextColorList().hashCode();
      }
      if (getDestinationIconCount() > 0) {
        hash = (37 * hash) + DESTINATION_ICON_FIELD_NUMBER;
        hash = (53 * hash) + getDestinationIconList().hashCode();
      }
      if (getGeneratedTimestampCount() > 0) {
        hash = (37 * hash) + GENERATED_TIMESTAMP_FIELD_NUMBER;
        hash = (53 * hash) + getGeneratedTimestampList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * reisinformatie
     * </pre>
     *
     * Protobuf type {@code display_direct.PassingTimes}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:display_direct.PassingTimes)
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_PassingTimes_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_PassingTimes_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Builder.class);
      }

      // Construct using nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDestinationFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        passTimeHash_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        targetArrivalTime_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        targetDepartureTime_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        expectedArrivalTime_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        expectedDepartureTime_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        numberOfCoaches_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        tripStopStatus_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        transportType_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);
        wheelchairAccessible_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000100);
        isTimingStop_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000200);
        stopCode_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000400);
        if (destinationBuilder_ == null) {
          destination_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000800);
        } else {
          destinationBuilder_.clear();
        }
        linePublicNumber_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00001000);
        sideCode_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00002000);
        lineDirection_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00004000);
        journeyMessageContent_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00008000);
        lineColor_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00010000);
        lineTextColor_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00020000);
        lineIcon_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00040000);
        destinationColor_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00080000);
        destinationTextColor_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00100000);
        destinationIcon_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00200000);
        generatedTimestamp_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00400000);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_PassingTimes_descriptor;
      }

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes getDefaultInstanceForType() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.getDefaultInstance();
      }

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes build() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes buildPartial() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes result = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          passTimeHash_ = java.util.Collections.unmodifiableList(passTimeHash_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.passTimeHash_ = passTimeHash_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          targetArrivalTime_ = java.util.Collections.unmodifiableList(targetArrivalTime_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.targetArrivalTime_ = targetArrivalTime_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          targetDepartureTime_ = java.util.Collections.unmodifiableList(targetDepartureTime_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.targetDepartureTime_ = targetDepartureTime_;
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          expectedArrivalTime_ = java.util.Collections.unmodifiableList(expectedArrivalTime_);
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.expectedArrivalTime_ = expectedArrivalTime_;
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          expectedDepartureTime_ = java.util.Collections.unmodifiableList(expectedDepartureTime_);
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.expectedDepartureTime_ = expectedDepartureTime_;
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          numberOfCoaches_ = java.util.Collections.unmodifiableList(numberOfCoaches_);
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.numberOfCoaches_ = numberOfCoaches_;
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          tripStopStatus_ = java.util.Collections.unmodifiableList(tripStopStatus_);
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.tripStopStatus_ = tripStopStatus_;
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          transportType_ = java.util.Collections.unmodifiableList(transportType_);
          bitField0_ = (bitField0_ & ~0x00000080);
        }
        result.transportType_ = transportType_;
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          wheelchairAccessible_ = java.util.Collections.unmodifiableList(wheelchairAccessible_);
          bitField0_ = (bitField0_ & ~0x00000100);
        }
        result.wheelchairAccessible_ = wheelchairAccessible_;
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          isTimingStop_ = java.util.Collections.unmodifiableList(isTimingStop_);
          bitField0_ = (bitField0_ & ~0x00000200);
        }
        result.isTimingStop_ = isTimingStop_;
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          stopCode_ = stopCode_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000400);
        }
        result.stopCode_ = stopCode_;
        if (destinationBuilder_ == null) {
          if (((bitField0_ & 0x00000800) == 0x00000800)) {
            destination_ = java.util.Collections.unmodifiableList(destination_);
            bitField0_ = (bitField0_ & ~0x00000800);
          }
          result.destination_ = destination_;
        } else {
          result.destination_ = destinationBuilder_.build();
        }
        if (((bitField0_ & 0x00001000) == 0x00001000)) {
          linePublicNumber_ = linePublicNumber_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00001000);
        }
        result.linePublicNumber_ = linePublicNumber_;
        if (((bitField0_ & 0x00002000) == 0x00002000)) {
          sideCode_ = sideCode_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00002000);
        }
        result.sideCode_ = sideCode_;
        if (((bitField0_ & 0x00004000) == 0x00004000)) {
          lineDirection_ = java.util.Collections.unmodifiableList(lineDirection_);
          bitField0_ = (bitField0_ & ~0x00004000);
        }
        result.lineDirection_ = lineDirection_;
        if (((bitField0_ & 0x00008000) == 0x00008000)) {
          journeyMessageContent_ = journeyMessageContent_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00008000);
        }
        result.journeyMessageContent_ = journeyMessageContent_;
        if (((bitField0_ & 0x00010000) == 0x00010000)) {
          lineColor_ = lineColor_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00010000);
        }
        result.lineColor_ = lineColor_;
        if (((bitField0_ & 0x00020000) == 0x00020000)) {
          lineTextColor_ = lineTextColor_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00020000);
        }
        result.lineTextColor_ = lineTextColor_;
        if (((bitField0_ & 0x00040000) == 0x00040000)) {
          lineIcon_ = lineIcon_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00040000);
        }
        result.lineIcon_ = lineIcon_;
        if (((bitField0_ & 0x00080000) == 0x00080000)) {
          destinationColor_ = destinationColor_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00080000);
        }
        result.destinationColor_ = destinationColor_;
        if (((bitField0_ & 0x00100000) == 0x00100000)) {
          destinationTextColor_ = destinationTextColor_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00100000);
        }
        result.destinationTextColor_ = destinationTextColor_;
        if (((bitField0_ & 0x00200000) == 0x00200000)) {
          destinationIcon_ = destinationIcon_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00200000);
        }
        result.destinationIcon_ = destinationIcon_;
        if (((bitField0_ & 0x00400000) == 0x00400000)) {
          generatedTimestamp_ = java.util.Collections.unmodifiableList(generatedTimestamp_);
          bitField0_ = (bitField0_ & ~0x00400000);
        }
        result.generatedTimestamp_ = generatedTimestamp_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes) {
          return mergeFrom((nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes other) {
        if (other == nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.getDefaultInstance()) return this;
        if (!other.passTimeHash_.isEmpty()) {
          if (passTimeHash_.isEmpty()) {
            passTimeHash_ = other.passTimeHash_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensurePassTimeHashIsMutable();
            passTimeHash_.addAll(other.passTimeHash_);
          }
          onChanged();
        }
        if (!other.targetArrivalTime_.isEmpty()) {
          if (targetArrivalTime_.isEmpty()) {
            targetArrivalTime_ = other.targetArrivalTime_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureTargetArrivalTimeIsMutable();
            targetArrivalTime_.addAll(other.targetArrivalTime_);
          }
          onChanged();
        }
        if (!other.targetDepartureTime_.isEmpty()) {
          if (targetDepartureTime_.isEmpty()) {
            targetDepartureTime_ = other.targetDepartureTime_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureTargetDepartureTimeIsMutable();
            targetDepartureTime_.addAll(other.targetDepartureTime_);
          }
          onChanged();
        }
        if (!other.expectedArrivalTime_.isEmpty()) {
          if (expectedArrivalTime_.isEmpty()) {
            expectedArrivalTime_ = other.expectedArrivalTime_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureExpectedArrivalTimeIsMutable();
            expectedArrivalTime_.addAll(other.expectedArrivalTime_);
          }
          onChanged();
        }
        if (!other.expectedDepartureTime_.isEmpty()) {
          if (expectedDepartureTime_.isEmpty()) {
            expectedDepartureTime_ = other.expectedDepartureTime_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureExpectedDepartureTimeIsMutable();
            expectedDepartureTime_.addAll(other.expectedDepartureTime_);
          }
          onChanged();
        }
        if (!other.numberOfCoaches_.isEmpty()) {
          if (numberOfCoaches_.isEmpty()) {
            numberOfCoaches_ = other.numberOfCoaches_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureNumberOfCoachesIsMutable();
            numberOfCoaches_.addAll(other.numberOfCoaches_);
          }
          onChanged();
        }
        if (!other.tripStopStatus_.isEmpty()) {
          if (tripStopStatus_.isEmpty()) {
            tripStopStatus_ = other.tripStopStatus_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureTripStopStatusIsMutable();
            tripStopStatus_.addAll(other.tripStopStatus_);
          }
          onChanged();
        }
        if (!other.transportType_.isEmpty()) {
          if (transportType_.isEmpty()) {
            transportType_ = other.transportType_;
            bitField0_ = (bitField0_ & ~0x00000080);
          } else {
            ensureTransportTypeIsMutable();
            transportType_.addAll(other.transportType_);
          }
          onChanged();
        }
        if (!other.wheelchairAccessible_.isEmpty()) {
          if (wheelchairAccessible_.isEmpty()) {
            wheelchairAccessible_ = other.wheelchairAccessible_;
            bitField0_ = (bitField0_ & ~0x00000100);
          } else {
            ensureWheelchairAccessibleIsMutable();
            wheelchairAccessible_.addAll(other.wheelchairAccessible_);
          }
          onChanged();
        }
        if (!other.isTimingStop_.isEmpty()) {
          if (isTimingStop_.isEmpty()) {
            isTimingStop_ = other.isTimingStop_;
            bitField0_ = (bitField0_ & ~0x00000200);
          } else {
            ensureIsTimingStopIsMutable();
            isTimingStop_.addAll(other.isTimingStop_);
          }
          onChanged();
        }
        if (!other.stopCode_.isEmpty()) {
          if (stopCode_.isEmpty()) {
            stopCode_ = other.stopCode_;
            bitField0_ = (bitField0_ & ~0x00000400);
          } else {
            ensureStopCodeIsMutable();
            stopCode_.addAll(other.stopCode_);
          }
          onChanged();
        }
        if (destinationBuilder_ == null) {
          if (!other.destination_.isEmpty()) {
            if (destination_.isEmpty()) {
              destination_ = other.destination_;
              bitField0_ = (bitField0_ & ~0x00000800);
            } else {
              ensureDestinationIsMutable();
              destination_.addAll(other.destination_);
            }
            onChanged();
          }
        } else {
          if (!other.destination_.isEmpty()) {
            if (destinationBuilder_.isEmpty()) {
              destinationBuilder_.dispose();
              destinationBuilder_ = null;
              destination_ = other.destination_;
              bitField0_ = (bitField0_ & ~0x00000800);
              destinationBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getDestinationFieldBuilder() : null;
            } else {
              destinationBuilder_.addAllMessages(other.destination_);
            }
          }
        }
        if (!other.linePublicNumber_.isEmpty()) {
          if (linePublicNumber_.isEmpty()) {
            linePublicNumber_ = other.linePublicNumber_;
            bitField0_ = (bitField0_ & ~0x00001000);
          } else {
            ensureLinePublicNumberIsMutable();
            linePublicNumber_.addAll(other.linePublicNumber_);
          }
          onChanged();
        }
        if (!other.sideCode_.isEmpty()) {
          if (sideCode_.isEmpty()) {
            sideCode_ = other.sideCode_;
            bitField0_ = (bitField0_ & ~0x00002000);
          } else {
            ensureSideCodeIsMutable();
            sideCode_.addAll(other.sideCode_);
          }
          onChanged();
        }
        if (!other.lineDirection_.isEmpty()) {
          if (lineDirection_.isEmpty()) {
            lineDirection_ = other.lineDirection_;
            bitField0_ = (bitField0_ & ~0x00004000);
          } else {
            ensureLineDirectionIsMutable();
            lineDirection_.addAll(other.lineDirection_);
          }
          onChanged();
        }
        if (!other.journeyMessageContent_.isEmpty()) {
          if (journeyMessageContent_.isEmpty()) {
            journeyMessageContent_ = other.journeyMessageContent_;
            bitField0_ = (bitField0_ & ~0x00008000);
          } else {
            ensureJourneyMessageContentIsMutable();
            journeyMessageContent_.addAll(other.journeyMessageContent_);
          }
          onChanged();
        }
        if (!other.lineColor_.isEmpty()) {
          if (lineColor_.isEmpty()) {
            lineColor_ = other.lineColor_;
            bitField0_ = (bitField0_ & ~0x00010000);
          } else {
            ensureLineColorIsMutable();
            lineColor_.addAll(other.lineColor_);
          }
          onChanged();
        }
        if (!other.lineTextColor_.isEmpty()) {
          if (lineTextColor_.isEmpty()) {
            lineTextColor_ = other.lineTextColor_;
            bitField0_ = (bitField0_ & ~0x00020000);
          } else {
            ensureLineTextColorIsMutable();
            lineTextColor_.addAll(other.lineTextColor_);
          }
          onChanged();
        }
        if (!other.lineIcon_.isEmpty()) {
          if (lineIcon_.isEmpty()) {
            lineIcon_ = other.lineIcon_;
            bitField0_ = (bitField0_ & ~0x00040000);
          } else {
            ensureLineIconIsMutable();
            lineIcon_.addAll(other.lineIcon_);
          }
          onChanged();
        }
        if (!other.destinationColor_.isEmpty()) {
          if (destinationColor_.isEmpty()) {
            destinationColor_ = other.destinationColor_;
            bitField0_ = (bitField0_ & ~0x00080000);
          } else {
            ensureDestinationColorIsMutable();
            destinationColor_.addAll(other.destinationColor_);
          }
          onChanged();
        }
        if (!other.destinationTextColor_.isEmpty()) {
          if (destinationTextColor_.isEmpty()) {
            destinationTextColor_ = other.destinationTextColor_;
            bitField0_ = (bitField0_ & ~0x00100000);
          } else {
            ensureDestinationTextColorIsMutable();
            destinationTextColor_.addAll(other.destinationTextColor_);
          }
          onChanged();
        }
        if (!other.destinationIcon_.isEmpty()) {
          if (destinationIcon_.isEmpty()) {
            destinationIcon_ = other.destinationIcon_;
            bitField0_ = (bitField0_ & ~0x00200000);
          } else {
            ensureDestinationIconIsMutable();
            destinationIcon_.addAll(other.destinationIcon_);
          }
          onChanged();
        }
        if (!other.generatedTimestamp_.isEmpty()) {
          if (generatedTimestamp_.isEmpty()) {
            generatedTimestamp_ = other.generatedTimestamp_;
            bitField0_ = (bitField0_ & ~0x00400000);
          } else {
            ensureGeneratedTimestampIsMutable();
            generatedTimestamp_.addAll(other.generatedTimestamp_);
          }
          onChanged();
        }
        onChanged();
        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 {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<java.lang.Integer> passTimeHash_ = java.util.Collections.emptyList();
      private void ensurePassTimeHashIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          passTimeHash_ = new java.util.ArrayList<java.lang.Integer>(passTimeHash_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated uint32 pass_time_hash = 1;</code>
       */
      public java.util.List<java.lang.Integer>
          getPassTimeHashList() {
        return java.util.Collections.unmodifiableList(passTimeHash_);
      }
      /**
       * <code>repeated uint32 pass_time_hash = 1;</code>
       */
      public int getPassTimeHashCount() {
        return passTimeHash_.size();
      }
      /**
       * <code>repeated uint32 pass_time_hash = 1;</code>
       */
      public int getPassTimeHash(int index) {
        return passTimeHash_.get(index);
      }
      /**
       * <code>repeated uint32 pass_time_hash = 1;</code>
       */
      public Builder setPassTimeHash(
          int index, int value) {
        ensurePassTimeHashIsMutable();
        passTimeHash_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 pass_time_hash = 1;</code>
       */
      public Builder addPassTimeHash(int value) {
        ensurePassTimeHashIsMutable();
        passTimeHash_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 pass_time_hash = 1;</code>
       */
      public Builder addAllPassTimeHash(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensurePassTimeHashIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, passTimeHash_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 pass_time_hash = 1;</code>
       */
      public Builder clearPassTimeHash() {
        passTimeHash_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> targetArrivalTime_ = java.util.Collections.emptyList();
      private void ensureTargetArrivalTimeIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          targetArrivalTime_ = new java.util.ArrayList<java.lang.Integer>(targetArrivalTime_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated uint32 target_arrival_time = 2;</code>
       */
      public java.util.List<java.lang.Integer>
          getTargetArrivalTimeList() {
        return java.util.Collections.unmodifiableList(targetArrivalTime_);
      }
      /**
       * <code>repeated uint32 target_arrival_time = 2;</code>
       */
      public int getTargetArrivalTimeCount() {
        return targetArrivalTime_.size();
      }
      /**
       * <code>repeated uint32 target_arrival_time = 2;</code>
       */
      public int getTargetArrivalTime(int index) {
        return targetArrivalTime_.get(index);
      }
      /**
       * <code>repeated uint32 target_arrival_time = 2;</code>
       */
      public Builder setTargetArrivalTime(
          int index, int value) {
        ensureTargetArrivalTimeIsMutable();
        targetArrivalTime_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 target_arrival_time = 2;</code>
       */
      public Builder addTargetArrivalTime(int value) {
        ensureTargetArrivalTimeIsMutable();
        targetArrivalTime_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 target_arrival_time = 2;</code>
       */
      public Builder addAllTargetArrivalTime(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureTargetArrivalTimeIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, targetArrivalTime_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 target_arrival_time = 2;</code>
       */
      public Builder clearTargetArrivalTime() {
        targetArrivalTime_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> targetDepartureTime_ = java.util.Collections.emptyList();
      private void ensureTargetDepartureTimeIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          targetDepartureTime_ = new java.util.ArrayList<java.lang.Integer>(targetDepartureTime_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated uint32 target_departure_time = 3;</code>
       */
      public java.util.List<java.lang.Integer>
          getTargetDepartureTimeList() {
        return java.util.Collections.unmodifiableList(targetDepartureTime_);
      }
      /**
       * <code>repeated uint32 target_departure_time = 3;</code>
       */
      public int getTargetDepartureTimeCount() {
        return targetDepartureTime_.size();
      }
      /**
       * <code>repeated uint32 target_departure_time = 3;</code>
       */
      public int getTargetDepartureTime(int index) {
        return targetDepartureTime_.get(index);
      }
      /**
       * <code>repeated uint32 target_departure_time = 3;</code>
       */
      public Builder setTargetDepartureTime(
          int index, int value) {
        ensureTargetDepartureTimeIsMutable();
        targetDepartureTime_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 target_departure_time = 3;</code>
       */
      public Builder addTargetDepartureTime(int value) {
        ensureTargetDepartureTimeIsMutable();
        targetDepartureTime_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 target_departure_time = 3;</code>
       */
      public Builder addAllTargetDepartureTime(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureTargetDepartureTimeIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, targetDepartureTime_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 target_departure_time = 3;</code>
       */
      public Builder clearTargetDepartureTime() {
        targetDepartureTime_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> expectedArrivalTime_ = java.util.Collections.emptyList();
      private void ensureExpectedArrivalTimeIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          expectedArrivalTime_ = new java.util.ArrayList<java.lang.Integer>(expectedArrivalTime_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <code>repeated uint32 expected_arrival_time = 4;</code>
       */
      public java.util.List<java.lang.Integer>
          getExpectedArrivalTimeList() {
        return java.util.Collections.unmodifiableList(expectedArrivalTime_);
      }
      /**
       * <code>repeated uint32 expected_arrival_time = 4;</code>
       */
      public int getExpectedArrivalTimeCount() {
        return expectedArrivalTime_.size();
      }
      /**
       * <code>repeated uint32 expected_arrival_time = 4;</code>
       */
      public int getExpectedArrivalTime(int index) {
        return expectedArrivalTime_.get(index);
      }
      /**
       * <code>repeated uint32 expected_arrival_time = 4;</code>
       */
      public Builder setExpectedArrivalTime(
          int index, int value) {
        ensureExpectedArrivalTimeIsMutable();
        expectedArrivalTime_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 expected_arrival_time = 4;</code>
       */
      public Builder addExpectedArrivalTime(int value) {
        ensureExpectedArrivalTimeIsMutable();
        expectedArrivalTime_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 expected_arrival_time = 4;</code>
       */
      public Builder addAllExpectedArrivalTime(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureExpectedArrivalTimeIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, expectedArrivalTime_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 expected_arrival_time = 4;</code>
       */
      public Builder clearExpectedArrivalTime() {
        expectedArrivalTime_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> expectedDepartureTime_ = java.util.Collections.emptyList();
      private void ensureExpectedDepartureTimeIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          expectedDepartureTime_ = new java.util.ArrayList<java.lang.Integer>(expectedDepartureTime_);
          bitField0_ |= 0x00000010;
         }
      }
      /**
       * <code>repeated uint32 expected_departure_time = 5;</code>
       */
      public java.util.List<java.lang.Integer>
          getExpectedDepartureTimeList() {
        return java.util.Collections.unmodifiableList(expectedDepartureTime_);
      }
      /**
       * <code>repeated uint32 expected_departure_time = 5;</code>
       */
      public int getExpectedDepartureTimeCount() {
        return expectedDepartureTime_.size();
      }
      /**
       * <code>repeated uint32 expected_departure_time = 5;</code>
       */
      public int getExpectedDepartureTime(int index) {
        return expectedDepartureTime_.get(index);
      }
      /**
       * <code>repeated uint32 expected_departure_time = 5;</code>
       */
      public Builder setExpectedDepartureTime(
          int index, int value) {
        ensureExpectedDepartureTimeIsMutable();
        expectedDepartureTime_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 expected_departure_time = 5;</code>
       */
      public Builder addExpectedDepartureTime(int value) {
        ensureExpectedDepartureTimeIsMutable();
        expectedDepartureTime_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 expected_departure_time = 5;</code>
       */
      public Builder addAllExpectedDepartureTime(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureExpectedDepartureTimeIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, expectedDepartureTime_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 expected_departure_time = 5;</code>
       */
      public Builder clearExpectedDepartureTime() {
        expectedDepartureTime_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> numberOfCoaches_ = java.util.Collections.emptyList();
      private void ensureNumberOfCoachesIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          numberOfCoaches_ = new java.util.ArrayList<java.lang.Integer>(numberOfCoaches_);
          bitField0_ |= 0x00000020;
         }
      }
      /**
       * <code>repeated uint32 number_of_coaches = 6;</code>
       */
      public java.util.List<java.lang.Integer>
          getNumberOfCoachesList() {
        return java.util.Collections.unmodifiableList(numberOfCoaches_);
      }
      /**
       * <code>repeated uint32 number_of_coaches = 6;</code>
       */
      public int getNumberOfCoachesCount() {
        return numberOfCoaches_.size();
      }
      /**
       * <code>repeated uint32 number_of_coaches = 6;</code>
       */
      public int getNumberOfCoaches(int index) {
        return numberOfCoaches_.get(index);
      }
      /**
       * <code>repeated uint32 number_of_coaches = 6;</code>
       */
      public Builder setNumberOfCoaches(
          int index, int value) {
        ensureNumberOfCoachesIsMutable();
        numberOfCoaches_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 number_of_coaches = 6;</code>
       */
      public Builder addNumberOfCoaches(int value) {
        ensureNumberOfCoachesIsMutable();
        numberOfCoaches_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 number_of_coaches = 6;</code>
       */
      public Builder addAllNumberOfCoaches(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureNumberOfCoachesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, numberOfCoaches_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 number_of_coaches = 6;</code>
       */
      public Builder clearNumberOfCoaches() {
        numberOfCoaches_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> tripStopStatus_ =
        java.util.Collections.emptyList();
      private void ensureTripStopStatusIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          tripStopStatus_ = new java.util.ArrayList<java.lang.Integer>(tripStopStatus_);
          bitField0_ |= 0x00000040;
        }
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
       */
      public java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TripStopStatus> getTripStopStatusList() {
        return new com.google.protobuf.Internal.ListAdapter<
            java.lang.Integer, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TripStopStatus>(tripStopStatus_, tripStopStatus_converter_);
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
       */
      public int getTripStopStatusCount() {
        return tripStopStatus_.size();
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TripStopStatus getTripStopStatus(int index) {
        return tripStopStatus_converter_.convert(tripStopStatus_.get(index));
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
       */
      public Builder setTripStopStatus(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TripStopStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTripStopStatusIsMutable();
        tripStopStatus_.set(index, value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
       */
      public Builder addTripStopStatus(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TripStopStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTripStopStatusIsMutable();
        tripStopStatus_.add(value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
       */
      public Builder addAllTripStopStatus(
          java.lang.Iterable<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TripStopStatus> values) {
        ensureTripStopStatusIsMutable();
        for (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TripStopStatus value : values) {
          tripStopStatus_.add(value.getNumber());
        }
        onChanged();
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
       */
      public Builder clearTripStopStatus() {
        tripStopStatus_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
       */
      public java.util.List<java.lang.Integer>
      getTripStopStatusValueList() {
        return java.util.Collections.unmodifiableList(tripStopStatus_);
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
       */
      public int getTripStopStatusValue(int index) {
        return tripStopStatus_.get(index);
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
       */
      public Builder setTripStopStatusValue(
          int index, int value) {
        ensureTripStopStatusIsMutable();
        tripStopStatus_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
       */
      public Builder addTripStopStatusValue(int value) {
        ensureTripStopStatusIsMutable();
        tripStopStatus_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TripStopStatus trip_stop_status = 7;</code>
       */
      public Builder addAllTripStopStatusValue(
          java.lang.Iterable<java.lang.Integer> values) {
        ensureTripStopStatusIsMutable();
        for (int value : values) {
          tripStopStatus_.add(value);
        }
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> transportType_ =
        java.util.Collections.emptyList();
      private void ensureTransportTypeIsMutable() {
        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
          transportType_ = new java.util.ArrayList<java.lang.Integer>(transportType_);
          bitField0_ |= 0x00000080;
        }
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
       */
      public java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TransportType> getTransportTypeList() {
        return new com.google.protobuf.Internal.ListAdapter<
            java.lang.Integer, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TransportType>(transportType_, transportType_converter_);
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
       */
      public int getTransportTypeCount() {
        return transportType_.size();
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TransportType getTransportType(int index) {
        return transportType_converter_.convert(transportType_.get(index));
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
       */
      public Builder setTransportType(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TransportType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTransportTypeIsMutable();
        transportType_.set(index, value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
       */
      public Builder addTransportType(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TransportType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureTransportTypeIsMutable();
        transportType_.add(value.getNumber());
        onChanged();
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
       */
      public Builder addAllTransportType(
          java.lang.Iterable<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TransportType> values) {
        ensureTransportTypeIsMutable();
        for (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.TransportType value : values) {
          transportType_.add(value.getNumber());
        }
        onChanged();
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
       */
      public Builder clearTransportType() {
        transportType_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
       */
      public java.util.List<java.lang.Integer>
      getTransportTypeValueList() {
        return java.util.Collections.unmodifiableList(transportType_);
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
       */
      public int getTransportTypeValue(int index) {
        return transportType_.get(index);
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
       */
      public Builder setTransportTypeValue(
          int index, int value) {
        ensureTransportTypeIsMutable();
        transportType_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
       */
      public Builder addTransportTypeValue(int value) {
        ensureTransportTypeIsMutable();
        transportType_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes.TransportType transport_type = 8;</code>
       */
      public Builder addAllTransportTypeValue(
          java.lang.Iterable<java.lang.Integer> values) {
        ensureTransportTypeIsMutable();
        for (int value : values) {
          transportType_.add(value);
        }
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Boolean> wheelchairAccessible_ = java.util.Collections.emptyList();
      private void ensureWheelchairAccessibleIsMutable() {
        if (!((bitField0_ & 0x00000100) == 0x00000100)) {
          wheelchairAccessible_ = new java.util.ArrayList<java.lang.Boolean>(wheelchairAccessible_);
          bitField0_ |= 0x00000100;
         }
      }
      /**
       * <code>repeated bool wheelchair_accessible = 9;</code>
       */
      public java.util.List<java.lang.Boolean>
          getWheelchairAccessibleList() {
        return java.util.Collections.unmodifiableList(wheelchairAccessible_);
      }
      /**
       * <code>repeated bool wheelchair_accessible = 9;</code>
       */
      public int getWheelchairAccessibleCount() {
        return wheelchairAccessible_.size();
      }
      /**
       * <code>repeated bool wheelchair_accessible = 9;</code>
       */
      public boolean getWheelchairAccessible(int index) {
        return wheelchairAccessible_.get(index);
      }
      /**
       * <code>repeated bool wheelchair_accessible = 9;</code>
       */
      public Builder setWheelchairAccessible(
          int index, boolean value) {
        ensureWheelchairAccessibleIsMutable();
        wheelchairAccessible_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bool wheelchair_accessible = 9;</code>
       */
      public Builder addWheelchairAccessible(boolean value) {
        ensureWheelchairAccessibleIsMutable();
        wheelchairAccessible_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bool wheelchair_accessible = 9;</code>
       */
      public Builder addAllWheelchairAccessible(
          java.lang.Iterable<? extends java.lang.Boolean> values) {
        ensureWheelchairAccessibleIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, wheelchairAccessible_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bool wheelchair_accessible = 9;</code>
       */
      public Builder clearWheelchairAccessible() {
        wheelchairAccessible_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000100);
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Boolean> isTimingStop_ = java.util.Collections.emptyList();
      private void ensureIsTimingStopIsMutable() {
        if (!((bitField0_ & 0x00000200) == 0x00000200)) {
          isTimingStop_ = new java.util.ArrayList<java.lang.Boolean>(isTimingStop_);
          bitField0_ |= 0x00000200;
         }
      }
      /**
       * <code>repeated bool is_timing_stop = 10;</code>
       */
      public java.util.List<java.lang.Boolean>
          getIsTimingStopList() {
        return java.util.Collections.unmodifiableList(isTimingStop_);
      }
      /**
       * <code>repeated bool is_timing_stop = 10;</code>
       */
      public int getIsTimingStopCount() {
        return isTimingStop_.size();
      }
      /**
       * <code>repeated bool is_timing_stop = 10;</code>
       */
      public boolean getIsTimingStop(int index) {
        return isTimingStop_.get(index);
      }
      /**
       * <code>repeated bool is_timing_stop = 10;</code>
       */
      public Builder setIsTimingStop(
          int index, boolean value) {
        ensureIsTimingStopIsMutable();
        isTimingStop_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bool is_timing_stop = 10;</code>
       */
      public Builder addIsTimingStop(boolean value) {
        ensureIsTimingStopIsMutable();
        isTimingStop_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bool is_timing_stop = 10;</code>
       */
      public Builder addAllIsTimingStop(
          java.lang.Iterable<? extends java.lang.Boolean> values) {
        ensureIsTimingStopIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, isTimingStop_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated bool is_timing_stop = 10;</code>
       */
      public Builder clearIsTimingStop() {
        isTimingStop_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000200);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList stopCode_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureStopCodeIsMutable() {
        if (!((bitField0_ & 0x00000400) == 0x00000400)) {
          stopCode_ = new com.google.protobuf.LazyStringArrayList(stopCode_);
          bitField0_ |= 0x00000400;
         }
      }
      /**
       * <code>repeated string stop_code = 11;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getStopCodeList() {
        return stopCode_.getUnmodifiableView();
      }
      /**
       * <code>repeated string stop_code = 11;</code>
       */
      public int getStopCodeCount() {
        return stopCode_.size();
      }
      /**
       * <code>repeated string stop_code = 11;</code>
       */
      public java.lang.String getStopCode(int index) {
        return stopCode_.get(index);
      }
      /**
       * <code>repeated string stop_code = 11;</code>
       */
      public com.google.protobuf.ByteString
          getStopCodeBytes(int index) {
        return stopCode_.getByteString(index);
      }
      /**
       * <code>repeated string stop_code = 11;</code>
       */
      public Builder setStopCode(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStopCodeIsMutable();
        stopCode_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string stop_code = 11;</code>
       */
      public Builder addStopCode(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureStopCodeIsMutable();
        stopCode_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string stop_code = 11;</code>
       */
      public Builder addAllStopCode(
          java.lang.Iterable<java.lang.String> values) {
        ensureStopCodeIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, stopCode_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string stop_code = 11;</code>
       */
      public Builder clearStopCode() {
        stopCode_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000400);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string stop_code = 11;</code>
       */
      public Builder addStopCodeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureStopCodeIsMutable();
        stopCode_.add(value);
        onChanged();
        return this;
      }

      private java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination> destination_ =
        java.util.Collections.emptyList();
      private void ensureDestinationIsMutable() {
        if (!((bitField0_ & 0x00000800) == 0x00000800)) {
          destination_ = new java.util.ArrayList<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination>(destination_);
          bitField0_ |= 0x00000800;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination.Builder, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.DestinationOrBuilder> destinationBuilder_;

      /**
       * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
       */
      public java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination> getDestinationList() {
        if (destinationBuilder_ == null) {
          return java.util.Collections.unmodifiableList(destination_);
        } else {
          return destinationBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
       */
      public int getDestinationCount() {
        if (destinationBuilder_ == null) {
          return destination_.size();
        } else {
          return destinationBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination getDestination(int index) {
        if (destinationBuilder_ == null) {
          return destination_.get(index);
        } else {
          return destinationBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
       */
      public Builder setDestination(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination value) {
        if (destinationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDestinationIsMutable();
          destination_.set(index, value);
          onChanged();
        } else {
          destinationBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
       */
      public Builder setDestination(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination.Builder builderForValue) {
        if (destinationBuilder_ == null) {
          ensureDestinationIsMutable();
          destination_.set(index, builderForValue.build());
          onChanged();
        } else {
          destinationBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
       */
      public Builder addDestination(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination value) {
        if (destinationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDestinationIsMutable();
          destination_.add(value);
          onChanged();
        } else {
          destinationBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
       */
      public Builder addDestination(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination value) {
        if (destinationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDestinationIsMutable();
          destination_.add(index, value);
          onChanged();
        } else {
          destinationBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
       */
      public Builder addDestination(
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination.Builder builderForValue) {
        if (destinationBuilder_ == null) {
          ensureDestinationIsMutable();
          destination_.add(builderForValue.build());
          onChanged();
        } else {
          destinationBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
       */
      public Builder addDestination(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination.Builder builderForValue) {
        if (destinationBuilder_ == null) {
          ensureDestinationIsMutable();
          destination_.add(index, builderForValue.build());
          onChanged();
        } else {
          destinationBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
       */
      public Builder addAllDestination(
          java.lang.Iterable<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination> values) {
        if (destinationBuilder_ == null) {
          ensureDestinationIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, destination_);
          onChanged();
        } else {
          destinationBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
       */
      public Builder clearDestination() {
        if (destinationBuilder_ == null) {
          destination_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000800);
          onChanged();
        } else {
          destinationBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
       */
      public Builder removeDestination(int index) {
        if (destinationBuilder_ == null) {
          ensureDestinationIsMutable();
          destination_.remove(index);
          onChanged();
        } else {
          destinationBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination.Builder getDestinationBuilder(
          int index) {
        return getDestinationFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.DestinationOrBuilder getDestinationOrBuilder(
          int index) {
        if (destinationBuilder_ == null) {
          return destination_.get(index);  } else {
          return destinationBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
       */
      public java.util.List<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.DestinationOrBuilder> 
           getDestinationOrBuilderList() {
        if (destinationBuilder_ != null) {
          return destinationBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(destination_);
        }
      }
      /**
       * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination.Builder addDestinationBuilder() {
        return getDestinationFieldBuilder().addBuilder(
            nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination.getDefaultInstance());
      }
      /**
       * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination.Builder addDestinationBuilder(
          int index) {
        return getDestinationFieldBuilder().addBuilder(
            index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination.getDefaultInstance());
      }
      /**
       * <code>repeated .display_direct.PassingTimes.Destination destination = 12;</code>
       */
      public java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination.Builder> 
           getDestinationBuilderList() {
        return getDestinationFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination.Builder, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.DestinationOrBuilder> 
          getDestinationFieldBuilder() {
        if (destinationBuilder_ == null) {
          destinationBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Destination.Builder, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.DestinationOrBuilder>(
                  destination_,
                  ((bitField0_ & 0x00000800) == 0x00000800),
                  getParentForChildren(),
                  isClean());
          destination_ = null;
        }
        return destinationBuilder_;
      }

      private com.google.protobuf.LazyStringList linePublicNumber_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureLinePublicNumberIsMutable() {
        if (!((bitField0_ & 0x00001000) == 0x00001000)) {
          linePublicNumber_ = new com.google.protobuf.LazyStringArrayList(linePublicNumber_);
          bitField0_ |= 0x00001000;
         }
      }
      /**
       * <code>repeated string line_public_number = 13;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getLinePublicNumberList() {
        return linePublicNumber_.getUnmodifiableView();
      }
      /**
       * <code>repeated string line_public_number = 13;</code>
       */
      public int getLinePublicNumberCount() {
        return linePublicNumber_.size();
      }
      /**
       * <code>repeated string line_public_number = 13;</code>
       */
      public java.lang.String getLinePublicNumber(int index) {
        return linePublicNumber_.get(index);
      }
      /**
       * <code>repeated string line_public_number = 13;</code>
       */
      public com.google.protobuf.ByteString
          getLinePublicNumberBytes(int index) {
        return linePublicNumber_.getByteString(index);
      }
      /**
       * <code>repeated string line_public_number = 13;</code>
       */
      public Builder setLinePublicNumber(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureLinePublicNumberIsMutable();
        linePublicNumber_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string line_public_number = 13;</code>
       */
      public Builder addLinePublicNumber(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureLinePublicNumberIsMutable();
        linePublicNumber_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string line_public_number = 13;</code>
       */
      public Builder addAllLinePublicNumber(
          java.lang.Iterable<java.lang.String> values) {
        ensureLinePublicNumberIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, linePublicNumber_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string line_public_number = 13;</code>
       */
      public Builder clearLinePublicNumber() {
        linePublicNumber_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00001000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string line_public_number = 13;</code>
       */
      public Builder addLinePublicNumberBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureLinePublicNumberIsMutable();
        linePublicNumber_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList sideCode_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureSideCodeIsMutable() {
        if (!((bitField0_ & 0x00002000) == 0x00002000)) {
          sideCode_ = new com.google.protobuf.LazyStringArrayList(sideCode_);
          bitField0_ |= 0x00002000;
         }
      }
      /**
       * <code>repeated string side_code = 14;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getSideCodeList() {
        return sideCode_.getUnmodifiableView();
      }
      /**
       * <code>repeated string side_code = 14;</code>
       */
      public int getSideCodeCount() {
        return sideCode_.size();
      }
      /**
       * <code>repeated string side_code = 14;</code>
       */
      public java.lang.String getSideCode(int index) {
        return sideCode_.get(index);
      }
      /**
       * <code>repeated string side_code = 14;</code>
       */
      public com.google.protobuf.ByteString
          getSideCodeBytes(int index) {
        return sideCode_.getByteString(index);
      }
      /**
       * <code>repeated string side_code = 14;</code>
       */
      public Builder setSideCode(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSideCodeIsMutable();
        sideCode_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string side_code = 14;</code>
       */
      public Builder addSideCode(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSideCodeIsMutable();
        sideCode_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string side_code = 14;</code>
       */
      public Builder addAllSideCode(
          java.lang.Iterable<java.lang.String> values) {
        ensureSideCodeIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, sideCode_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string side_code = 14;</code>
       */
      public Builder clearSideCode() {
        sideCode_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00002000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string side_code = 14;</code>
       */
      public Builder addSideCodeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureSideCodeIsMutable();
        sideCode_.add(value);
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> lineDirection_ = java.util.Collections.emptyList();
      private void ensureLineDirectionIsMutable() {
        if (!((bitField0_ & 0x00004000) == 0x00004000)) {
          lineDirection_ = new java.util.ArrayList<java.lang.Integer>(lineDirection_);
          bitField0_ |= 0x00004000;
         }
      }
      /**
       * <code>repeated uint32 line_direction = 15;</code>
       */
      public java.util.List<java.lang.Integer>
          getLineDirectionList() {
        return java.util.Collections.unmodifiableList(lineDirection_);
      }
      /**
       * <code>repeated uint32 line_direction = 15;</code>
       */
      public int getLineDirectionCount() {
        return lineDirection_.size();
      }
      /**
       * <code>repeated uint32 line_direction = 15;</code>
       */
      public int getLineDirection(int index) {
        return lineDirection_.get(index);
      }
      /**
       * <code>repeated uint32 line_direction = 15;</code>
       */
      public Builder setLineDirection(
          int index, int value) {
        ensureLineDirectionIsMutable();
        lineDirection_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 line_direction = 15;</code>
       */
      public Builder addLineDirection(int value) {
        ensureLineDirectionIsMutable();
        lineDirection_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 line_direction = 15;</code>
       */
      public Builder addAllLineDirection(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureLineDirectionIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, lineDirection_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 line_direction = 15;</code>
       */
      public Builder clearLineDirection() {
        lineDirection_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00004000);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList journeyMessageContent_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureJourneyMessageContentIsMutable() {
        if (!((bitField0_ & 0x00008000) == 0x00008000)) {
          journeyMessageContent_ = new com.google.protobuf.LazyStringArrayList(journeyMessageContent_);
          bitField0_ |= 0x00008000;
         }
      }
      /**
       * <code>repeated string journey_message_content = 16;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getJourneyMessageContentList() {
        return journeyMessageContent_.getUnmodifiableView();
      }
      /**
       * <code>repeated string journey_message_content = 16;</code>
       */
      public int getJourneyMessageContentCount() {
        return journeyMessageContent_.size();
      }
      /**
       * <code>repeated string journey_message_content = 16;</code>
       */
      public java.lang.String getJourneyMessageContent(int index) {
        return journeyMessageContent_.get(index);
      }
      /**
       * <code>repeated string journey_message_content = 16;</code>
       */
      public com.google.protobuf.ByteString
          getJourneyMessageContentBytes(int index) {
        return journeyMessageContent_.getByteString(index);
      }
      /**
       * <code>repeated string journey_message_content = 16;</code>
       */
      public Builder setJourneyMessageContent(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureJourneyMessageContentIsMutable();
        journeyMessageContent_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string journey_message_content = 16;</code>
       */
      public Builder addJourneyMessageContent(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureJourneyMessageContentIsMutable();
        journeyMessageContent_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string journey_message_content = 16;</code>
       */
      public Builder addAllJourneyMessageContent(
          java.lang.Iterable<java.lang.String> values) {
        ensureJourneyMessageContentIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, journeyMessageContent_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string journey_message_content = 16;</code>
       */
      public Builder clearJourneyMessageContent() {
        journeyMessageContent_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00008000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string journey_message_content = 16;</code>
       */
      public Builder addJourneyMessageContentBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureJourneyMessageContentIsMutable();
        journeyMessageContent_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList lineColor_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureLineColorIsMutable() {
        if (!((bitField0_ & 0x00010000) == 0x00010000)) {
          lineColor_ = new com.google.protobuf.LazyStringArrayList(lineColor_);
          bitField0_ |= 0x00010000;
         }
      }
      /**
       * <code>repeated string line_color = 17;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getLineColorList() {
        return lineColor_.getUnmodifiableView();
      }
      /**
       * <code>repeated string line_color = 17;</code>
       */
      public int getLineColorCount() {
        return lineColor_.size();
      }
      /**
       * <code>repeated string line_color = 17;</code>
       */
      public java.lang.String getLineColor(int index) {
        return lineColor_.get(index);
      }
      /**
       * <code>repeated string line_color = 17;</code>
       */
      public com.google.protobuf.ByteString
          getLineColorBytes(int index) {
        return lineColor_.getByteString(index);
      }
      /**
       * <code>repeated string line_color = 17;</code>
       */
      public Builder setLineColor(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureLineColorIsMutable();
        lineColor_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string line_color = 17;</code>
       */
      public Builder addLineColor(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureLineColorIsMutable();
        lineColor_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string line_color = 17;</code>
       */
      public Builder addAllLineColor(
          java.lang.Iterable<java.lang.String> values) {
        ensureLineColorIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, lineColor_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string line_color = 17;</code>
       */
      public Builder clearLineColor() {
        lineColor_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00010000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string line_color = 17;</code>
       */
      public Builder addLineColorBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureLineColorIsMutable();
        lineColor_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList lineTextColor_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureLineTextColorIsMutable() {
        if (!((bitField0_ & 0x00020000) == 0x00020000)) {
          lineTextColor_ = new com.google.protobuf.LazyStringArrayList(lineTextColor_);
          bitField0_ |= 0x00020000;
         }
      }
      /**
       * <code>repeated string line_text_color = 18;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getLineTextColorList() {
        return lineTextColor_.getUnmodifiableView();
      }
      /**
       * <code>repeated string line_text_color = 18;</code>
       */
      public int getLineTextColorCount() {
        return lineTextColor_.size();
      }
      /**
       * <code>repeated string line_text_color = 18;</code>
       */
      public java.lang.String getLineTextColor(int index) {
        return lineTextColor_.get(index);
      }
      /**
       * <code>repeated string line_text_color = 18;</code>
       */
      public com.google.protobuf.ByteString
          getLineTextColorBytes(int index) {
        return lineTextColor_.getByteString(index);
      }
      /**
       * <code>repeated string line_text_color = 18;</code>
       */
      public Builder setLineTextColor(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureLineTextColorIsMutable();
        lineTextColor_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string line_text_color = 18;</code>
       */
      public Builder addLineTextColor(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureLineTextColorIsMutable();
        lineTextColor_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string line_text_color = 18;</code>
       */
      public Builder addAllLineTextColor(
          java.lang.Iterable<java.lang.String> values) {
        ensureLineTextColorIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, lineTextColor_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string line_text_color = 18;</code>
       */
      public Builder clearLineTextColor() {
        lineTextColor_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00020000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string line_text_color = 18;</code>
       */
      public Builder addLineTextColorBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureLineTextColorIsMutable();
        lineTextColor_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList lineIcon_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureLineIconIsMutable() {
        if (!((bitField0_ & 0x00040000) == 0x00040000)) {
          lineIcon_ = new com.google.protobuf.LazyStringArrayList(lineIcon_);
          bitField0_ |= 0x00040000;
         }
      }
      /**
       * <code>repeated string line_icon = 19;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getLineIconList() {
        return lineIcon_.getUnmodifiableView();
      }
      /**
       * <code>repeated string line_icon = 19;</code>
       */
      public int getLineIconCount() {
        return lineIcon_.size();
      }
      /**
       * <code>repeated string line_icon = 19;</code>
       */
      public java.lang.String getLineIcon(int index) {
        return lineIcon_.get(index);
      }
      /**
       * <code>repeated string line_icon = 19;</code>
       */
      public com.google.protobuf.ByteString
          getLineIconBytes(int index) {
        return lineIcon_.getByteString(index);
      }
      /**
       * <code>repeated string line_icon = 19;</code>
       */
      public Builder setLineIcon(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureLineIconIsMutable();
        lineIcon_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string line_icon = 19;</code>
       */
      public Builder addLineIcon(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureLineIconIsMutable();
        lineIcon_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string line_icon = 19;</code>
       */
      public Builder addAllLineIcon(
          java.lang.Iterable<java.lang.String> values) {
        ensureLineIconIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, lineIcon_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string line_icon = 19;</code>
       */
      public Builder clearLineIcon() {
        lineIcon_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00040000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string line_icon = 19;</code>
       */
      public Builder addLineIconBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureLineIconIsMutable();
        lineIcon_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList destinationColor_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDestinationColorIsMutable() {
        if (!((bitField0_ & 0x00080000) == 0x00080000)) {
          destinationColor_ = new com.google.protobuf.LazyStringArrayList(destinationColor_);
          bitField0_ |= 0x00080000;
         }
      }
      /**
       * <code>repeated string destination_color = 20;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getDestinationColorList() {
        return destinationColor_.getUnmodifiableView();
      }
      /**
       * <code>repeated string destination_color = 20;</code>
       */
      public int getDestinationColorCount() {
        return destinationColor_.size();
      }
      /**
       * <code>repeated string destination_color = 20;</code>
       */
      public java.lang.String getDestinationColor(int index) {
        return destinationColor_.get(index);
      }
      /**
       * <code>repeated string destination_color = 20;</code>
       */
      public com.google.protobuf.ByteString
          getDestinationColorBytes(int index) {
        return destinationColor_.getByteString(index);
      }
      /**
       * <code>repeated string destination_color = 20;</code>
       */
      public Builder setDestinationColor(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDestinationColorIsMutable();
        destinationColor_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string destination_color = 20;</code>
       */
      public Builder addDestinationColor(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDestinationColorIsMutable();
        destinationColor_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string destination_color = 20;</code>
       */
      public Builder addAllDestinationColor(
          java.lang.Iterable<java.lang.String> values) {
        ensureDestinationColorIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, destinationColor_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string destination_color = 20;</code>
       */
      public Builder clearDestinationColor() {
        destinationColor_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00080000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string destination_color = 20;</code>
       */
      public Builder addDestinationColorBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDestinationColorIsMutable();
        destinationColor_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList destinationTextColor_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDestinationTextColorIsMutable() {
        if (!((bitField0_ & 0x00100000) == 0x00100000)) {
          destinationTextColor_ = new com.google.protobuf.LazyStringArrayList(destinationTextColor_);
          bitField0_ |= 0x00100000;
         }
      }
      /**
       * <code>repeated string destination_text_color = 21;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getDestinationTextColorList() {
        return destinationTextColor_.getUnmodifiableView();
      }
      /**
       * <code>repeated string destination_text_color = 21;</code>
       */
      public int getDestinationTextColorCount() {
        return destinationTextColor_.size();
      }
      /**
       * <code>repeated string destination_text_color = 21;</code>
       */
      public java.lang.String getDestinationTextColor(int index) {
        return destinationTextColor_.get(index);
      }
      /**
       * <code>repeated string destination_text_color = 21;</code>
       */
      public com.google.protobuf.ByteString
          getDestinationTextColorBytes(int index) {
        return destinationTextColor_.getByteString(index);
      }
      /**
       * <code>repeated string destination_text_color = 21;</code>
       */
      public Builder setDestinationTextColor(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDestinationTextColorIsMutable();
        destinationTextColor_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string destination_text_color = 21;</code>
       */
      public Builder addDestinationTextColor(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDestinationTextColorIsMutable();
        destinationTextColor_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string destination_text_color = 21;</code>
       */
      public Builder addAllDestinationTextColor(
          java.lang.Iterable<java.lang.String> values) {
        ensureDestinationTextColorIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, destinationTextColor_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string destination_text_color = 21;</code>
       */
      public Builder clearDestinationTextColor() {
        destinationTextColor_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00100000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string destination_text_color = 21;</code>
       */
      public Builder addDestinationTextColorBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDestinationTextColorIsMutable();
        destinationTextColor_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList destinationIcon_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDestinationIconIsMutable() {
        if (!((bitField0_ & 0x00200000) == 0x00200000)) {
          destinationIcon_ = new com.google.protobuf.LazyStringArrayList(destinationIcon_);
          bitField0_ |= 0x00200000;
         }
      }
      /**
       * <code>repeated string destination_icon = 22;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getDestinationIconList() {
        return destinationIcon_.getUnmodifiableView();
      }
      /**
       * <code>repeated string destination_icon = 22;</code>
       */
      public int getDestinationIconCount() {
        return destinationIcon_.size();
      }
      /**
       * <code>repeated string destination_icon = 22;</code>
       */
      public java.lang.String getDestinationIcon(int index) {
        return destinationIcon_.get(index);
      }
      /**
       * <code>repeated string destination_icon = 22;</code>
       */
      public com.google.protobuf.ByteString
          getDestinationIconBytes(int index) {
        return destinationIcon_.getByteString(index);
      }
      /**
       * <code>repeated string destination_icon = 22;</code>
       */
      public Builder setDestinationIcon(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDestinationIconIsMutable();
        destinationIcon_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string destination_icon = 22;</code>
       */
      public Builder addDestinationIcon(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDestinationIconIsMutable();
        destinationIcon_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string destination_icon = 22;</code>
       */
      public Builder addAllDestinationIcon(
          java.lang.Iterable<java.lang.String> values) {
        ensureDestinationIconIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, destinationIcon_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string destination_icon = 22;</code>
       */
      public Builder clearDestinationIcon() {
        destinationIcon_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00200000);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string destination_icon = 22;</code>
       */
      public Builder addDestinationIconBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDestinationIconIsMutable();
        destinationIcon_.add(value);
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> generatedTimestamp_ = java.util.Collections.emptyList();
      private void ensureGeneratedTimestampIsMutable() {
        if (!((bitField0_ & 0x00400000) == 0x00400000)) {
          generatedTimestamp_ = new java.util.ArrayList<java.lang.Integer>(generatedTimestamp_);
          bitField0_ |= 0x00400000;
         }
      }
      /**
       * <code>repeated uint32 generated_timestamp = 23;</code>
       */
      public java.util.List<java.lang.Integer>
          getGeneratedTimestampList() {
        return java.util.Collections.unmodifiableList(generatedTimestamp_);
      }
      /**
       * <code>repeated uint32 generated_timestamp = 23;</code>
       */
      public int getGeneratedTimestampCount() {
        return generatedTimestamp_.size();
      }
      /**
       * <code>repeated uint32 generated_timestamp = 23;</code>
       */
      public int getGeneratedTimestamp(int index) {
        return generatedTimestamp_.get(index);
      }
      /**
       * <code>repeated uint32 generated_timestamp = 23;</code>
       */
      public Builder setGeneratedTimestamp(
          int index, int value) {
        ensureGeneratedTimestampIsMutable();
        generatedTimestamp_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 generated_timestamp = 23;</code>
       */
      public Builder addGeneratedTimestamp(int value) {
        ensureGeneratedTimestampIsMutable();
        generatedTimestamp_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 generated_timestamp = 23;</code>
       */
      public Builder addAllGeneratedTimestamp(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureGeneratedTimestampIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, generatedTimestamp_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 generated_timestamp = 23;</code>
       */
      public Builder clearGeneratedTimestamp() {
        generatedTimestamp_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00400000);
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:display_direct.PassingTimes)
    }

    // @@protoc_insertion_point(class_scope:display_direct.PassingTimes)
    private static final nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes();
    }

    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GeneralMessageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:display_direct.GeneralMessage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated uint32 message_hash = 1;</code>
     */
    java.util.List<java.lang.Integer> getMessageHashList();
    /**
     * <code>repeated uint32 message_hash = 1;</code>
     */
    int getMessageHashCount();
    /**
     * <code>repeated uint32 message_hash = 1;</code>
     */
    int getMessageHash(int index);

    /**
     * <code>repeated string message_content = 2;</code>
     */
    java.util.List<java.lang.String>
        getMessageContentList();
    /**
     * <code>repeated string message_content = 2;</code>
     */
    int getMessageContentCount();
    /**
     * <code>repeated string message_content = 2;</code>
     */
    java.lang.String getMessageContent(int index);
    /**
     * <code>repeated string message_content = 2;</code>
     */
    com.google.protobuf.ByteString
        getMessageContentBytes(int index);

    /**
     * <code>repeated uint32 message_start_time = 3;</code>
     */
    java.util.List<java.lang.Integer> getMessageStartTimeList();
    /**
     * <code>repeated uint32 message_start_time = 3;</code>
     */
    int getMessageStartTimeCount();
    /**
     * <code>repeated uint32 message_start_time = 3;</code>
     */
    int getMessageStartTime(int index);

    /**
     * <code>repeated uint32 message_end_time = 4;</code>
     */
    java.util.List<java.lang.Integer> getMessageEndTimeList();
    /**
     * <code>repeated uint32 message_end_time = 4;</code>
     */
    int getMessageEndTimeCount();
    /**
     * <code>repeated uint32 message_end_time = 4;</code>
     */
    int getMessageEndTime(int index);

    /**
     * <code>repeated string generated_timestamp = 5;</code>
     */
    java.util.List<java.lang.String>
        getGeneratedTimestampList();
    /**
     * <code>repeated string generated_timestamp = 5;</code>
     */
    int getGeneratedTimestampCount();
    /**
     * <code>repeated string generated_timestamp = 5;</code>
     */
    java.lang.String getGeneratedTimestamp(int index);
    /**
     * <code>repeated string generated_timestamp = 5;</code>
     */
    com.google.protobuf.ByteString
        getGeneratedTimestampBytes(int index);
  }
  /**
   * Protobuf type {@code display_direct.GeneralMessage}
   */
  public  static final class GeneralMessage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:display_direct.GeneralMessage)
      GeneralMessageOrBuilder {
    // Use GeneralMessage.newBuilder() to construct.
    private GeneralMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GeneralMessage() {
      messageHash_ = java.util.Collections.emptyList();
      messageContent_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      messageStartTime_ = java.util.Collections.emptyList();
      messageEndTime_ = java.util.Collections.emptyList();
      generatedTimestamp_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private GeneralMessage(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                messageHash_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000001;
              }
              messageHash_.add(input.readUInt32());
              break;
            }
            case 10: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
                messageHash_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000001;
              }
              while (input.getBytesUntilLimit() > 0) {
                messageHash_.add(input.readUInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                messageContent_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              messageContent_.add(s);
              break;
            }
            case 24: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                messageStartTime_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              messageStartTime_.add(input.readUInt32());
              break;
            }
            case 26: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                messageStartTime_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000004;
              }
              while (input.getBytesUntilLimit() > 0) {
                messageStartTime_.add(input.readUInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 32: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                messageEndTime_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000008;
              }
              messageEndTime_.add(input.readUInt32());
              break;
            }
            case 34: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008) && input.getBytesUntilLimit() > 0) {
                messageEndTime_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000008;
              }
              while (input.getBytesUntilLimit() > 0) {
                messageEndTime_.add(input.readUInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                generatedTimestamp_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000010;
              }
              generatedTimestamp_.add(s);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          messageHash_ = java.util.Collections.unmodifiableList(messageHash_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          messageContent_ = messageContent_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          messageStartTime_ = java.util.Collections.unmodifiableList(messageStartTime_);
        }
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          messageEndTime_ = java.util.Collections.unmodifiableList(messageEndTime_);
        }
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          generatedTimestamp_ = generatedTimestamp_.getUnmodifiableView();
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_GeneralMessage_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_GeneralMessage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage.Builder.class);
    }

    public static final int MESSAGE_HASH_FIELD_NUMBER = 1;
    private java.util.List<java.lang.Integer> messageHash_;
    /**
     * <code>repeated uint32 message_hash = 1;</code>
     */
    public java.util.List<java.lang.Integer>
        getMessageHashList() {
      return messageHash_;
    }
    /**
     * <code>repeated uint32 message_hash = 1;</code>
     */
    public int getMessageHashCount() {
      return messageHash_.size();
    }
    /**
     * <code>repeated uint32 message_hash = 1;</code>
     */
    public int getMessageHash(int index) {
      return messageHash_.get(index);
    }
    private int messageHashMemoizedSerializedSize = -1;

    public static final int MESSAGE_CONTENT_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList messageContent_;
    /**
     * <code>repeated string message_content = 2;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getMessageContentList() {
      return messageContent_;
    }
    /**
     * <code>repeated string message_content = 2;</code>
     */
    public int getMessageContentCount() {
      return messageContent_.size();
    }
    /**
     * <code>repeated string message_content = 2;</code>
     */
    public java.lang.String getMessageContent(int index) {
      return messageContent_.get(index);
    }
    /**
     * <code>repeated string message_content = 2;</code>
     */
    public com.google.protobuf.ByteString
        getMessageContentBytes(int index) {
      return messageContent_.getByteString(index);
    }

    public static final int MESSAGE_START_TIME_FIELD_NUMBER = 3;
    private java.util.List<java.lang.Integer> messageStartTime_;
    /**
     * <code>repeated uint32 message_start_time = 3;</code>
     */
    public java.util.List<java.lang.Integer>
        getMessageStartTimeList() {
      return messageStartTime_;
    }
    /**
     * <code>repeated uint32 message_start_time = 3;</code>
     */
    public int getMessageStartTimeCount() {
      return messageStartTime_.size();
    }
    /**
     * <code>repeated uint32 message_start_time = 3;</code>
     */
    public int getMessageStartTime(int index) {
      return messageStartTime_.get(index);
    }
    private int messageStartTimeMemoizedSerializedSize = -1;

    public static final int MESSAGE_END_TIME_FIELD_NUMBER = 4;
    private java.util.List<java.lang.Integer> messageEndTime_;
    /**
     * <code>repeated uint32 message_end_time = 4;</code>
     */
    public java.util.List<java.lang.Integer>
        getMessageEndTimeList() {
      return messageEndTime_;
    }
    /**
     * <code>repeated uint32 message_end_time = 4;</code>
     */
    public int getMessageEndTimeCount() {
      return messageEndTime_.size();
    }
    /**
     * <code>repeated uint32 message_end_time = 4;</code>
     */
    public int getMessageEndTime(int index) {
      return messageEndTime_.get(index);
    }
    private int messageEndTimeMemoizedSerializedSize = -1;

    public static final int GENERATED_TIMESTAMP_FIELD_NUMBER = 5;
    private com.google.protobuf.LazyStringList generatedTimestamp_;
    /**
     * <code>repeated string generated_timestamp = 5;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getGeneratedTimestampList() {
      return generatedTimestamp_;
    }
    /**
     * <code>repeated string generated_timestamp = 5;</code>
     */
    public int getGeneratedTimestampCount() {
      return generatedTimestamp_.size();
    }
    /**
     * <code>repeated string generated_timestamp = 5;</code>
     */
    public java.lang.String getGeneratedTimestamp(int index) {
      return generatedTimestamp_.get(index);
    }
    /**
     * <code>repeated string generated_timestamp = 5;</code>
     */
    public com.google.protobuf.ByteString
        getGeneratedTimestampBytes(int index) {
      return generatedTimestamp_.getByteString(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (getMessageHashList().size() > 0) {
        output.writeUInt32NoTag(10);
        output.writeUInt32NoTag(messageHashMemoizedSerializedSize);
      }
      for (int i = 0; i < messageHash_.size(); i++) {
        output.writeUInt32NoTag(messageHash_.get(i));
      }
      for (int i = 0; i < messageContent_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, messageContent_.getRaw(i));
      }
      if (getMessageStartTimeList().size() > 0) {
        output.writeUInt32NoTag(26);
        output.writeUInt32NoTag(messageStartTimeMemoizedSerializedSize);
      }
      for (int i = 0; i < messageStartTime_.size(); i++) {
        output.writeUInt32NoTag(messageStartTime_.get(i));
      }
      if (getMessageEndTimeList().size() > 0) {
        output.writeUInt32NoTag(34);
        output.writeUInt32NoTag(messageEndTimeMemoizedSerializedSize);
      }
      for (int i = 0; i < messageEndTime_.size(); i++) {
        output.writeUInt32NoTag(messageEndTime_.get(i));
      }
      for (int i = 0; i < generatedTimestamp_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, generatedTimestamp_.getRaw(i));
      }
    }

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

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < messageHash_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(messageHash_.get(i));
        }
        size += dataSize;
        if (!getMessageHashList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        messageHashMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < messageContent_.size(); i++) {
          dataSize += computeStringSizeNoTag(messageContent_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getMessageContentList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < messageStartTime_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(messageStartTime_.get(i));
        }
        size += dataSize;
        if (!getMessageStartTimeList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        messageStartTimeMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < messageEndTime_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(messageEndTime_.get(i));
        }
        size += dataSize;
        if (!getMessageEndTimeList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        messageEndTimeMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < generatedTimestamp_.size(); i++) {
          dataSize += computeStringSizeNoTag(generatedTimestamp_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getGeneratedTimestampList().size();
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage)) {
        return super.equals(obj);
      }
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage other = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage) obj;

      boolean result = true;
      result = result && getMessageHashList()
          .equals(other.getMessageHashList());
      result = result && getMessageContentList()
          .equals(other.getMessageContentList());
      result = result && getMessageStartTimeList()
          .equals(other.getMessageStartTimeList());
      result = result && getMessageEndTimeList()
          .equals(other.getMessageEndTimeList());
      result = result && getGeneratedTimestampList()
          .equals(other.getGeneratedTimestampList());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getMessageHashCount() > 0) {
        hash = (37 * hash) + MESSAGE_HASH_FIELD_NUMBER;
        hash = (53 * hash) + getMessageHashList().hashCode();
      }
      if (getMessageContentCount() > 0) {
        hash = (37 * hash) + MESSAGE_CONTENT_FIELD_NUMBER;
        hash = (53 * hash) + getMessageContentList().hashCode();
      }
      if (getMessageStartTimeCount() > 0) {
        hash = (37 * hash) + MESSAGE_START_TIME_FIELD_NUMBER;
        hash = (53 * hash) + getMessageStartTimeList().hashCode();
      }
      if (getMessageEndTimeCount() > 0) {
        hash = (37 * hash) + MESSAGE_END_TIME_FIELD_NUMBER;
        hash = (53 * hash) + getMessageEndTimeList().hashCode();
      }
      if (getGeneratedTimestampCount() > 0) {
        hash = (37 * hash) + GENERATED_TIMESTAMP_FIELD_NUMBER;
        hash = (53 * hash) + getGeneratedTimestampList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code display_direct.GeneralMessage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:display_direct.GeneralMessage)
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_GeneralMessage_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_GeneralMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage.Builder.class);
      }

      // Construct using nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        messageHash_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        messageContent_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        messageStartTime_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        messageEndTime_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        generatedTimestamp_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_GeneralMessage_descriptor;
      }

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage getDefaultInstanceForType() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage.getDefaultInstance();
      }

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage build() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage buildPartial() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage result = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          messageHash_ = java.util.Collections.unmodifiableList(messageHash_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.messageHash_ = messageHash_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          messageContent_ = messageContent_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.messageContent_ = messageContent_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          messageStartTime_ = java.util.Collections.unmodifiableList(messageStartTime_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.messageStartTime_ = messageStartTime_;
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          messageEndTime_ = java.util.Collections.unmodifiableList(messageEndTime_);
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.messageEndTime_ = messageEndTime_;
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          generatedTimestamp_ = generatedTimestamp_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.generatedTimestamp_ = generatedTimestamp_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage) {
          return mergeFrom((nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage other) {
        if (other == nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage.getDefaultInstance()) return this;
        if (!other.messageHash_.isEmpty()) {
          if (messageHash_.isEmpty()) {
            messageHash_ = other.messageHash_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureMessageHashIsMutable();
            messageHash_.addAll(other.messageHash_);
          }
          onChanged();
        }
        if (!other.messageContent_.isEmpty()) {
          if (messageContent_.isEmpty()) {
            messageContent_ = other.messageContent_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureMessageContentIsMutable();
            messageContent_.addAll(other.messageContent_);
          }
          onChanged();
        }
        if (!other.messageStartTime_.isEmpty()) {
          if (messageStartTime_.isEmpty()) {
            messageStartTime_ = other.messageStartTime_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureMessageStartTimeIsMutable();
            messageStartTime_.addAll(other.messageStartTime_);
          }
          onChanged();
        }
        if (!other.messageEndTime_.isEmpty()) {
          if (messageEndTime_.isEmpty()) {
            messageEndTime_ = other.messageEndTime_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureMessageEndTimeIsMutable();
            messageEndTime_.addAll(other.messageEndTime_);
          }
          onChanged();
        }
        if (!other.generatedTimestamp_.isEmpty()) {
          if (generatedTimestamp_.isEmpty()) {
            generatedTimestamp_ = other.generatedTimestamp_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureGeneratedTimestampIsMutable();
            generatedTimestamp_.addAll(other.generatedTimestamp_);
          }
          onChanged();
        }
        onChanged();
        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 {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<java.lang.Integer> messageHash_ = java.util.Collections.emptyList();
      private void ensureMessageHashIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          messageHash_ = new java.util.ArrayList<java.lang.Integer>(messageHash_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <code>repeated uint32 message_hash = 1;</code>
       */
      public java.util.List<java.lang.Integer>
          getMessageHashList() {
        return java.util.Collections.unmodifiableList(messageHash_);
      }
      /**
       * <code>repeated uint32 message_hash = 1;</code>
       */
      public int getMessageHashCount() {
        return messageHash_.size();
      }
      /**
       * <code>repeated uint32 message_hash = 1;</code>
       */
      public int getMessageHash(int index) {
        return messageHash_.get(index);
      }
      /**
       * <code>repeated uint32 message_hash = 1;</code>
       */
      public Builder setMessageHash(
          int index, int value) {
        ensureMessageHashIsMutable();
        messageHash_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 message_hash = 1;</code>
       */
      public Builder addMessageHash(int value) {
        ensureMessageHashIsMutable();
        messageHash_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 message_hash = 1;</code>
       */
      public Builder addAllMessageHash(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureMessageHashIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, messageHash_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 message_hash = 1;</code>
       */
      public Builder clearMessageHash() {
        messageHash_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList messageContent_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureMessageContentIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          messageContent_ = new com.google.protobuf.LazyStringArrayList(messageContent_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <code>repeated string message_content = 2;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getMessageContentList() {
        return messageContent_.getUnmodifiableView();
      }
      /**
       * <code>repeated string message_content = 2;</code>
       */
      public int getMessageContentCount() {
        return messageContent_.size();
      }
      /**
       * <code>repeated string message_content = 2;</code>
       */
      public java.lang.String getMessageContent(int index) {
        return messageContent_.get(index);
      }
      /**
       * <code>repeated string message_content = 2;</code>
       */
      public com.google.protobuf.ByteString
          getMessageContentBytes(int index) {
        return messageContent_.getByteString(index);
      }
      /**
       * <code>repeated string message_content = 2;</code>
       */
      public Builder setMessageContent(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureMessageContentIsMutable();
        messageContent_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string message_content = 2;</code>
       */
      public Builder addMessageContent(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureMessageContentIsMutable();
        messageContent_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string message_content = 2;</code>
       */
      public Builder addAllMessageContent(
          java.lang.Iterable<java.lang.String> values) {
        ensureMessageContentIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, messageContent_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string message_content = 2;</code>
       */
      public Builder clearMessageContent() {
        messageContent_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string message_content = 2;</code>
       */
      public Builder addMessageContentBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureMessageContentIsMutable();
        messageContent_.add(value);
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> messageStartTime_ = java.util.Collections.emptyList();
      private void ensureMessageStartTimeIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          messageStartTime_ = new java.util.ArrayList<java.lang.Integer>(messageStartTime_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <code>repeated uint32 message_start_time = 3;</code>
       */
      public java.util.List<java.lang.Integer>
          getMessageStartTimeList() {
        return java.util.Collections.unmodifiableList(messageStartTime_);
      }
      /**
       * <code>repeated uint32 message_start_time = 3;</code>
       */
      public int getMessageStartTimeCount() {
        return messageStartTime_.size();
      }
      /**
       * <code>repeated uint32 message_start_time = 3;</code>
       */
      public int getMessageStartTime(int index) {
        return messageStartTime_.get(index);
      }
      /**
       * <code>repeated uint32 message_start_time = 3;</code>
       */
      public Builder setMessageStartTime(
          int index, int value) {
        ensureMessageStartTimeIsMutable();
        messageStartTime_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 message_start_time = 3;</code>
       */
      public Builder addMessageStartTime(int value) {
        ensureMessageStartTimeIsMutable();
        messageStartTime_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 message_start_time = 3;</code>
       */
      public Builder addAllMessageStartTime(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureMessageStartTimeIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, messageStartTime_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 message_start_time = 3;</code>
       */
      public Builder clearMessageStartTime() {
        messageStartTime_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> messageEndTime_ = java.util.Collections.emptyList();
      private void ensureMessageEndTimeIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          messageEndTime_ = new java.util.ArrayList<java.lang.Integer>(messageEndTime_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <code>repeated uint32 message_end_time = 4;</code>
       */
      public java.util.List<java.lang.Integer>
          getMessageEndTimeList() {
        return java.util.Collections.unmodifiableList(messageEndTime_);
      }
      /**
       * <code>repeated uint32 message_end_time = 4;</code>
       */
      public int getMessageEndTimeCount() {
        return messageEndTime_.size();
      }
      /**
       * <code>repeated uint32 message_end_time = 4;</code>
       */
      public int getMessageEndTime(int index) {
        return messageEndTime_.get(index);
      }
      /**
       * <code>repeated uint32 message_end_time = 4;</code>
       */
      public Builder setMessageEndTime(
          int index, int value) {
        ensureMessageEndTimeIsMutable();
        messageEndTime_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 message_end_time = 4;</code>
       */
      public Builder addMessageEndTime(int value) {
        ensureMessageEndTimeIsMutable();
        messageEndTime_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 message_end_time = 4;</code>
       */
      public Builder addAllMessageEndTime(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureMessageEndTimeIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, messageEndTime_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated uint32 message_end_time = 4;</code>
       */
      public Builder clearMessageEndTime() {
        messageEndTime_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList generatedTimestamp_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureGeneratedTimestampIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          generatedTimestamp_ = new com.google.protobuf.LazyStringArrayList(generatedTimestamp_);
          bitField0_ |= 0x00000010;
         }
      }
      /**
       * <code>repeated string generated_timestamp = 5;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getGeneratedTimestampList() {
        return generatedTimestamp_.getUnmodifiableView();
      }
      /**
       * <code>repeated string generated_timestamp = 5;</code>
       */
      public int getGeneratedTimestampCount() {
        return generatedTimestamp_.size();
      }
      /**
       * <code>repeated string generated_timestamp = 5;</code>
       */
      public java.lang.String getGeneratedTimestamp(int index) {
        return generatedTimestamp_.get(index);
      }
      /**
       * <code>repeated string generated_timestamp = 5;</code>
       */
      public com.google.protobuf.ByteString
          getGeneratedTimestampBytes(int index) {
        return generatedTimestamp_.getByteString(index);
      }
      /**
       * <code>repeated string generated_timestamp = 5;</code>
       */
      public Builder setGeneratedTimestamp(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureGeneratedTimestampIsMutable();
        generatedTimestamp_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string generated_timestamp = 5;</code>
       */
      public Builder addGeneratedTimestamp(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureGeneratedTimestampIsMutable();
        generatedTimestamp_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string generated_timestamp = 5;</code>
       */
      public Builder addAllGeneratedTimestamp(
          java.lang.Iterable<java.lang.String> values) {
        ensureGeneratedTimestampIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, generatedTimestamp_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string generated_timestamp = 5;</code>
       */
      public Builder clearGeneratedTimestamp() {
        generatedTimestamp_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <code>repeated string generated_timestamp = 5;</code>
       */
      public Builder addGeneratedTimestampBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureGeneratedTimestampIsMutable();
        generatedTimestamp_.add(value);
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:display_direct.GeneralMessage)
    }

    // @@protoc_insertion_point(class_scope:display_direct.GeneralMessage)
    private static final nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage();
    }

    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ContainerOrBuilder extends
      // @@protoc_insertion_point(interface_extends:display_direct.Container)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
     */
    java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes> 
        getPassingTimesList();
    /**
     * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
     */
    nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes getPassingTimes(int index);
    /**
     * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
     */
    int getPassingTimesCount();
    /**
     * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
     */
    java.util.List<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimesOrBuilder> 
        getPassingTimesOrBuilderList();
    /**
     * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
     */
    nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimesOrBuilder getPassingTimesOrBuilder(
        int index);

    /**
     * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
     */
    java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage> 
        getGeneralMessagesList();
    /**
     * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
     */
    nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage getGeneralMessages(int index);
    /**
     * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
     */
    int getGeneralMessagesCount();
    /**
     * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
     */
    java.util.List<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessageOrBuilder> 
        getGeneralMessagesOrBuilderList();
    /**
     * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
     */
    nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessageOrBuilder getGeneralMessagesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code display_direct.Container}
   */
  public  static final class Container extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:display_direct.Container)
      ContainerOrBuilder {
    // Use Container.newBuilder() to construct.
    private Container(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Container() {
      passingTimes_ = java.util.Collections.emptyList();
      generalMessages_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private Container(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                passingTimes_ = new java.util.ArrayList<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes>();
                mutable_bitField0_ |= 0x00000001;
              }
              passingTimes_.add(
                  input.readMessage(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.parser(), extensionRegistry));
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                generalMessages_ = new java.util.ArrayList<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage>();
                mutable_bitField0_ |= 0x00000002;
              }
              generalMessages_.add(
                  input.readMessage(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage.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).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          passingTimes_ = java.util.Collections.unmodifiableList(passingTimes_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          generalMessages_ = java.util.Collections.unmodifiableList(generalMessages_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Container_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Container_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container.Builder.class);
    }

    public static final int PASSING_TIMES_FIELD_NUMBER = 1;
    private java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes> passingTimes_;
    /**
     * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
     */
    public java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes> getPassingTimesList() {
      return passingTimes_;
    }
    /**
     * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
     */
    public java.util.List<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimesOrBuilder> 
        getPassingTimesOrBuilderList() {
      return passingTimes_;
    }
    /**
     * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
     */
    public int getPassingTimesCount() {
      return passingTimes_.size();
    }
    /**
     * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
     */
    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes getPassingTimes(int index) {
      return passingTimes_.get(index);
    }
    /**
     * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
     */
    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimesOrBuilder getPassingTimesOrBuilder(
        int index) {
      return passingTimes_.get(index);
    }

    public static final int GENERAL_MESSAGES_FIELD_NUMBER = 2;
    private java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage> generalMessages_;
    /**
     * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
     */
    public java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage> getGeneralMessagesList() {
      return generalMessages_;
    }
    /**
     * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
     */
    public java.util.List<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessageOrBuilder> 
        getGeneralMessagesOrBuilderList() {
      return generalMessages_;
    }
    /**
     * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
     */
    public int getGeneralMessagesCount() {
      return generalMessages_.size();
    }
    /**
     * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
     */
    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage getGeneralMessages(int index) {
      return generalMessages_.get(index);
    }
    /**
     * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
     */
    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessageOrBuilder getGeneralMessagesOrBuilder(
        int index) {
      return generalMessages_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < passingTimes_.size(); i++) {
        output.writeMessage(1, passingTimes_.get(i));
      }
      for (int i = 0; i < generalMessages_.size(); i++) {
        output.writeMessage(2, generalMessages_.get(i));
      }
    }

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

      size = 0;
      for (int i = 0; i < passingTimes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, passingTimes_.get(i));
      }
      for (int i = 0; i < generalMessages_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, generalMessages_.get(i));
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container)) {
        return super.equals(obj);
      }
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container other = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container) obj;

      boolean result = true;
      result = result && getPassingTimesList()
          .equals(other.getPassingTimesList());
      result = result && getGeneralMessagesList()
          .equals(other.getGeneralMessagesList());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getPassingTimesCount() > 0) {
        hash = (37 * hash) + PASSING_TIMES_FIELD_NUMBER;
        hash = (53 * hash) + getPassingTimesList().hashCode();
      }
      if (getGeneralMessagesCount() > 0) {
        hash = (37 * hash) + GENERAL_MESSAGES_FIELD_NUMBER;
        hash = (53 * hash) + getGeneralMessagesList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code display_direct.Container}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:display_direct.Container)
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.ContainerOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Container_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Container_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container.Builder.class);
      }

      // Construct using nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getPassingTimesFieldBuilder();
          getGeneralMessagesFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (passingTimesBuilder_ == null) {
          passingTimes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          passingTimesBuilder_.clear();
        }
        if (generalMessagesBuilder_ == null) {
          generalMessages_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          generalMessagesBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Container_descriptor;
      }

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container getDefaultInstanceForType() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container.getDefaultInstance();
      }

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container build() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container buildPartial() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container result = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container(this);
        int from_bitField0_ = bitField0_;
        if (passingTimesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            passingTimes_ = java.util.Collections.unmodifiableList(passingTimes_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.passingTimes_ = passingTimes_;
        } else {
          result.passingTimes_ = passingTimesBuilder_.build();
        }
        if (generalMessagesBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            generalMessages_ = java.util.Collections.unmodifiableList(generalMessages_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.generalMessages_ = generalMessages_;
        } else {
          result.generalMessages_ = generalMessagesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container) {
          return mergeFrom((nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container other) {
        if (other == nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container.getDefaultInstance()) return this;
        if (passingTimesBuilder_ == null) {
          if (!other.passingTimes_.isEmpty()) {
            if (passingTimes_.isEmpty()) {
              passingTimes_ = other.passingTimes_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensurePassingTimesIsMutable();
              passingTimes_.addAll(other.passingTimes_);
            }
            onChanged();
          }
        } else {
          if (!other.passingTimes_.isEmpty()) {
            if (passingTimesBuilder_.isEmpty()) {
              passingTimesBuilder_.dispose();
              passingTimesBuilder_ = null;
              passingTimes_ = other.passingTimes_;
              bitField0_ = (bitField0_ & ~0x00000001);
              passingTimesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getPassingTimesFieldBuilder() : null;
            } else {
              passingTimesBuilder_.addAllMessages(other.passingTimes_);
            }
          }
        }
        if (generalMessagesBuilder_ == null) {
          if (!other.generalMessages_.isEmpty()) {
            if (generalMessages_.isEmpty()) {
              generalMessages_ = other.generalMessages_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureGeneralMessagesIsMutable();
              generalMessages_.addAll(other.generalMessages_);
            }
            onChanged();
          }
        } else {
          if (!other.generalMessages_.isEmpty()) {
            if (generalMessagesBuilder_.isEmpty()) {
              generalMessagesBuilder_.dispose();
              generalMessagesBuilder_ = null;
              generalMessages_ = other.generalMessages_;
              bitField0_ = (bitField0_ & ~0x00000002);
              generalMessagesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getGeneralMessagesFieldBuilder() : null;
            } else {
              generalMessagesBuilder_.addAllMessages(other.generalMessages_);
            }
          }
        }
        onChanged();
        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 {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes> passingTimes_ =
        java.util.Collections.emptyList();
      private void ensurePassingTimesIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          passingTimes_ = new java.util.ArrayList<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes>(passingTimes_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Builder, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimesOrBuilder> passingTimesBuilder_;

      /**
       * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
       */
      public java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes> getPassingTimesList() {
        if (passingTimesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(passingTimes_);
        } else {
          return passingTimesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
       */
      public int getPassingTimesCount() {
        if (passingTimesBuilder_ == null) {
          return passingTimes_.size();
        } else {
          return passingTimesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes getPassingTimes(int index) {
        if (passingTimesBuilder_ == null) {
          return passingTimes_.get(index);
        } else {
          return passingTimesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
       */
      public Builder setPassingTimes(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes value) {
        if (passingTimesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePassingTimesIsMutable();
          passingTimes_.set(index, value);
          onChanged();
        } else {
          passingTimesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
       */
      public Builder setPassingTimes(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Builder builderForValue) {
        if (passingTimesBuilder_ == null) {
          ensurePassingTimesIsMutable();
          passingTimes_.set(index, builderForValue.build());
          onChanged();
        } else {
          passingTimesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
       */
      public Builder addPassingTimes(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes value) {
        if (passingTimesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePassingTimesIsMutable();
          passingTimes_.add(value);
          onChanged();
        } else {
          passingTimesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
       */
      public Builder addPassingTimes(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes value) {
        if (passingTimesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePassingTimesIsMutable();
          passingTimes_.add(index, value);
          onChanged();
        } else {
          passingTimesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
       */
      public Builder addPassingTimes(
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Builder builderForValue) {
        if (passingTimesBuilder_ == null) {
          ensurePassingTimesIsMutable();
          passingTimes_.add(builderForValue.build());
          onChanged();
        } else {
          passingTimesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
       */
      public Builder addPassingTimes(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Builder builderForValue) {
        if (passingTimesBuilder_ == null) {
          ensurePassingTimesIsMutable();
          passingTimes_.add(index, builderForValue.build());
          onChanged();
        } else {
          passingTimesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
       */
      public Builder addAllPassingTimes(
          java.lang.Iterable<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes> values) {
        if (passingTimesBuilder_ == null) {
          ensurePassingTimesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, passingTimes_);
          onChanged();
        } else {
          passingTimesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
       */
      public Builder clearPassingTimes() {
        if (passingTimesBuilder_ == null) {
          passingTimes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          passingTimesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
       */
      public Builder removePassingTimes(int index) {
        if (passingTimesBuilder_ == null) {
          ensurePassingTimesIsMutable();
          passingTimes_.remove(index);
          onChanged();
        } else {
          passingTimesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Builder getPassingTimesBuilder(
          int index) {
        return getPassingTimesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimesOrBuilder getPassingTimesOrBuilder(
          int index) {
        if (passingTimesBuilder_ == null) {
          return passingTimes_.get(index);  } else {
          return passingTimesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
       */
      public java.util.List<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimesOrBuilder> 
           getPassingTimesOrBuilderList() {
        if (passingTimesBuilder_ != null) {
          return passingTimesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(passingTimes_);
        }
      }
      /**
       * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Builder addPassingTimesBuilder() {
        return getPassingTimesFieldBuilder().addBuilder(
            nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.getDefaultInstance());
      }
      /**
       * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Builder addPassingTimesBuilder(
          int index) {
        return getPassingTimesFieldBuilder().addBuilder(
            index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.getDefaultInstance());
      }
      /**
       * <code>repeated .display_direct.PassingTimes passing_times = 1;</code>
       */
      public java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Builder> 
           getPassingTimesBuilderList() {
        return getPassingTimesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Builder, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimesOrBuilder> 
          getPassingTimesFieldBuilder() {
        if (passingTimesBuilder_ == null) {
          passingTimesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimes.Builder, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.PassingTimesOrBuilder>(
                  passingTimes_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          passingTimes_ = null;
        }
        return passingTimesBuilder_;
      }

      private java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage> generalMessages_ =
        java.util.Collections.emptyList();
      private void ensureGeneralMessagesIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          generalMessages_ = new java.util.ArrayList<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage>(generalMessages_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage.Builder, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessageOrBuilder> generalMessagesBuilder_;

      /**
       * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
       */
      public java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage> getGeneralMessagesList() {
        if (generalMessagesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(generalMessages_);
        } else {
          return generalMessagesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
       */
      public int getGeneralMessagesCount() {
        if (generalMessagesBuilder_ == null) {
          return generalMessages_.size();
        } else {
          return generalMessagesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage getGeneralMessages(int index) {
        if (generalMessagesBuilder_ == null) {
          return generalMessages_.get(index);
        } else {
          return generalMessagesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
       */
      public Builder setGeneralMessages(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage value) {
        if (generalMessagesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGeneralMessagesIsMutable();
          generalMessages_.set(index, value);
          onChanged();
        } else {
          generalMessagesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
       */
      public Builder setGeneralMessages(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage.Builder builderForValue) {
        if (generalMessagesBuilder_ == null) {
          ensureGeneralMessagesIsMutable();
          generalMessages_.set(index, builderForValue.build());
          onChanged();
        } else {
          generalMessagesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
       */
      public Builder addGeneralMessages(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage value) {
        if (generalMessagesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGeneralMessagesIsMutable();
          generalMessages_.add(value);
          onChanged();
        } else {
          generalMessagesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
       */
      public Builder addGeneralMessages(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage value) {
        if (generalMessagesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGeneralMessagesIsMutable();
          generalMessages_.add(index, value);
          onChanged();
        } else {
          generalMessagesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
       */
      public Builder addGeneralMessages(
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage.Builder builderForValue) {
        if (generalMessagesBuilder_ == null) {
          ensureGeneralMessagesIsMutable();
          generalMessages_.add(builderForValue.build());
          onChanged();
        } else {
          generalMessagesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
       */
      public Builder addGeneralMessages(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage.Builder builderForValue) {
        if (generalMessagesBuilder_ == null) {
          ensureGeneralMessagesIsMutable();
          generalMessages_.add(index, builderForValue.build());
          onChanged();
        } else {
          generalMessagesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
       */
      public Builder addAllGeneralMessages(
          java.lang.Iterable<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage> values) {
        if (generalMessagesBuilder_ == null) {
          ensureGeneralMessagesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, generalMessages_);
          onChanged();
        } else {
          generalMessagesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
       */
      public Builder clearGeneralMessages() {
        if (generalMessagesBuilder_ == null) {
          generalMessages_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          generalMessagesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
       */
      public Builder removeGeneralMessages(int index) {
        if (generalMessagesBuilder_ == null) {
          ensureGeneralMessagesIsMutable();
          generalMessages_.remove(index);
          onChanged();
        } else {
          generalMessagesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage.Builder getGeneralMessagesBuilder(
          int index) {
        return getGeneralMessagesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessageOrBuilder getGeneralMessagesOrBuilder(
          int index) {
        if (generalMessagesBuilder_ == null) {
          return generalMessages_.get(index);  } else {
          return generalMessagesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
       */
      public java.util.List<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessageOrBuilder> 
           getGeneralMessagesOrBuilderList() {
        if (generalMessagesBuilder_ != null) {
          return generalMessagesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(generalMessages_);
        }
      }
      /**
       * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage.Builder addGeneralMessagesBuilder() {
        return getGeneralMessagesFieldBuilder().addBuilder(
            nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage.getDefaultInstance());
      }
      /**
       * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage.Builder addGeneralMessagesBuilder(
          int index) {
        return getGeneralMessagesFieldBuilder().addBuilder(
            index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage.getDefaultInstance());
      }
      /**
       * <code>repeated .display_direct.GeneralMessage general_messages = 2;</code>
       */
      public java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage.Builder> 
           getGeneralMessagesBuilderList() {
        return getGeneralMessagesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage.Builder, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessageOrBuilder> 
          getGeneralMessagesFieldBuilder() {
        if (generalMessagesBuilder_ == null) {
          generalMessagesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessage.Builder, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.GeneralMessageOrBuilder>(
                  generalMessages_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          generalMessages_ = null;
        }
        return generalMessagesBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:display_direct.Container)
    }

    // @@protoc_insertion_point(class_scope:display_direct.Container)
    private static final nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container();
    }

    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Container getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MonitoringOrBuilder extends
      // @@protoc_insertion_point(interface_extends:display_direct.Monitoring)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
     */
    java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric> 
        getMetricsList();
    /**
     * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
     */
    nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric getMetrics(int index);
    /**
     * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
     */
    int getMetricsCount();
    /**
     * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
     */
    java.util.List<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.MetricOrBuilder> 
        getMetricsOrBuilderList();
    /**
     * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
     */
    nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.MetricOrBuilder getMetricsOrBuilder(
        int index);

    /**
     * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
     */
    java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage> 
        getLogsList();
    /**
     * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
     */
    nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage getLogs(int index);
    /**
     * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
     */
    int getLogsCount();
    /**
     * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
     */
    java.util.List<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessageOrBuilder> 
        getLogsOrBuilderList();
    /**
     * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
     */
    nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessageOrBuilder getLogsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * statistieken
   * </pre>
   *
   * Protobuf type {@code display_direct.Monitoring}
   */
  public  static final class Monitoring extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:display_direct.Monitoring)
      MonitoringOrBuilder {
    // Use Monitoring.newBuilder() to construct.
    private Monitoring(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Monitoring() {
      metrics_ = java.util.Collections.emptyList();
      logs_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private Monitoring(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                metrics_ = new java.util.ArrayList<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric>();
                mutable_bitField0_ |= 0x00000001;
              }
              metrics_.add(
                  input.readMessage(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric.parser(), extensionRegistry));
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                logs_ = new java.util.ArrayList<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage>();
                mutable_bitField0_ |= 0x00000002;
              }
              logs_.add(
                  input.readMessage(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage.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).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          metrics_ = java.util.Collections.unmodifiableList(metrics_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          logs_ = java.util.Collections.unmodifiableList(logs_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Monitoring_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Monitoring_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Builder.class);
    }

    public interface MetricOrBuilder extends
        // @@protoc_insertion_point(interface_extends:display_direct.Monitoring.Metric)
        com.google.protobuf.MessageOrBuilder {

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

      /**
       * <code>int32 value = 2;</code>
       */
      int getValue();

      /**
       * <code>string stopsystem_id = 3;</code>
       */
      java.lang.String getStopsystemId();
      /**
       * <code>string stopsystem_id = 3;</code>
       */
      com.google.protobuf.ByteString
          getStopsystemIdBytes();

      /**
       * <code>uint32 timestamp = 4;</code>
       */
      int getTimestamp();
    }
    /**
     * Protobuf type {@code display_direct.Monitoring.Metric}
     */
    public  static final class Metric extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:display_direct.Monitoring.Metric)
        MetricOrBuilder {
      // Use Metric.newBuilder() to construct.
      private Metric(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Metric() {
        name_ = "";
        value_ = 0;
        stopsystemId_ = "";
        timestamp_ = 0;
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
      }
      private Metric(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!input.skipField(tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                java.lang.String s = input.readStringRequireUtf8();

                name_ = s;
                break;
              }
              case 16: {

                value_ = input.readInt32();
                break;
              }
              case 26: {
                java.lang.String s = input.readStringRequireUtf8();

                stopsystemId_ = s;
                break;
              }
              case 32: {

                timestamp_ = input.readUInt32();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Monitoring_Metric_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Monitoring_Metric_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric.Builder.class);
      }

      public static final int NAME_FIELD_NUMBER = 1;
      private volatile java.lang.Object name_;
      /**
       * <code>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();
          name_ = s;
          return s;
        }
      }
      /**
       * <code>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;
        }
      }

      public static final int VALUE_FIELD_NUMBER = 2;
      private int value_;
      /**
       * <code>int32 value = 2;</code>
       */
      public int getValue() {
        return value_;
      }

      public static final int STOPSYSTEM_ID_FIELD_NUMBER = 3;
      private volatile java.lang.Object stopsystemId_;
      /**
       * <code>string stopsystem_id = 3;</code>
       */
      public java.lang.String getStopsystemId() {
        java.lang.Object ref = stopsystemId_;
        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();
          stopsystemId_ = s;
          return s;
        }
      }
      /**
       * <code>string stopsystem_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getStopsystemIdBytes() {
        java.lang.Object ref = stopsystemId_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          stopsystemId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int TIMESTAMP_FIELD_NUMBER = 4;
      private int timestamp_;
      /**
       * <code>uint32 timestamp = 4;</code>
       */
      public int getTimestamp() {
        return timestamp_;
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!getNameBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
        }
        if (value_ != 0) {
          output.writeInt32(2, value_);
        }
        if (!getStopsystemIdBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, stopsystemId_);
        }
        if (timestamp_ != 0) {
          output.writeUInt32(4, timestamp_);
        }
      }

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

        size = 0;
        if (!getNameBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
        }
        if (value_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, value_);
        }
        if (!getStopsystemIdBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, stopsystemId_);
        }
        if (timestamp_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(4, timestamp_);
        }
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric)) {
          return super.equals(obj);
        }
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric other = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric) obj;

        boolean result = true;
        result = result && getName()
            .equals(other.getName());
        result = result && (getValue()
            == other.getValue());
        result = result && getStopsystemId()
            .equals(other.getStopsystemId());
        result = result && (getTimestamp()
            == other.getTimestamp());
        return result;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValue();
        hash = (37 * hash) + STOPSYSTEM_ID_FIELD_NUMBER;
        hash = (53 * hash) + getStopsystemId().hashCode();
        hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
        hash = (53 * hash) + getTimestamp();
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code display_direct.Monitoring.Metric}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:display_direct.Monitoring.Metric)
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.MetricOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Monitoring_Metric_descriptor;
        }

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Monitoring_Metric_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric.Builder.class);
        }

        // Construct using nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          name_ = "";

          value_ = 0;

          stopsystemId_ = "";

          timestamp_ = 0;

          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Monitoring_Metric_descriptor;
        }

        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric getDefaultInstanceForType() {
          return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric.getDefaultInstance();
        }

        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric build() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric buildPartial() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric result = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric(this);
          result.name_ = name_;
          result.value_ = value_;
          result.stopsystemId_ = stopsystemId_;
          result.timestamp_ = timestamp_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric) {
            return mergeFrom((nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric other) {
          if (other == nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric.getDefaultInstance()) return this;
          if (!other.getName().isEmpty()) {
            name_ = other.name_;
            onChanged();
          }
          if (other.getValue() != 0) {
            setValue(other.getValue());
          }
          if (!other.getStopsystemId().isEmpty()) {
            stopsystemId_ = other.stopsystemId_;
            onChanged();
          }
          if (other.getTimestamp() != 0) {
            setTimestamp(other.getTimestamp());
          }
          onChanged();
          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 {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }

        private java.lang.Object name_ = "";
        /**
         * <code>string name = 1;</code>
         */
        public java.lang.String getName() {
          java.lang.Object ref = name_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            name_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>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>string name = 1;</code>
         */
        public Builder setName(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          name_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>string name = 1;</code>
         */
        public Builder clearName() {
          
          name_ = getDefaultInstance().getName();
          onChanged();
          return this;
        }
        /**
         * <code>string name = 1;</code>
         */
        public Builder setNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          name_ = value;
          onChanged();
          return this;
        }

        private int value_ ;
        /**
         * <code>int32 value = 2;</code>
         */
        public int getValue() {
          return value_;
        }
        /**
         * <code>int32 value = 2;</code>
         */
        public Builder setValue(int value) {
          
          value_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>int32 value = 2;</code>
         */
        public Builder clearValue() {
          
          value_ = 0;
          onChanged();
          return this;
        }

        private java.lang.Object stopsystemId_ = "";
        /**
         * <code>string stopsystem_id = 3;</code>
         */
        public java.lang.String getStopsystemId() {
          java.lang.Object ref = stopsystemId_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            stopsystemId_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>string stopsystem_id = 3;</code>
         */
        public com.google.protobuf.ByteString
            getStopsystemIdBytes() {
          java.lang.Object ref = stopsystemId_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            stopsystemId_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>string stopsystem_id = 3;</code>
         */
        public Builder setStopsystemId(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          stopsystemId_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>string stopsystem_id = 3;</code>
         */
        public Builder clearStopsystemId() {
          
          stopsystemId_ = getDefaultInstance().getStopsystemId();
          onChanged();
          return this;
        }
        /**
         * <code>string stopsystem_id = 3;</code>
         */
        public Builder setStopsystemIdBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          stopsystemId_ = value;
          onChanged();
          return this;
        }

        private int timestamp_ ;
        /**
         * <code>uint32 timestamp = 4;</code>
         */
        public int getTimestamp() {
          return timestamp_;
        }
        /**
         * <code>uint32 timestamp = 4;</code>
         */
        public Builder setTimestamp(int value) {
          
          timestamp_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>uint32 timestamp = 4;</code>
         */
        public Builder clearTimestamp() {
          
          timestamp_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return this;
        }

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


        // @@protoc_insertion_point(builder_scope:display_direct.Monitoring.Metric)
      }

      // @@protoc_insertion_point(class_scope:display_direct.Monitoring.Metric)
      private static final nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric();
      }

      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public interface LogMessageOrBuilder extends
        // @@protoc_insertion_point(interface_extends:display_direct.Monitoring.LogMessage)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <code>uint32 code = 1;</code>
       */
      int getCode();

      /**
       * <code>string message = 2;</code>
       */
      java.lang.String getMessage();
      /**
       * <code>string message = 2;</code>
       */
      com.google.protobuf.ByteString
          getMessageBytes();

      /**
       * <code>string stopsystem_id = 3;</code>
       */
      java.lang.String getStopsystemId();
      /**
       * <code>string stopsystem_id = 3;</code>
       */
      com.google.protobuf.ByteString
          getStopsystemIdBytes();

      /**
       * <code>uint32 timestamp = 4;</code>
       */
      int getTimestamp();
    }
    /**
     * Protobuf type {@code display_direct.Monitoring.LogMessage}
     */
    public  static final class LogMessage extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:display_direct.Monitoring.LogMessage)
        LogMessageOrBuilder {
      // Use LogMessage.newBuilder() to construct.
      private LogMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private LogMessage() {
        code_ = 0;
        message_ = "";
        stopsystemId_ = "";
        timestamp_ = 0;
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
      }
      private LogMessage(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!input.skipField(tag)) {
                  done = true;
                }
                break;
              }
              case 8: {

                code_ = input.readUInt32();
                break;
              }
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();

                message_ = s;
                break;
              }
              case 26: {
                java.lang.String s = input.readStringRequireUtf8();

                stopsystemId_ = s;
                break;
              }
              case 32: {

                timestamp_ = input.readUInt32();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Monitoring_LogMessage_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Monitoring_LogMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage.Builder.class);
      }

      public static final int CODE_FIELD_NUMBER = 1;
      private int code_;
      /**
       * <code>uint32 code = 1;</code>
       */
      public int getCode() {
        return code_;
      }

      public static final int MESSAGE_FIELD_NUMBER = 2;
      private volatile java.lang.Object message_;
      /**
       * <code>string message = 2;</code>
       */
      public java.lang.String getMessage() {
        java.lang.Object ref = message_;
        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();
          message_ = s;
          return s;
        }
      }
      /**
       * <code>string message = 2;</code>
       */
      public com.google.protobuf.ByteString
          getMessageBytes() {
        java.lang.Object ref = message_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          message_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int STOPSYSTEM_ID_FIELD_NUMBER = 3;
      private volatile java.lang.Object stopsystemId_;
      /**
       * <code>string stopsystem_id = 3;</code>
       */
      public java.lang.String getStopsystemId() {
        java.lang.Object ref = stopsystemId_;
        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();
          stopsystemId_ = s;
          return s;
        }
      }
      /**
       * <code>string stopsystem_id = 3;</code>
       */
      public com.google.protobuf.ByteString
          getStopsystemIdBytes() {
        java.lang.Object ref = stopsystemId_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          stopsystemId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int TIMESTAMP_FIELD_NUMBER = 4;
      private int timestamp_;
      /**
       * <code>uint32 timestamp = 4;</code>
       */
      public int getTimestamp() {
        return timestamp_;
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (code_ != 0) {
          output.writeUInt32(1, code_);
        }
        if (!getMessageBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, message_);
        }
        if (!getStopsystemIdBytes().isEmpty()) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, stopsystemId_);
        }
        if (timestamp_ != 0) {
          output.writeUInt32(4, timestamp_);
        }
      }

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

        size = 0;
        if (code_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, code_);
        }
        if (!getMessageBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, message_);
        }
        if (!getStopsystemIdBytes().isEmpty()) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, stopsystemId_);
        }
        if (timestamp_ != 0) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(4, timestamp_);
        }
        memoizedSize = size;
        return size;
      }

      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage)) {
          return super.equals(obj);
        }
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage other = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage) obj;

        boolean result = true;
        result = result && (getCode()
            == other.getCode());
        result = result && getMessage()
            .equals(other.getMessage());
        result = result && getStopsystemId()
            .equals(other.getStopsystemId());
        result = result && (getTimestamp()
            == other.getTimestamp());
        return result;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + CODE_FIELD_NUMBER;
        hash = (53 * hash) + getCode();
        hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
        hash = (53 * hash) + getMessage().hashCode();
        hash = (37 * hash) + STOPSYSTEM_ID_FIELD_NUMBER;
        hash = (53 * hash) + getStopsystemId().hashCode();
        hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
        hash = (53 * hash) + getTimestamp();
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code display_direct.Monitoring.LogMessage}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:display_direct.Monitoring.LogMessage)
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessageOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Monitoring_LogMessage_descriptor;
        }

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Monitoring_LogMessage_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage.Builder.class);
        }

        // Construct using nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          code_ = 0;

          message_ = "";

          stopsystemId_ = "";

          timestamp_ = 0;

          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Monitoring_LogMessage_descriptor;
        }

        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage getDefaultInstanceForType() {
          return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage.getDefaultInstance();
        }

        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage build() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage buildPartial() {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage result = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage(this);
          result.code_ = code_;
          result.message_ = message_;
          result.stopsystemId_ = stopsystemId_;
          result.timestamp_ = timestamp_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage) {
            return mergeFrom((nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage other) {
          if (other == nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage.getDefaultInstance()) return this;
          if (other.getCode() != 0) {
            setCode(other.getCode());
          }
          if (!other.getMessage().isEmpty()) {
            message_ = other.message_;
            onChanged();
          }
          if (!other.getStopsystemId().isEmpty()) {
            stopsystemId_ = other.stopsystemId_;
            onChanged();
          }
          if (other.getTimestamp() != 0) {
            setTimestamp(other.getTimestamp());
          }
          onChanged();
          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 {
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }

        private int code_ ;
        /**
         * <code>uint32 code = 1;</code>
         */
        public int getCode() {
          return code_;
        }
        /**
         * <code>uint32 code = 1;</code>
         */
        public Builder setCode(int value) {
          
          code_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>uint32 code = 1;</code>
         */
        public Builder clearCode() {
          
          code_ = 0;
          onChanged();
          return this;
        }

        private java.lang.Object message_ = "";
        /**
         * <code>string message = 2;</code>
         */
        public java.lang.String getMessage() {
          java.lang.Object ref = message_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            message_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>string message = 2;</code>
         */
        public com.google.protobuf.ByteString
            getMessageBytes() {
          java.lang.Object ref = message_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            message_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>string message = 2;</code>
         */
        public Builder setMessage(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          message_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>string message = 2;</code>
         */
        public Builder clearMessage() {
          
          message_ = getDefaultInstance().getMessage();
          onChanged();
          return this;
        }
        /**
         * <code>string message = 2;</code>
         */
        public Builder setMessageBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          message_ = value;
          onChanged();
          return this;
        }

        private java.lang.Object stopsystemId_ = "";
        /**
         * <code>string stopsystem_id = 3;</code>
         */
        public java.lang.String getStopsystemId() {
          java.lang.Object ref = stopsystemId_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            stopsystemId_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>string stopsystem_id = 3;</code>
         */
        public com.google.protobuf.ByteString
            getStopsystemIdBytes() {
          java.lang.Object ref = stopsystemId_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            stopsystemId_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>string stopsystem_id = 3;</code>
         */
        public Builder setStopsystemId(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          stopsystemId_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>string stopsystem_id = 3;</code>
         */
        public Builder clearStopsystemId() {
          
          stopsystemId_ = getDefaultInstance().getStopsystemId();
          onChanged();
          return this;
        }
        /**
         * <code>string stopsystem_id = 3;</code>
         */
        public Builder setStopsystemIdBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          stopsystemId_ = value;
          onChanged();
          return this;
        }

        private int timestamp_ ;
        /**
         * <code>uint32 timestamp = 4;</code>
         */
        public int getTimestamp() {
          return timestamp_;
        }
        /**
         * <code>uint32 timestamp = 4;</code>
         */
        public Builder setTimestamp(int value) {
          
          timestamp_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>uint32 timestamp = 4;</code>
         */
        public Builder clearTimestamp() {
          
          timestamp_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return this;
        }

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


        // @@protoc_insertion_point(builder_scope:display_direct.Monitoring.LogMessage)
      }

      // @@protoc_insertion_point(class_scope:display_direct.Monitoring.LogMessage)
      private static final nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage();
      }

      public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int METRICS_FIELD_NUMBER = 1;
    private java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric> metrics_;
    /**
     * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
     */
    public java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric> getMetricsList() {
      return metrics_;
    }
    /**
     * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
     */
    public java.util.List<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.MetricOrBuilder> 
        getMetricsOrBuilderList() {
      return metrics_;
    }
    /**
     * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
     */
    public int getMetricsCount() {
      return metrics_.size();
    }
    /**
     * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
     */
    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric getMetrics(int index) {
      return metrics_.get(index);
    }
    /**
     * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
     */
    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.MetricOrBuilder getMetricsOrBuilder(
        int index) {
      return metrics_.get(index);
    }

    public static final int LOGS_FIELD_NUMBER = 2;
    private java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage> logs_;
    /**
     * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
     */
    public java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage> getLogsList() {
      return logs_;
    }
    /**
     * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
     */
    public java.util.List<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessageOrBuilder> 
        getLogsOrBuilderList() {
      return logs_;
    }
    /**
     * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
     */
    public int getLogsCount() {
      return logs_.size();
    }
    /**
     * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
     */
    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage getLogs(int index) {
      return logs_.get(index);
    }
    /**
     * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
     */
    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessageOrBuilder getLogsOrBuilder(
        int index) {
      return logs_.get(index);
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < metrics_.size(); i++) {
        output.writeMessage(1, metrics_.get(i));
      }
      for (int i = 0; i < logs_.size(); i++) {
        output.writeMessage(2, logs_.get(i));
      }
    }

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

      size = 0;
      for (int i = 0; i < metrics_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, metrics_.get(i));
      }
      for (int i = 0; i < logs_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, logs_.get(i));
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring)) {
        return super.equals(obj);
      }
      nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring other = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring) obj;

      boolean result = true;
      result = result && getMetricsList()
          .equals(other.getMetricsList());
      result = result && getLogsList()
          .equals(other.getLogsList());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getMetricsCount() > 0) {
        hash = (37 * hash) + METRICS_FIELD_NUMBER;
        hash = (53 * hash) + getMetricsList().hashCode();
      }
      if (getLogsCount() > 0) {
        hash = (37 * hash) + LOGS_FIELD_NUMBER;
        hash = (53 * hash) + getLogsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * statistieken
     * </pre>
     *
     * Protobuf type {@code display_direct.Monitoring}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:display_direct.Monitoring)
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.MonitoringOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Monitoring_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Monitoring_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.class, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Builder.class);
      }

      // Construct using nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getMetricsFieldBuilder();
          getLogsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (metricsBuilder_ == null) {
          metrics_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          metricsBuilder_.clear();
        }
        if (logsBuilder_ == null) {
          logs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          logsBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.internal_static_display_direct_Monitoring_descriptor;
      }

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring getDefaultInstanceForType() {
        return nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.getDefaultInstance();
      }

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring build() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring buildPartial() {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring result = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring(this);
        int from_bitField0_ = bitField0_;
        if (metricsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            metrics_ = java.util.Collections.unmodifiableList(metrics_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.metrics_ = metrics_;
        } else {
          result.metrics_ = metricsBuilder_.build();
        }
        if (logsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            logs_ = java.util.Collections.unmodifiableList(logs_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.logs_ = logs_;
        } else {
          result.logs_ = logsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring) {
          return mergeFrom((nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring other) {
        if (other == nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.getDefaultInstance()) return this;
        if (metricsBuilder_ == null) {
          if (!other.metrics_.isEmpty()) {
            if (metrics_.isEmpty()) {
              metrics_ = other.metrics_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureMetricsIsMutable();
              metrics_.addAll(other.metrics_);
            }
            onChanged();
          }
        } else {
          if (!other.metrics_.isEmpty()) {
            if (metricsBuilder_.isEmpty()) {
              metricsBuilder_.dispose();
              metricsBuilder_ = null;
              metrics_ = other.metrics_;
              bitField0_ = (bitField0_ & ~0x00000001);
              metricsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getMetricsFieldBuilder() : null;
            } else {
              metricsBuilder_.addAllMessages(other.metrics_);
            }
          }
        }
        if (logsBuilder_ == null) {
          if (!other.logs_.isEmpty()) {
            if (logs_.isEmpty()) {
              logs_ = other.logs_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureLogsIsMutable();
              logs_.addAll(other.logs_);
            }
            onChanged();
          }
        } else {
          if (!other.logs_.isEmpty()) {
            if (logsBuilder_.isEmpty()) {
              logsBuilder_.dispose();
              logsBuilder_ = null;
              logs_ = other.logs_;
              bitField0_ = (bitField0_ & ~0x00000002);
              logsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getLogsFieldBuilder() : null;
            } else {
              logsBuilder_.addAllMessages(other.logs_);
            }
          }
        }
        onChanged();
        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 {
        nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric> metrics_ =
        java.util.Collections.emptyList();
      private void ensureMetricsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          metrics_ = new java.util.ArrayList<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric>(metrics_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric.Builder, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.MetricOrBuilder> metricsBuilder_;

      /**
       * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
       */
      public java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric> getMetricsList() {
        if (metricsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(metrics_);
        } else {
          return metricsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
       */
      public int getMetricsCount() {
        if (metricsBuilder_ == null) {
          return metrics_.size();
        } else {
          return metricsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric getMetrics(int index) {
        if (metricsBuilder_ == null) {
          return metrics_.get(index);
        } else {
          return metricsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
       */
      public Builder setMetrics(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric value) {
        if (metricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMetricsIsMutable();
          metrics_.set(index, value);
          onChanged();
        } else {
          metricsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
       */
      public Builder setMetrics(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric.Builder builderForValue) {
        if (metricsBuilder_ == null) {
          ensureMetricsIsMutable();
          metrics_.set(index, builderForValue.build());
          onChanged();
        } else {
          metricsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
       */
      public Builder addMetrics(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric value) {
        if (metricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMetricsIsMutable();
          metrics_.add(value);
          onChanged();
        } else {
          metricsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
       */
      public Builder addMetrics(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric value) {
        if (metricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMetricsIsMutable();
          metrics_.add(index, value);
          onChanged();
        } else {
          metricsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
       */
      public Builder addMetrics(
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric.Builder builderForValue) {
        if (metricsBuilder_ == null) {
          ensureMetricsIsMutable();
          metrics_.add(builderForValue.build());
          onChanged();
        } else {
          metricsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
       */
      public Builder addMetrics(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric.Builder builderForValue) {
        if (metricsBuilder_ == null) {
          ensureMetricsIsMutable();
          metrics_.add(index, builderForValue.build());
          onChanged();
        } else {
          metricsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
       */
      public Builder addAllMetrics(
          java.lang.Iterable<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric> values) {
        if (metricsBuilder_ == null) {
          ensureMetricsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, metrics_);
          onChanged();
        } else {
          metricsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
       */
      public Builder clearMetrics() {
        if (metricsBuilder_ == null) {
          metrics_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          metricsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
       */
      public Builder removeMetrics(int index) {
        if (metricsBuilder_ == null) {
          ensureMetricsIsMutable();
          metrics_.remove(index);
          onChanged();
        } else {
          metricsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric.Builder getMetricsBuilder(
          int index) {
        return getMetricsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.MetricOrBuilder getMetricsOrBuilder(
          int index) {
        if (metricsBuilder_ == null) {
          return metrics_.get(index);  } else {
          return metricsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
       */
      public java.util.List<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.MetricOrBuilder> 
           getMetricsOrBuilderList() {
        if (metricsBuilder_ != null) {
          return metricsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(metrics_);
        }
      }
      /**
       * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric.Builder addMetricsBuilder() {
        return getMetricsFieldBuilder().addBuilder(
            nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric.getDefaultInstance());
      }
      /**
       * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric.Builder addMetricsBuilder(
          int index) {
        return getMetricsFieldBuilder().addBuilder(
            index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric.getDefaultInstance());
      }
      /**
       * <code>repeated .display_direct.Monitoring.Metric metrics = 1;</code>
       */
      public java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric.Builder> 
           getMetricsBuilderList() {
        return getMetricsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric.Builder, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.MetricOrBuilder> 
          getMetricsFieldBuilder() {
        if (metricsBuilder_ == null) {
          metricsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.Metric.Builder, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.MetricOrBuilder>(
                  metrics_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          metrics_ = null;
        }
        return metricsBuilder_;
      }

      private java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage> logs_ =
        java.util.Collections.emptyList();
      private void ensureLogsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          logs_ = new java.util.ArrayList<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage>(logs_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage.Builder, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessageOrBuilder> logsBuilder_;

      /**
       * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
       */
      public java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage> getLogsList() {
        if (logsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(logs_);
        } else {
          return logsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
       */
      public int getLogsCount() {
        if (logsBuilder_ == null) {
          return logs_.size();
        } else {
          return logsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage getLogs(int index) {
        if (logsBuilder_ == null) {
          return logs_.get(index);
        } else {
          return logsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
       */
      public Builder setLogs(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage value) {
        if (logsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLogsIsMutable();
          logs_.set(index, value);
          onChanged();
        } else {
          logsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
       */
      public Builder setLogs(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage.Builder builderForValue) {
        if (logsBuilder_ == null) {
          ensureLogsIsMutable();
          logs_.set(index, builderForValue.build());
          onChanged();
        } else {
          logsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
       */
      public Builder addLogs(nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage value) {
        if (logsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLogsIsMutable();
          logs_.add(value);
          onChanged();
        } else {
          logsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
       */
      public Builder addLogs(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage value) {
        if (logsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureLogsIsMutable();
          logs_.add(index, value);
          onChanged();
        } else {
          logsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
       */
      public Builder addLogs(
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage.Builder builderForValue) {
        if (logsBuilder_ == null) {
          ensureLogsIsMutable();
          logs_.add(builderForValue.build());
          onChanged();
        } else {
          logsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
       */
      public Builder addLogs(
          int index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage.Builder builderForValue) {
        if (logsBuilder_ == null) {
          ensureLogsIsMutable();
          logs_.add(index, builderForValue.build());
          onChanged();
        } else {
          logsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
       */
      public Builder addAllLogs(
          java.lang.Iterable<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage> values) {
        if (logsBuilder_ == null) {
          ensureLogsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, logs_);
          onChanged();
        } else {
          logsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
       */
      public Builder clearLogs() {
        if (logsBuilder_ == null) {
          logs_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          logsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
       */
      public Builder removeLogs(int index) {
        if (logsBuilder_ == null) {
          ensureLogsIsMutable();
          logs_.remove(index);
          onChanged();
        } else {
          logsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage.Builder getLogsBuilder(
          int index) {
        return getLogsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessageOrBuilder getLogsOrBuilder(
          int index) {
        if (logsBuilder_ == null) {
          return logs_.get(index);  } else {
          return logsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
       */
      public java.util.List<? extends nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessageOrBuilder> 
           getLogsOrBuilderList() {
        if (logsBuilder_ != null) {
          return logsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(logs_);
        }
      }
      /**
       * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage.Builder addLogsBuilder() {
        return getLogsFieldBuilder().addBuilder(
            nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage.getDefaultInstance());
      }
      /**
       * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
       */
      public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage.Builder addLogsBuilder(
          int index) {
        return getLogsFieldBuilder().addBuilder(
            index, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage.getDefaultInstance());
      }
      /**
       * <code>repeated .display_direct.Monitoring.LogMessage logs = 2;</code>
       */
      public java.util.List<nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage.Builder> 
           getLogsBuilderList() {
        return getLogsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage.Builder, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessageOrBuilder> 
          getLogsFieldBuilder() {
        if (logsBuilder_ == null) {
          logsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessage.Builder, nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring.LogMessageOrBuilder>(
                  logs_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          logs_ = null;
        }
        return logsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:display_direct.Monitoring)
    }

    // @@protoc_insertion_point(class_scope:display_direct.Monitoring)
    private static final nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring();
    }

    public static nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public nl.crowndov.displaydirect.common.messages.DisplayDirectMessage.Monitoring getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_display_direct_Subscribe_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_display_direct_Subscribe_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_display_direct_Subscribe_DisplayProperties_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_display_direct_Subscribe_DisplayProperties_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_display_direct_Subscribe_FieldFilter_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_display_direct_Subscribe_FieldFilter_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_display_direct_Unsubscribe_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_display_direct_Unsubscribe_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_display_direct_SubscriptionResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_display_direct_SubscriptionResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_display_direct_PassingTimes_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_display_direct_PassingTimes_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_display_direct_PassingTimes_Destination_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_display_direct_PassingTimes_Destination_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_display_direct_GeneralMessage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_display_direct_GeneralMessage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_display_direct_Container_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_display_direct_Container_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_display_direct_Monitoring_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_display_direct_Monitoring_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_display_direct_Monitoring_Metric_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_display_direct_Monitoring_Metric_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_display_direct_Monitoring_LogMessage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_display_direct_Monitoring_LogMessage_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\024display_direct.proto\022\016display_direct\"\365" +
      "\016\n\tSubscribe\022\021\n\tstop_code\030\001 \003(\t\022G\n\022displ" +
      "ay_properties\030\002 \001(\0132+.display_direct.Sub" +
      "scribe.DisplayProperties\022;\n\014field_filter" +
      "\030\003 \001(\0132%.display_direct.Subscribe.FieldF" +
      "ilter\022\023\n\013description\030\004 \001(\t\022\r\n\005email\030\005 \001(" +
      "\t\032\\\n\021DisplayProperties\022\027\n\017text_character" +
      "s\030\001 \001(\r\022\r\n\005lines\030\002 \001(\r\022\037\n\027max_combined_d" +
      "irections\030\003 \001(\r\032\314\014\n\013FieldFilter\022K\n\023targe" +
      "t_arrival_time\030\001 \001(\0162..display_direct.Su",
      "bscribe.FieldFilter.Delivery\022M\n\025target_d" +
      "eparture_time\030\002 \001(\0162..display_direct.Sub" +
      "scribe.FieldFilter.Delivery\022M\n\025expected_" +
      "arrival_time\030\003 \001(\0162..display_direct.Subs" +
      "cribe.FieldFilter.Delivery\022I\n\021number_of_" +
      "coaches\030\004 \001(\0162..display_direct.Subscribe" +
      ".FieldFilter.Delivery\022H\n\020trip_stop_statu" +
      "s\030\005 \001(\0162..display_direct.Subscribe.Field" +
      "Filter.Delivery\022F\n\016transport_type\030\006 \001(\0162" +
      "..display_direct.Subscribe.FieldFilter.D",
      "elivery\022M\n\025wheelchair_accessible\030\007 \001(\0162." +
      ".display_direct.Subscribe.FieldFilter.De" +
      "livery\022F\n\016is_timing_stop\030\010 \001(\0162..display" +
      "_direct.Subscribe.FieldFilter.Delivery\022A" +
      "\n\tstop_code\030\t \001(\0162..display_direct.Subsc" +
      "ribe.FieldFilter.Delivery\022C\n\013destination" +
      "\030\n \001(\0162..display_direct.Subscribe.FieldF" +
      "ilter.Delivery\022J\n\022line_public_number\030\013 \001" +
      "(\0162..display_direct.Subscribe.FieldFilte" +
      "r.Delivery\022A\n\tside_code\030\014 \001(\0162..display_",
      "direct.Subscribe.FieldFilter.Delivery\022F\n" +
      "\016line_direction\030\r \001(\0162..display_direct.S" +
      "ubscribe.FieldFilter.Delivery\022O\n\027journey" +
      "_message_content\030\016 \001(\0162..display_direct." +
      "Subscribe.FieldFilter.Delivery\022B\n\nline_c" +
      "olor\030\017 \001(\0162..display_direct.Subscribe.Fi" +
      "eldFilter.Delivery\022G\n\017line_text_color\030\020 " +
      "\001(\0162..display_direct.Subscribe.FieldFilt" +
      "er.Delivery\022A\n\tline_icon\030\021 \001(\0162..display" +
      "_direct.Subscribe.FieldFilter.Delivery\022I",
      "\n\021destination_color\030\022 \001(\0162..display_dire" +
      "ct.Subscribe.FieldFilter.Delivery\022N\n\026des" +
      "tination_text_color\030\023 \001(\0162..display_dire" +
      "ct.Subscribe.FieldFilter.Delivery\022H\n\020des" +
      "tination_icon\030\024 \001(\0162..display_direct.Sub" +
      "scribe.FieldFilter.Delivery\022K\n\023generated" +
      "_timestamp\030\025 \001(\0162..display_direct.Subscr" +
      "ibe.FieldFilter.Delivery\",\n\010Delivery\022\t\n\005" +
      "NEVER\020\000\022\n\n\006ALWAYS\020\001\022\t\n\005DELTA\020\002\"6\n\013Unsubs" +
      "cribe\022\024\n\014is_permanent\030\001 \001(\010\022\021\n\ttimestamp",
      "\030\002 \001(\r\"\206\002\n\024SubscriptionResponse\022\017\n\007succe" +
      "ss\030\001 \001(\010\022;\n\006status\030\002 \001(\0162+.display_direc" +
      "t.SubscriptionResponse.Status\022\021\n\ttimesta" +
      "mp\030\003 \001(\r\"\214\001\n\006Status\022\023\n\017REQUEST_INVALID\020\000" +
      "\022\020\n\014STOP_INVALID\020\001\022\032\n\026AUTHORISATION_REQU" +
      "IRED\020\013\022\021\n\rPLANNING_SENT\020\024\022\017\n\013NO_PLANNING" +
      "\020\025\022\033\n\027AUTHORISATION_VALIDATED\020\026\"\310\007\n\014Pass" +
      "ingTimes\022\026\n\016pass_time_hash\030\001 \003(\r\022\033\n\023targ" +
      "et_arrival_time\030\002 \003(\r\022\035\n\025target_departur" +
      "e_time\030\003 \003(\r\022\035\n\025expected_arrival_time\030\004 ",
      "\003(\r\022\037\n\027expected_departure_time\030\005 \003(\r\022\031\n\021" +
      "number_of_coaches\030\006 \003(\r\022E\n\020trip_stop_sta" +
      "tus\030\007 \003(\0162+.display_direct.PassingTimes." +
      "TripStopStatus\022B\n\016transport_type\030\010 \003(\0162*" +
      ".display_direct.PassingTimes.TransportTy" +
      "pe\022\035\n\025wheelchair_accessible\030\t \003(\010\022\026\n\016is_" +
      "timing_stop\030\n \003(\010\022\021\n\tstop_code\030\013 \003(\t\022=\n\013" +
      "destination\030\014 \003(\0132(.display_direct.Passi" +
      "ngTimes.Destination\022\032\n\022line_public_numbe" +
      "r\030\r \003(\t\022\021\n\tside_code\030\016 \003(\t\022\026\n\016line_direc",
      "tion\030\017 \003(\r\022\037\n\027journey_message_content\030\020 " +
      "\003(\t\022\022\n\nline_color\030\021 \003(\t\022\027\n\017line_text_col" +
      "or\030\022 \003(\t\022\021\n\tline_icon\030\023 \003(\t\022\031\n\021destinati" +
      "on_color\030\024 \003(\t\022\036\n\026destination_text_color" +
      "\030\025 \003(\t\022\030\n\020destination_icon\030\026 \003(\t\022\033\n\023gene" +
      "rated_timestamp\030\027 \003(\r\032\034\n\013Destination\022\r\n\005" +
      "value\030\001 \003(\t\"y\n\016TripStopStatus\022\013\n\007PLANNED" +
      "\020\000\022\013\n\007DRIVING\020\001\022\013\n\007SKIPPED\020\002\022\r\n\tCANCELLE" +
      "D\020\003\022\013\n\007DELETED\020\004\022\013\n\007ARRIVED\020\005\022\n\n\006PASSED\020" +
      "\006\022\013\n\007UNKNOWN\020\007\"B\n\rTransportType\022\007\n\003BUS\020\000",
      "\022\010\n\004TRAM\020\001\022\t\n\005METRO\020\002\022\t\n\005TRAIN\020\004\022\010\n\004BOAT" +
      "\020\005\"\222\001\n\016GeneralMessage\022\024\n\014message_hash\030\001 " +
      "\003(\r\022\027\n\017message_content\030\002 \003(\t\022\032\n\022message_" +
      "start_time\030\003 \003(\r\022\030\n\020message_end_time\030\004 \003" +
      "(\r\022\033\n\023generated_timestamp\030\005 \003(\t\"z\n\tConta" +
      "iner\0223\n\rpassing_times\030\001 \003(\0132\034.display_di" +
      "rect.PassingTimes\0228\n\020general_messages\030\002 " +
      "\003(\0132\036.display_direct.GeneralMessage\"\235\002\n\n" +
      "Monitoring\0222\n\007metrics\030\001 \003(\0132!.display_di" +
      "rect.Monitoring.Metric\0223\n\004logs\030\002 \003(\0132%.d",
      "isplay_direct.Monitoring.LogMessage\032O\n\006M" +
      "etric\022\014\n\004name\030\001 \001(\t\022\r\n\005value\030\002 \001(\005\022\025\n\rst" +
      "opsystem_id\030\003 \001(\t\022\021\n\ttimestamp\030\004 \001(\r\032U\n\n" +
      "LogMessage\022\014\n\004code\030\001 \001(\r\022\017\n\007message\030\002 \001(" +
      "\t\022\025\n\rstopsystem_id\030\003 \001(\t\022\021\n\ttimestamp\030\004 " +
      "\001(\rBA\n)nl.crowndov.displaydirect.common." +
      "messagesB\024DisplayDirectMessageb\006proto3"
    };
    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;
            return null;
          }
        };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
    internal_static_display_direct_Subscribe_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_display_direct_Subscribe_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_display_direct_Subscribe_descriptor,
        new java.lang.String[] { "StopCode", "DisplayProperties", "FieldFilter", "Description", "Email", });
    internal_static_display_direct_Subscribe_DisplayProperties_descriptor =
      internal_static_display_direct_Subscribe_descriptor.getNestedTypes().get(0);
    internal_static_display_direct_Subscribe_DisplayProperties_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_display_direct_Subscribe_DisplayProperties_descriptor,
        new java.lang.String[] { "TextCharacters", "Lines", "MaxCombinedDirections", });
    internal_static_display_direct_Subscribe_FieldFilter_descriptor =
      internal_static_display_direct_Subscribe_descriptor.getNestedTypes().get(1);
    internal_static_display_direct_Subscribe_FieldFilter_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_display_direct_Subscribe_FieldFilter_descriptor,
        new java.lang.String[] { "TargetArrivalTime", "TargetDepartureTime", "ExpectedArrivalTime", "NumberOfCoaches", "TripStopStatus", "TransportType", "WheelchairAccessible", "IsTimingStop", "StopCode", "Destination", "LinePublicNumber", "SideCode", "LineDirection", "JourneyMessageContent", "LineColor", "LineTextColor", "LineIcon", "DestinationColor", "DestinationTextColor", "DestinationIcon", "GeneratedTimestamp", });
    internal_static_display_direct_Unsubscribe_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_display_direct_Unsubscribe_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_display_direct_Unsubscribe_descriptor,
        new java.lang.String[] { "IsPermanent", "Timestamp", });
    internal_static_display_direct_SubscriptionResponse_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_display_direct_SubscriptionResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_display_direct_SubscriptionResponse_descriptor,
        new java.lang.String[] { "Success", "Status", "Timestamp", });
    internal_static_display_direct_PassingTimes_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_display_direct_PassingTimes_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_display_direct_PassingTimes_descriptor,
        new java.lang.String[] { "PassTimeHash", "TargetArrivalTime", "TargetDepartureTime", "ExpectedArrivalTime", "ExpectedDepartureTime", "NumberOfCoaches", "TripStopStatus", "TransportType", "WheelchairAccessible", "IsTimingStop", "StopCode", "Destination", "LinePublicNumber", "SideCode", "LineDirection", "JourneyMessageContent", "LineColor", "LineTextColor", "LineIcon", "DestinationColor", "DestinationTextColor", "DestinationIcon", "GeneratedTimestamp", });
    internal_static_display_direct_PassingTimes_Destination_descriptor =
      internal_static_display_direct_PassingTimes_descriptor.getNestedTypes().get(0);
    internal_static_display_direct_PassingTimes_Destination_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_display_direct_PassingTimes_Destination_descriptor,
        new java.lang.String[] { "Value", });
    internal_static_display_direct_GeneralMessage_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_display_direct_GeneralMessage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_display_direct_GeneralMessage_descriptor,
        new java.lang.String[] { "MessageHash", "MessageContent", "MessageStartTime", "MessageEndTime", "GeneratedTimestamp", });
    internal_static_display_direct_Container_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_display_direct_Container_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_display_direct_Container_descriptor,
        new java.lang.String[] { "PassingTimes", "GeneralMessages", });
    internal_static_display_direct_Monitoring_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_display_direct_Monitoring_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_display_direct_Monitoring_descriptor,
        new java.lang.String[] { "Metrics", "Logs", });
    internal_static_display_direct_Monitoring_Metric_descriptor =
      internal_static_display_direct_Monitoring_descriptor.getNestedTypes().get(0);
    internal_static_display_direct_Monitoring_Metric_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_display_direct_Monitoring_Metric_descriptor,
        new java.lang.String[] { "Name", "Value", "StopsystemId", "Timestamp", });
    internal_static_display_direct_Monitoring_LogMessage_descriptor =
      internal_static_display_direct_Monitoring_descriptor.getNestedTypes().get(1);
    internal_static_display_direct_Monitoring_LogMessage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_display_direct_Monitoring_LogMessage_descriptor,
        new java.lang.String[] { "Code", "Message", "StopsystemId", "Timestamp", });
  }

  // @@protoc_insertion_point(outer_class_scope)
} public enum LogCode {

    SYSTEM_STARTED(100),
    SYSTEM_STOPPED(101),

    PLANNING_LOADED(500),
    PLANNING_STARTED_LOADING(501),
    PLANING_LOADING_ERROR(502),

    SUBSCRIPTION_ADDED(1000),
    SUBSCRIPTION_REMOVED(1001),
    SUBSCRIPTION_INVALID(1010),
    SUBSCRIPTION_INVALID_UNSUBSCRIBE(1020),

    AUTHORISATION_SENT(1100),
    AUTHORISATION_VALIDATED(1101),
    AUTHORISATION_ALREADY_SENT(1102);

    private final int code;

    LogCode(int code) {
        this.code = code;
    }

    public int getValue() {
        return code;
    }

    public static LogCode fromCode(int code) {
        for (LogCode lc : values()) {
            if (lc.getValue() == code) {
                return lc;
            }
        }
        return null;
    }
} public class TopicFactory {

    /**
     * Generate a topic for subscribe messages
     * @param stopSytemId An id for the originating stopsystem. If null, will be filled with a wildcard for that level
     * @return A valid topic name for subscribe messages
     */
    public static String subscribe(String stopSytemId) {
        return stopSystemOrigin(stopSytemId, "subscribe");
    }

    /**
     * Generate a topic for unsubscribe messages
     * @param stopSytemId An id for the originating stopsystem. If null, will be filled with a wildcard for that level
     * @return A valid topic name for unsubscribe messages
     */
    public static String unsubscribe(String stopSytemId) {
        return stopSystemOrigin(stopSytemId, "unsubscribe");
    }

    /**
     * Generate a topic for travel information messages
     * @param stopSytemId An id for the destination stopsystem. If null, will be filled with a wildcard for that level
     * @return A valid topic name for travel information messages
     */
    public static String travelInformation(String stopSytemId) {
        return stopSystemDestination(stopSytemId, "travel_information");
    }

    /**
     * Generate a topic for subscription response messages
     * @param stopSytemId An id for the destination stopsystem. If null, will be filled with a wildcard for that level
     * @return A valid topic name for subscription response messages
     */
    public static String subscriptionResponse(String stopSytemId) {
        return stopSystemDestination(stopSytemId, "subscription_response");
    }

    /**
     * Generate a topic for monitoring messages about stops
     * @param stopSytemId An id for the object stopsystem. If null, will be filled with a wildcard for that level
     * @return A valid topic name for monitoring messages
     */
    public static String monitoring(String stopSytemId) {
        return stopSystemDestination(stopSytemId, "monitoring");
    }

    /**
     * Generate a topic for monitoring messages about the distribution function
     * @return A valid topic name for monitoring messages
     */
    public static String monitoring() {
        return "distribution/monitoring";
    }

    private static String stopSystemDestination(String stopSytemId, String category) {
        return "stopsystem/"+ idOrWildcard(stopSytemId) + "/" + category;
    }

    private static String stopSystemOrigin(String stopSytemId, String command) {
        return command + "/stopsystem/"+ idOrWildcard(stopSytemId);
    }

    private static String idOrWildcard(String id) {
        return id != null ? id : "+";
    }

} public class TopicParser {

    private static final String UNSUBSCRIBE = "unsubscribe";
    private static final String SUBSCRIBE = "subscribe";

    public static Optional<String> getId(String topic) {
        if (topic.startsWith(SUBSCRIBE) || topic.startsWith(UNSUBSCRIBE)) {
            return Optional.of(topic.split("\\/")[2]);
        }
        return Optional.empty();
    }

    public static Optional<String> getCommand(String topic) {
        if (topic.startsWith(SUBSCRIBE)) {
            return Optional.of(SUBSCRIBE);
        } else if (topic.startsWith(UNSUBSCRIBE)) {
            return Optional.of(UNSUBSCRIBE);
        }
        return Optional.empty();
    }
} public class AuthorizationWhitelist extends AbstractService {

    private static final Logger LOGGER = LoggerFactory.getLogger(AuthorizationWhitelist.class);

    private static List<String> validKeys = new ArrayList<>();
    private static Store.ValidationTokenStore validationTokens = new Store.ValidationTokenStore();

    private static Transport transport = TransportFactory.get();

    private static MessageDigest DIGEST = null;

    static {
        try {
            DIGEST = MessageDigest.getInstance("SHA-256");
        } catch (NoSuchAlgorithmException e) {
            LOGGER.error("Failed to initialize hash algorithm", e);
        }
    }

    public static void start() {
        backup(() -> {
            readFile("authorization_keys", Store.StringList.class).ifPresent(k -> validKeys = k);
            readFile("authorization_tokens", Store.ValidationTokenStore.class).ifPresent(vt -> validationTokens = vt);
        });
    }

    public static void stop() {
        writeFile("authorization_keys", validKeys);
        writeFile("authorization_tokens", validationTokens);
    }


    public static boolean isValid(Subscription sub) {
        return validKeys.contains(getKey(sub.getId(), sub.getEmail())) || Configuration.getAuthorizationWhitelist().contains(sub.getPrefix());
    }

    private static String getKey(String systemId, String email) {
        return systemId + "_" + email.toLowerCase();
    }

    public static Optional<ValidationToken> addValidation(String systemId, Subscription subscribe) {
        ZonedDateTime now = ZonedDateTime.now(Configuration.getZoneId());
        // Check a validation token hasn't already been handed out for this system and it's still valid
        if (validationTokens.values().stream().anyMatch(vt -> vt.getSystemId().contentEquals(systemId) && vt.getGenerated().plusHours(48).isAfter(now))) {
            return Optional.empty();
        }
        ValidationToken v = new ValidationToken(newToken(), systemId, subscribe.getEmail(), ZonedDateTime.now(ZoneId.of("UTC")), subscribe);
        validationTokens.put(v.getToken(), v);

        Map<String, Object> variables = new HashMap<>();
        variables.put("id", systemId);
        variables.put("description", subscribe.getDescription());
        variables.put("url", Configuration.getBaseUrl() + "/admin/authorize?token=" + v.getToken());
        EmailUtil.sendHtmlEmail(subscribe.getEmail(), "Rond aanmelding DisplayDirect af", "authenticate", variables);

        return Optional.ofNullable(v);
    }

    private static String newToken() {
        return getHash(UUID.randomUUID().toString());
    }

    private static String getHash(String s) {
        return DatatypeConverter.printHexBinary(DIGEST.digest(s.getBytes()));
    }

    public static boolean validate(String token) {
        if (validationTokens.containsKey(token) && validationTokens.get(token).isValid()) {
            ValidationToken vt = validationTokens.get(token);
            validKeys.add(getKey(vt.getSystemId(), vt.getEmail()));
            validationTokens.remove(token);
            // TODO: Might need to do this in a different thread, this will trigger 48 hours of messages
            // Get the planning we need // TODO: Duplicated
            List<RealtimeMessage> times = QuayDataProvider.getDataForQuay(vt.getSubscription().getSubscribedQuayCodes(), true);
            sendStatus(vt.getSystemId(), true, DisplayDirectMessage.SubscriptionResponse.Status.AUTHORISATION_VALIDATED);
            if (times.size() > 0) {
                LOGGER.debug("Got {} times to send", times.size());
                transport.sendMessage(TopicFactory.travelInformation(vt.getSystemId()), DisplayDirectMessageFactory.fromRealTime(times, vt.getSubscription()), QoS.AT_LEAST_ONCE);
                sendStatus(vt.getSystemId(), true, DisplayDirectMessage.SubscriptionResponse.Status.PLANNING_SENT);
            } else {
                sendStatus(vt.getSystemId(), true, DisplayDirectMessage.SubscriptionResponse.Status.NO_PLANNING);
            }

            SubscriptionStore.add(vt.getSubscription());
            Log.send(LogCode.AUTHORISATION_VALIDATED, vt.getSystemId(), "Authorization processed");
            Log.send(LogCode.SUBSCRIPTION_ADDED, vt.getSystemId(), "System subscribed succesfully, authorization processed");
            return true;
        }
        return false;
    }

    public static void remove(Subscription sub) {
        // aah
        validKeys.remove(getKey(sub.getId(), sub.getEmail()));
    }

    public static List<ValidationToken> getTokens() {
        return new ArrayList<>(validationTokens.values());
    }

    public static List<String> getValid() {
        return validKeys;
    }

    // TODO: Duplicate method
    private static boolean sendStatus(String id, boolean success, DisplayDirectMessage.SubscriptionResponse.Status s) {
        return transport.sendMessage(TopicFactory.subscriptionResponse(id),  DisplayDirectMessageFactory.toSubscriptionStatus(success, s), QoS.EXACTLY_ONCE);
    }
} public class ValidationToken {

    private final String token;
    private final String systemId;
    private final String email;
    private final ZonedDateTime generated;
    private final Subscription subscription;

    public ValidationToken(String token, String systemId, String email, ZonedDateTime generated, Subscription subscribe) {
        this.token = token;
        this.systemId = systemId;
        this.email = email;
        this.generated = generated;
        this.subscription = subscribe;
    }

    public boolean isValid() {
        return generated.plusHours(Configuration.getAuthorizationTokenMaxAge()).isAfter(ZonedDateTime.now(ZoneId.of("UTC")));
    }

    public String getEmail() {
        return email;
    }

    public String getToken() {
        return token;
    }

    public ZonedDateTime getGenerated() {
        return generated;
    }

    public String getSystemId() {
        return systemId;
    }

    public Subscription getSubscription() {
        return subscription;
    }
} public class Subscription {

    private String id;

    private int lines = 0;
    private int textCharacters = 0;

    private List<String> subscribedQuayCodes = new ArrayList<>();

    private FieldDelivery targetArrivalTime;
    private FieldDelivery targetDepartureTime;
    private FieldDelivery expectedArrivalTime;
    private FieldDelivery numberOfCoaches;
    private FieldDelivery tripStopStatus;
    private FieldDelivery transportType;
    private FieldDelivery wheelchairAccessible;
    private FieldDelivery isTimingStop;
    private FieldDelivery stopCode;
    private FieldDelivery destination;
    private FieldDelivery linePublicNumber;
    private FieldDelivery sideCode;
    private FieldDelivery lineDirection;
    private FieldDelivery journeyMessageContent;
    private FieldDelivery lineColor;
    private FieldDelivery lineTextColor;
    private FieldDelivery lineIcon;
    private FieldDelivery destinationColor;
    private FieldDelivery destinationTextColor;
    private FieldDelivery destinationIcon;
    private FieldDelivery generatedTimestamp;

    private String email;
    private String description;

    public Subscription(String id) {
        this.id = id;
    }

    public String getId() {
        return id;
    }

    public int getLines() {
        return lines;
    }

    public void setLines(int lines) {
        this.lines = lines;
    }

    public int getTextCharacters() {
        return textCharacters;
    }

    public void setTextCharacters(int textCharacters) {
        this.textCharacters = textCharacters;
    }

    public List<String> getSubscribedQuayCodes() {
        return subscribedQuayCodes;
    }

    public void setSubscribedQuayCodes(List<String> subscribedQuayCodes) {
        this.subscribedQuayCodes = subscribedQuayCodes;
    }

    public FieldDelivery getTargetArrivalTime() {
        return targetArrivalTime;
    }

    public void setTargetArrivalTime(FieldDelivery targetArrivalTime) {
        this.targetArrivalTime = targetArrivalTime;
    }

    public FieldDelivery getTargetDepartureTime() {
        return targetDepartureTime;
    }

    public void setTargetDepartureTime(FieldDelivery targetDepartureTime) {
        this.targetDepartureTime = targetDepartureTime;
    }

    public FieldDelivery getExpectedArrivalTime() {
        return expectedArrivalTime;
    }

    public void setExpectedArrivalTime(FieldDelivery expectedArrivalTime) {
        this.expectedArrivalTime = expectedArrivalTime;
    }

    public FieldDelivery getNumberOfCoaches() {
        return numberOfCoaches;
    }

    public void setNumberOfCoaches(FieldDelivery numberOfCoaches) {
        this.numberOfCoaches = numberOfCoaches;
    }

    public FieldDelivery getTripStopStatus() {
        return tripStopStatus;
    }

    public void setTripStopStatus(FieldDelivery tripStopStatus) {
        this.tripStopStatus = tripStopStatus;
    }

    public FieldDelivery getTransportType() {
        return transportType;
    }

    public void setTransportType(FieldDelivery transportType) {
        this.transportType = transportType;
    }

    public FieldDelivery getWheelchairAccessible() {
        return wheelchairAccessible;
    }

    public void setWheelchairAccessible(FieldDelivery wheelchairAccessible) {
        this.wheelchairAccessible = wheelchairAccessible;
    }

    public FieldDelivery getIsTimingStop() {
        return isTimingStop;
    }

    public void setIsTimingStop(FieldDelivery isTimingStop) {
        this.isTimingStop = isTimingStop;
    }

    public FieldDelivery getStopCode() {
        return stopCode;
    }

    public void setStopCode(FieldDelivery stopCode) {
        this.stopCode = stopCode;
    }

    public FieldDelivery getDestination() {
        return destination;
    }

    public void setDestination(FieldDelivery destination) {
        this.destination = destination;
    }

    public FieldDelivery getLinePublicNumber() {
        return linePublicNumber;
    }

    public void setLinePublicNumber(FieldDelivery linePublicNumber) {
        this.linePublicNumber = linePublicNumber;
    }

    public FieldDelivery getSideCode() {
        return sideCode;
    }

    public void setSideCode(FieldDelivery sideCode) {
        this.sideCode = sideCode;
    }

    public FieldDelivery getLineDirection() {
        return lineDirection;
    }

    public void setLineDirection(FieldDelivery lineDirection) {
        this.lineDirection = lineDirection;
    }

    public FieldDelivery getJourneyMessageContent() {
        return journeyMessageContent;
    }

    public void setJourneyMessageContent(FieldDelivery journeyMessageContent) {
        this.journeyMessageContent = journeyMessageContent;
    }

    public FieldDelivery getLineColor() {
        return lineColor;
    }

    public void setLineColor(FieldDelivery lineColor) {
        this.lineColor = lineColor;
    }

    public FieldDelivery getLineTextColor() {
        return lineTextColor;
    }

    public void setLineTextColor(FieldDelivery lineTextColor) {
        this.lineTextColor = lineTextColor;
    }

    public FieldDelivery getLineIcon() {
        return lineIcon;
    }

    public void setLineIcon(FieldDelivery lineIcon) {
        this.lineIcon = lineIcon;
    }

    public FieldDelivery getDestinationColor() {
        return destinationColor;
    }

    public void setDestinationColor(FieldDelivery destinationColor) {
        this.destinationColor = destinationColor;
    }

    public FieldDelivery getDestinationTextColor() {
        return destinationTextColor;
    }

    public void setDestinationTextColor(FieldDelivery destinationTextColor) {
        this.destinationTextColor = destinationTextColor;
    }

    public FieldDelivery getDestinationIcon() {
        return destinationIcon;
    }

    public void setDestinationIcon(FieldDelivery destinationIcon) {
        this.destinationIcon = destinationIcon;
    }

    public FieldDelivery getGeneratedTimestamp() {
        return generatedTimestamp;
    }

    public void setGeneratedTimestamp(FieldDelivery generatedTimestamp) {
        this.generatedTimestamp = generatedTimestamp;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public boolean isValid() {
        return email != null && subscribedQuayCodes != null && subscribedQuayCodes.size() >= 1;
    }

    public boolean hasValidStop() {
        return subscribedQuayCodes.stream().allMatch(StopStore::stopExists);
    }

    public String getPrefix() {
        return id.split("_", 2)[0];
    }

    public enum FieldDelivery {
        NEVER,
        DELTA,
        ALWAYS
    }
} public class RealtimeMessage implements Serializable {

    private static final long serialVersionUID = -8692508260190453615L;

    private Type type;
    private LocalDate date;
    private String dataOwnerCode;
    private String stopCode;

    private String quayCode;

    public RealtimeMessage() {
    }

    public RealtimeMessage(Type type, LocalDate date, String dataOwnerCode, String stopCode) {
        this.type = type;
        this.date = date;
        this.dataOwnerCode = dataOwnerCode;
        this.stopCode = stopCode;
    }

    public String getDataOwnerCode() {
        return dataOwnerCode;
    }

    public LocalDate getDate() {
        return date;
    }

    public Type getType() {
        return type;
    }

    public String getStopCode() {
        return stopCode;
    }

    public String getQuayCode() {
        return quayCode;
    }

    public void setQuayCode(String quayCode) {
        this.quayCode = quayCode;
    }

    public enum Type {
        PASSTIME,
        MESSAGE_UPDATE,
        MESSAGE_DELETE,
    }
} public class QuayDataProvider extends AbstractService {

    private static final Logger LOGGER = LoggerFactory.getLogger(QuayDataProvider.class);

    private static final String FILE_JOURNEYS = "data_journeys";
    private static final String FILE_MESSAGES = "data_messages";

    private static ScheduledExecutorService schedule = Executors.newScheduledThreadPool(2);
    private static LineOrDestinationProcessor lineDestProcess = new LineOrDestinationProcessor();

    private static final Store.PlanningStore quays = new Store.PlanningStore();

    private static ScheduledFuture<?> backupTask;

    private static Transport transport = TransportFactory.get();

    public static void start() {
        LOGGER.debug("Loading data");
        Optional<List<PassTime>> lastData = readSerializedFile(FILE_JOURNEYS);
        if (lastData.isPresent() && lastData.get().size() > 0) {
            replace(lastData.get());
            LOGGER.info("Restored {} entries to planning from backupTask", lastData.get().size());
            cleanupPlanning();

            Optional<List<UpdateMessage>> messages = readSerializedFile(FILE_MESSAGES);
            if (messages.isPresent()) {
                replaceMessages(messages.get());
            } else {
                LOGGER.error("Failed to recover general messages");
            }

        } else {
            LOGGER.info("Backup empty, loading new planning", quays.size());
            schedule.submit(getPlanningLoader(true));
        }

        schedule(schedule, "planningLoader", getPlanningLoader(false), Configuration.getPlanningLoaderTime(), 24);
        schedule(schedule, "planningCleanup", new CatchableRunnable(QuayDataProvider::cleanupPlanning), Configuration.getPlanningCleanupTime(), 24);
    }

    private static void replaceMessages(List<UpdateMessage> updateMessages) {
        int[] records = { 0 };
        updateMessages.stream()
                .filter(t -> t.getQuayCode() != null)
                .collect(Collectors.groupingBy(UpdateMessage::getQuayCode))
                .forEach((key, value) -> {
                    if (!quays.containsKey(key)) {
                        quays.put(key, new QuayStore());
                    }
                    value.forEach(v -> quays.get(key).getMessages().put(v.getMessageHash(), v));
                });
        LOGGER.info("QuayStore now contains {} messages for {} stops", records[0], quays.size());
    }

    private static void cleanupPlanning() {
        LocalDate now = LocalDate.now(Configuration.getZoneId());
        List<String> remove = new ArrayList<>();
        quays.forEach((stop, quayStore) ->
                quayStore.getPassTimes().forEach((hash, pass) -> {
                    if (pass.getDate().isBefore(now)) {
                        remove.add(stop+"|"+hash);
                    }
                }));
        remove.forEach(rem -> {
            String[] spl = rem.split("\\|");
            quays.get(spl[0]).getPassTimes().remove(Integer.valueOf(spl[1]));
        });
        long remainingRecords = quays.entrySet().stream()
                .mapToLong(s -> s.getValue().getPassTimes().entrySet().size())
                .sum();
        LOGGER.debug("Removed {} journey records, {} records remain for {} stops", remove.size(), remainingRecords, quays.size());
    }

    private static Runnable getPlanningLoader(boolean initial) {
        return new CatchableRunnable(() -> new PlanningLoader().loadFiles(initial));
    }

    public static void stop() {
        backupTask.cancel(true);
        schedule.shutdownNow();
    }


    public static List<PassTime> getTimesForStop(String code) {
        return new ArrayList<>(quays.getOrDefault(code, new QuayStore()).getPassTimes().values());
    }

    public static List<UpdateMessage> getMessagesForStop(String code) {
        return new ArrayList<>(quays.getOrDefault(code, new QuayStore()).getMessages().values());
    }

    public static List<UpdateMessage> getAllMessages() { // TODO: Rename, this one is for debug
        return quays.entrySet().stream().flatMap(e -> e.getValue().getMessages().values().stream()).collect(Collectors.toList());
    }

    public static List<RealtimeMessage> getDataForQuay(List<String> quayCodes, boolean sendGeneralMessages) {
        Stream<RealtimeMessage> passTime = quayCodes.stream()
                .map(QuayDataProvider::getTimesForStop)
                .flatMap(Collection::stream)
                .map(lineDestProcess::process) // Add lines and destinations only when we send these messages out
                .map(PlanningMapper::setExpected); // Set expected to be target times
        Stream<RealtimeMessage> updateMessage = Stream.empty();
        if (sendGeneralMessages) {
            updateMessage = quayCodes.stream()
                    .map(QuayDataProvider::getMessagesForStop)
                    .flatMap(Collection::stream);
        }

        return Stream.concat(passTime, updateMessage)
                .collect(Collectors.toList());
    }

    public static synchronized void replace(List<PassTime> times) {
        // TODO: Do a delta here of already sent busses
        Set<String> rejected = times.stream()
                .filter(t -> t.getQuayCode() != null)
                .map(p -> p.getDataOwnerCode()+":"+p.getStopCode())
                .collect(Collectors.toSet());
        int[] records = { 0 };
        times.stream()
                .filter(t -> t.getQuayCode() != null)
                .collect(Collectors.groupingBy(PassTime::getQuayCode))
                .forEach((key, value) -> {
                        quays.put(key, new QuayStore());
                        Map<Integer, PassTime> out = quays.get(key).getPassTimes();
                        value.forEach(record -> {
                            if (!out.containsKey(record.getPassTimeHash())) {
                                out.put(record.getPassTimeHash(), record);
                                records[0] += 1;
                            } else {
                                PassTime current = out.get(record.getPassTimeHash());
                                if (record.getGeneratedTimestamp() > current.getGeneratedTimestamp()) {
                                    out.put(record.getPassTimeHash(), record);
                                }

                            }
                        });
                });
        LOGGER.info("Planning now contains {} records for {} stops, rejected {}", records[0], quays.size(), rejected.size());

        // TODO: Move this code elsewhere
        // TODO: This sends everything for two days, but needs to do a delta
        SubscriptionStore.getAllSystems().values().parallelStream().forEach(sub -> {
            List<RealtimeMessage> planning = QuayDataProvider.getDataForQuay(sub.getSubscribedQuayCodes(), false);
            if (times.size() > 0) {
                LOGGER.debug("New planning: got {} times to send to {}", times.size(), sub.getId());
                transport.sendMessage(TopicFactory.travelInformation(sub.getId()), DisplayDirectMessageFactory.fromRealTime(planning, sub), QoS.AT_LEAST_ONCE);
            }
        });

        MetricStore.getInstance().storeMetric("kv78turbo.planning.stops", quays.size());
        MetricStore.getInstance().storeMetric("kv78turbo.planning.rejected", rejected.size());
        MetricStore.getInstance().storeMetric("kv78turbo.planning.records", times.size());
        scheduleBackup();
    }

    public static synchronized void updatePassTime(PassTime passTime) {
        if (!quays.containsKey(passTime.getQuayCode())) {
            quays.put(passTime.getQuayCode(), new QuayStore());
        }
        // TODO: Out of order updates
        quays.get(passTime.getQuayCode()).getPassTimes().put(passTime.getPassTimeHash(), passTime);
    }

    public static synchronized void updateMessage(UpdateMessage message) {
        if (!quays.containsKey(message.getQuayCode())) {
            quays.put(message.getQuayCode(), new QuayStore());
        }
        // TODO: Out of order updates
        quays.get(message.getQuayCode()).getMessages().put(message.getMessageHash(), message);
    }

    public static synchronized void deleteMessage(DeleteMessage message) {
        if (!quays.containsKey(message.getQuayCode())) {
            quays.put(message.getQuayCode(), new QuayStore());
        }
        quays.get(message.getQuayCode()).getMessages().remove(message.getMessageHash());
    }

    private static void scheduleBackup() {
        backupTask = schedule.scheduleAtFixedRate(()-> {
            LOGGER.debug("Starting backupTask of planning data");
            writeFileSerialize(FILE_JOURNEYS, quays.values().stream().flatMap(h -> h.getPassTimes().values().stream()).collect(Collectors.toList()));
            writeFileSerialize(FILE_MESSAGES, quays.values().stream().flatMap(h -> h.getMessages().values().stream()).collect(Collectors.toList()));
            LOGGER.debug("Finished backupTask of planning data");
        }, 1, 15, TimeUnit.MINUTES);
    }
} public class Log {

    private static Transport transport = TransportFactory.get();
    private static String topic = TopicFactory.monitoring();

    public static void send(LogCode code, String message) {
        send(new LogMessage(code, message));
    }

    public static void send(LogCode code, String stopSystemId, String message) {
        send(new LogMessage(code, stopSystemId, message));
    }

    public static void send(LogMessage lm) {
        if (lm.getStopSystemId() == null) {
            transport.sendMessage(topic, DisplayDirectMessageFactory.toMonitoringLog(lm), QoS.AT_LEAST_ONCE);
        } else {
            transport.sendMessage(TopicFactory.monitoring(lm.getStopSystemId()), DisplayDirectMessageFactory.toMonitoringLog(lm), QoS.EXACTLY_ONCE);
        }
    }
} public interface Transport {

    boolean sendMessage(String topic, byte[] data);

    boolean sendMessage(String topic, byte[] data, QoS quality);

    void registerListener(OnMessageReceivedListener listener);

    void stop();

    interface OnMessageReceivedListener {

        boolean onMessageReceived(String topic, byte[] data);
    }

} public class TransportFactory {

    public static Transport instance = null;

    public static synchronized Transport get() {
        if (Configuration.getOutputTransport().equalsIgnoreCase("mqtt")) {
            if (instance == null || !(instance instanceof MqttTransport)) {
                if (instance != null) {
                    instance.stop();
                }
                instance = new MqttTransport();
            }
        } else if (Configuration.getOutputTransport().equalsIgnoreCase("test")) {
            if (instance == null || !(instance instanceof TestTransport)) {
                if (instance != null) {
                    instance.stop();
                }
                instance = new TestTransport();
            }
        } else {
            throw new IllegalArgumentException("Invalid Output Transport specified");
        }
        return instance;
    }
}
import com.google.protobuf.InvalidProtocolBufferException;
import nl.crowndov.displaydirect.common.messages.DisplayDirectMessage;
import nl.crowndov.displaydirect.common.stats.domain.LogCode;
import nl.crowndov.displaydirect.common.transport.mqtt.TopicFactory;
import nl.crowndov.displaydirect.common.transport.mqtt.TopicParser;
import nl.crowndov.displaydirect.distribution.authorization.AuthorizationWhitelist;
import nl.crowndov.displaydirect.distribution.authorization.domain.ValidationToken;
import nl.crowndov.displaydirect.distribution.domain.client.Subscription;
import nl.crowndov.displaydirect.distribution.domain.travelinfo.RealtimeMessage;
import nl.crowndov.displaydirect.distribution.input.QuayDataProvider;
import nl.crowndov.displaydirect.distribution.stats.logging.Log;
import nl.crowndov.displaydirect.distribution.transport.Transport;
import nl.crowndov.displaydirect.distribution.transport.TransportFactory;
import org.fusesource.mqtt.client.QoS;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
package nl.crowndov.displaydirect.distribution.messages;



/**
 * Copyright 2017 CROW-NDOV
 *
 * This file is subject to the terms and conditions defined in file 'LICENSE.txt', which is part of this source code package.
 */
public class SubscriptionHandler {

    private static final Logger LOGGER = LoggerFactory.getLogger(SubscriptionHandler.class);

    private static Transport transport = TransportFactory.get();

    public static final Transport.OnMessageReceivedListener listener = (topic, data) -> {
        try {
            Optional<String> sender = TopicParser.getId(topic);
            Optional<String> command = TopicParser.getCommand(topic);
            if (!sender.isPresent() || !command.isPresent()) {
                LOGGER.error("Couldn't find sender or command for topic '{}'", topic);
                return true;
            }

            if (command.get().equalsIgnoreCase("subscribe")) {
                return handleSubscribe(data, sender.get());
            } else if (command.get().equalsIgnoreCase("unsubscribe")) {
                return handleUnsubscribe(data, sender.get());
            }
        } catch (InvalidProtocolBufferException e) {
            LOGGER.error("Failed to parse message", e);
            return true; // Can't do much about this
        }
        return false;
    };

    private static boolean handleSubscribe(byte[] data, String sender) throws InvalidProtocolBufferException {
        DisplayDirectMessage.Subscribe subscribe = DisplayDirectMessage.Subscribe.parser().parseFrom(data);
        Subscription sub = SubscriptionParser.toSubscription(sender, subscribe);

        if (!sub.isValid()) {
            Log.send(LogCode.SUBSCRIPTION_INVALID, sender, "Authorization needed for this subscription/device, no valid email");
            LOGGER.info("Got invalid subscription request from {}", sender);
            sendStatus(sub.getId(), false, DisplayDirectMessage.SubscriptionResponse.Status.REQUEST_INVALID);
            return true; // Can't do much about this;
        }

        if (!sub.hasValidStop()) {
            Log.send(LogCode.SUBSCRIPTION_INVALID, sender, "Stop code not valid");
            LOGGER.info("Got invalid subscription request from {}, invalid stop {}", sender,
                    sub.getSubscribedQuayCodes().stream().collect(Collectors.joining(",")));
            sendStatus(sub.getId(), false, DisplayDirectMessage.SubscriptionResponse.Status.STOP_INVALID);
            return true; // Can't do much about this;
        }

        if (AuthorizationWhitelist.isValid(sub)) {
            LOGGER.debug("Got subscribe for {} from {}", sub.getSubscribedQuayCodes().stream().collect(Collectors.joining(", ")), sender);

            // If already subscribed, remove system before sending planning and adding it.
            if (SubscriptionStore.isSystemSubscribed(sub.getId())) {
                SubscriptionStore.remove(sub.getId());
            }

            // Get the planning we need
            List<RealtimeMessage> times = QuayDataProvider.getDataForQuay(sub.getSubscribedQuayCodes(), true);