/**
 * @fileoverview
 * @enhanceable
 * @suppress {messageConventions} JS Compiler reports an error if a variable or
 *     field starts with 'MSG_' and isn't a translatable message.
 * @public
 */
// GENERATED CODE -- DO NOT EDIT!

var jspb = require('google-protobuf');
var goog = jspb;
var global = Function('return this')();

goog.exportSymbol('proto.transit_realtime.Alert', null, global);
goog.exportSymbol('proto.transit_realtime.Alert.Cause', null, global);
goog.exportSymbol('proto.transit_realtime.Alert.Effect', null, global);
goog.exportSymbol('proto.transit_realtime.Alert.SeverityLevel', null, global);
goog.exportSymbol('proto.transit_realtime.EntitySelector', null, global);
goog.exportSymbol('proto.transit_realtime.FeedEntity', null, global);
goog.exportSymbol('proto.transit_realtime.FeedHeader', null, global);
goog.exportSymbol('proto.transit_realtime.FeedHeader.Incrementality', null, global);
goog.exportSymbol('proto.transit_realtime.FeedMessage', null, global);
goog.exportSymbol('proto.transit_realtime.Position', null, global);
goog.exportSymbol('proto.transit_realtime.Shape', null, global);
goog.exportSymbol('proto.transit_realtime.TimeRange', null, global);
goog.exportSymbol('proto.transit_realtime.TranslatedString', null, global);
goog.exportSymbol('proto.transit_realtime.TranslatedString.Translation', null, global);
goog.exportSymbol('proto.transit_realtime.TripDescriptor', null, global);
goog.exportSymbol('proto.transit_realtime.TripDescriptor.ScheduleRelationship', null, global);
goog.exportSymbol('proto.transit_realtime.TripUpdate', null, global);
goog.exportSymbol('proto.transit_realtime.TripUpdate.StopTimeEvent', null, global);
goog.exportSymbol('proto.transit_realtime.TripUpdate.StopTimeUpdate', null, global);
goog.exportSymbol('proto.transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship', null, global);
goog.exportSymbol('proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties', null, global);
goog.exportSymbol('proto.transit_realtime.TripUpdate.TripProperties', null, global);
goog.exportSymbol('proto.transit_realtime.VehicleDescriptor', null, global);
goog.exportSymbol('proto.transit_realtime.VehiclePosition', null, global);
goog.exportSymbol('proto.transit_realtime.VehiclePosition.CarriageDetails', null, global);
goog.exportSymbol('proto.transit_realtime.VehiclePosition.CongestionLevel', null, global);
goog.exportSymbol('proto.transit_realtime.VehiclePosition.OccupancyStatus', null, global);
goog.exportSymbol('proto.transit_realtime.VehiclePosition.VehicleStopStatus', null, global);

/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.transit_realtime.FeedMessage = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, 3, proto.transit_realtime.FeedMessage.repeatedFields_, null);
};
goog.inherits(proto.transit_realtime.FeedMessage, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.transit_realtime.FeedMessage.displayName = 'proto.transit_realtime.FeedMessage';
}
/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.transit_realtime.FeedMessage.repeatedFields_ = [2];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.transit_realtime.FeedMessage.prototype.toObject = function(opt_includeInstance) {
  return proto.transit_realtime.FeedMessage.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.transit_realtime.FeedMessage} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.FeedMessage.toObject = function(includeInstance, msg) {
  var f, obj = {
    header: (f = msg.getHeader()) && proto.transit_realtime.FeedHeader.toObject(includeInstance, f),
    entityList: jspb.Message.toObjectList(msg.getEntityList(),
    proto.transit_realtime.FeedEntity.toObject, includeInstance)
  };

  jspb.Message.toObjectExtension(/** @type {!jspb.Message} */ (msg), obj,
      proto.transit_realtime.FeedMessage.extensions, proto.transit_realtime.FeedMessage.prototype.getExtension,
      includeInstance);
  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.transit_realtime.FeedMessage}
 */
proto.transit_realtime.FeedMessage.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.transit_realtime.FeedMessage;
  return proto.transit_realtime.FeedMessage.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.transit_realtime.FeedMessage} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.transit_realtime.FeedMessage}
 */
proto.transit_realtime.FeedMessage.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.transit_realtime.FeedHeader;
      reader.readMessage(value,proto.transit_realtime.FeedHeader.deserializeBinaryFromReader);
      msg.setHeader(value);
      break;
    case 2:
      var value = new proto.transit_realtime.FeedEntity;
      reader.readMessage(value,proto.transit_realtime.FeedEntity.deserializeBinaryFromReader);
      msg.addEntity(value);
      break;
    default:
      jspb.Message.readBinaryExtension(msg, reader, proto.transit_realtime.FeedMessage.extensionsBinary,
        proto.transit_realtime.FeedMessage.prototype.getExtension,
        proto.transit_realtime.FeedMessage.prototype.setExtension);
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.transit_realtime.FeedMessage.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.transit_realtime.FeedMessage.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.transit_realtime.FeedMessage} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.FeedMessage.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getHeader();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.transit_realtime.FeedHeader.serializeBinaryToWriter
    );
  }
  f = message.getEntityList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.transit_realtime.FeedEntity.serializeBinaryToWriter
    );
  }
  jspb.Message.serializeBinaryExtensions(message, writer,
    proto.transit_realtime.FeedMessage.extensionsBinary, proto.transit_realtime.FeedMessage.prototype.getExtension);
};


/**
 * required FeedHeader header = 1;
 * @return {!proto.transit_realtime.FeedHeader}
 */
proto.transit_realtime.FeedMessage.prototype.getHeader = function() {
  return /** @type{!proto.transit_realtime.FeedHeader} */ (
    jspb.Message.getWrapperField(this, proto.transit_realtime.FeedHeader, 1, 1));
};


/** @param {!proto.transit_realtime.FeedHeader} value */
proto.transit_realtime.FeedMessage.prototype.setHeader = function(value) {
  jspb.Message.setWrapperField(this, 1, value);
};


proto.transit_realtime.FeedMessage.prototype.clearHeader = function() {
  jspb.Message.setField(this, 1, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.FeedMessage.prototype.hasHeader = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * repeated FeedEntity entity = 2;
 * @return {!Array<!proto.transit_realtime.FeedEntity>}
 */
proto.transit_realtime.FeedMessage.prototype.getEntityList = function() {
  return /** @type{!Array<!proto.transit_realtime.FeedEntity>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.transit_realtime.FeedEntity, 2));
};


/** @param {!Array<!proto.transit_realtime.FeedEntity>} value */
proto.transit_realtime.FeedMessage.prototype.setEntityList = function(value) {
  jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.transit_realtime.FeedEntity=} opt_value
 * @param {number=} opt_index
 * @return {!proto.transit_realtime.FeedEntity}
 */
proto.transit_realtime.FeedMessage.prototype.addEntity = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.transit_realtime.FeedEntity, opt_index);
};


proto.transit_realtime.FeedMessage.prototype.clearEntityList = function() {
  this.setEntityList([]);
};



/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldInfo>}
 */
proto.transit_realtime.FeedMessage.extensions = {};


/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldBinaryInfo>}
 */
proto.transit_realtime.FeedMessage.extensionsBinary = {};


/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.transit_realtime.FeedHeader = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, 4, null, null);
};
goog.inherits(proto.transit_realtime.FeedHeader, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.transit_realtime.FeedHeader.displayName = 'proto.transit_realtime.FeedHeader';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.transit_realtime.FeedHeader.prototype.toObject = function(opt_includeInstance) {
  return proto.transit_realtime.FeedHeader.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.transit_realtime.FeedHeader} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.FeedHeader.toObject = function(includeInstance, msg) {
  var f, obj = {
    gtfsRealtimeVersion: jspb.Message.getField(msg, 1),
    incrementality: jspb.Message.getFieldWithDefault(msg, 2, 0),
    timestamp: jspb.Message.getField(msg, 3)
  };

  jspb.Message.toObjectExtension(/** @type {!jspb.Message} */ (msg), obj,
      proto.transit_realtime.FeedHeader.extensions, proto.transit_realtime.FeedHeader.prototype.getExtension,
      includeInstance);
  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.transit_realtime.FeedHeader}
 */
proto.transit_realtime.FeedHeader.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.transit_realtime.FeedHeader;
  return proto.transit_realtime.FeedHeader.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.transit_realtime.FeedHeader} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.transit_realtime.FeedHeader}
 */
proto.transit_realtime.FeedHeader.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setGtfsRealtimeVersion(value);
      break;
    case 2:
      var value = /** @type {!proto.transit_realtime.FeedHeader.Incrementality} */ (reader.readEnum());
      msg.setIncrementality(value);
      break;
    case 3:
      var value = /** @type {number} */ (reader.readUint64());
      msg.setTimestamp(value);
      break;
    default:
      jspb.Message.readBinaryExtension(msg, reader, proto.transit_realtime.FeedHeader.extensionsBinary,
        proto.transit_realtime.FeedHeader.prototype.getExtension,
        proto.transit_realtime.FeedHeader.prototype.setExtension);
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.transit_realtime.FeedHeader.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.transit_realtime.FeedHeader.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.transit_realtime.FeedHeader} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.FeedHeader.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = /** @type {string} */ (jspb.Message.getField(message, 1));
  if (f != null) {
    writer.writeString(
      1,
      f
    );
  }
  f = /** @type {!proto.transit_realtime.FeedHeader.Incrementality} */ (jspb.Message.getField(message, 2));
  if (f != null) {
    writer.writeEnum(
      2,
      f
    );
  }
  f = /** @type {number} */ (jspb.Message.getField(message, 3));
  if (f != null) {
    writer.writeUint64(
      3,
      f
    );
  }
  jspb.Message.serializeBinaryExtensions(message, writer,
    proto.transit_realtime.FeedHeader.extensionsBinary, proto.transit_realtime.FeedHeader.prototype.getExtension);
};


/**
 * @enum {number}
 */
proto.transit_realtime.FeedHeader.Incrementality = {
  FULL_DATASET: 0,
  DIFFERENTIAL: 1
};

/**
 * required string gtfs_realtime_version = 1;
 * @return {string}
 */
proto.transit_realtime.FeedHeader.prototype.getGtfsRealtimeVersion = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.transit_realtime.FeedHeader.prototype.setGtfsRealtimeVersion = function(value) {
  jspb.Message.setField(this, 1, value);
};


proto.transit_realtime.FeedHeader.prototype.clearGtfsRealtimeVersion = function() {
  jspb.Message.setField(this, 1, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.FeedHeader.prototype.hasGtfsRealtimeVersion = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional Incrementality incrementality = 2;
 * @return {!proto.transit_realtime.FeedHeader.Incrementality}
 */
proto.transit_realtime.FeedHeader.prototype.getIncrementality = function() {
  return /** @type {!proto.transit_realtime.FeedHeader.Incrementality} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
};


/** @param {!proto.transit_realtime.FeedHeader.Incrementality} value */
proto.transit_realtime.FeedHeader.prototype.setIncrementality = function(value) {
  jspb.Message.setField(this, 2, value);
};


proto.transit_realtime.FeedHeader.prototype.clearIncrementality = function() {
  jspb.Message.setField(this, 2, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.FeedHeader.prototype.hasIncrementality = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional uint64 timestamp = 3;
 * @return {number}
 */
proto.transit_realtime.FeedHeader.prototype.getTimestamp = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
};


/** @param {number} value */
proto.transit_realtime.FeedHeader.prototype.setTimestamp = function(value) {
  jspb.Message.setField(this, 3, value);
};


proto.transit_realtime.FeedHeader.prototype.clearTimestamp = function() {
  jspb.Message.setField(this, 3, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.FeedHeader.prototype.hasTimestamp = function() {
  return jspb.Message.getField(this, 3) != null;
};



/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldInfo>}
 */
proto.transit_realtime.FeedHeader.extensions = {};


/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldBinaryInfo>}
 */
proto.transit_realtime.FeedHeader.extensionsBinary = {};


/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.transit_realtime.FeedEntity = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, 7, null, null);
};
goog.inherits(proto.transit_realtime.FeedEntity, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.transit_realtime.FeedEntity.displayName = 'proto.transit_realtime.FeedEntity';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.transit_realtime.FeedEntity.prototype.toObject = function(opt_includeInstance) {
  return proto.transit_realtime.FeedEntity.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.transit_realtime.FeedEntity} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.FeedEntity.toObject = function(includeInstance, msg) {
  var f, obj = {
    id: jspb.Message.getField(msg, 1),
    isDeleted: jspb.Message.getFieldWithDefault(msg, 2, false),
    tripUpdate: (f = msg.getTripUpdate()) && proto.transit_realtime.TripUpdate.toObject(includeInstance, f),
    vehicle: (f = msg.getVehicle()) && proto.transit_realtime.VehiclePosition.toObject(includeInstance, f),
    alert: (f = msg.getAlert()) && proto.transit_realtime.Alert.toObject(includeInstance, f),
    shape: (f = msg.getShape()) && proto.transit_realtime.Shape.toObject(includeInstance, f)
  };

  jspb.Message.toObjectExtension(/** @type {!jspb.Message} */ (msg), obj,
      proto.transit_realtime.FeedEntity.extensions, proto.transit_realtime.FeedEntity.prototype.getExtension,
      includeInstance);
  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.transit_realtime.FeedEntity}
 */
proto.transit_realtime.FeedEntity.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.transit_realtime.FeedEntity;
  return proto.transit_realtime.FeedEntity.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.transit_realtime.FeedEntity} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.transit_realtime.FeedEntity}
 */
proto.transit_realtime.FeedEntity.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setId(value);
      break;
    case 2:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setIsDeleted(value);
      break;
    case 3:
      var value = new proto.transit_realtime.TripUpdate;
      reader.readMessage(value,proto.transit_realtime.TripUpdate.deserializeBinaryFromReader);
      msg.setTripUpdate(value);
      break;
    case 4:
      var value = new proto.transit_realtime.VehiclePosition;
      reader.readMessage(value,proto.transit_realtime.VehiclePosition.deserializeBinaryFromReader);
      msg.setVehicle(value);
      break;
    case 5:
      var value = new proto.transit_realtime.Alert;
      reader.readMessage(value,proto.transit_realtime.Alert.deserializeBinaryFromReader);
      msg.setAlert(value);
      break;
    case 6:
      var value = new proto.transit_realtime.Shape;
      reader.readMessage(value,proto.transit_realtime.Shape.deserializeBinaryFromReader);
      msg.setShape(value);
      break;
    default:
      jspb.Message.readBinaryExtension(msg, reader, proto.transit_realtime.FeedEntity.extensionsBinary,
        proto.transit_realtime.FeedEntity.prototype.getExtension,
        proto.transit_realtime.FeedEntity.prototype.setExtension);
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.transit_realtime.FeedEntity.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.transit_realtime.FeedEntity.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.transit_realtime.FeedEntity} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.FeedEntity.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = /** @type {string} */ (jspb.Message.getField(message, 1));
  if (f != null) {
    writer.writeString(
      1,
      f
    );
  }
  f = /** @type {boolean} */ (jspb.Message.getField(message, 2));
  if (f != null) {
    writer.writeBool(
      2,
      f
    );
  }
  f = message.getTripUpdate();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.transit_realtime.TripUpdate.serializeBinaryToWriter
    );
  }
  f = message.getVehicle();
  if (f != null) {
    writer.writeMessage(
      4,
      f,
      proto.transit_realtime.VehiclePosition.serializeBinaryToWriter
    );
  }
  f = message.getAlert();
  if (f != null) {
    writer.writeMessage(
      5,
      f,
      proto.transit_realtime.Alert.serializeBinaryToWriter
    );
  }
  f = message.getShape();
  if (f != null) {
    writer.writeMessage(
      6,
      f,
      proto.transit_realtime.Shape.serializeBinaryToWriter
    );
  }
  jspb.Message.serializeBinaryExtensions(message, writer,
    proto.transit_realtime.FeedEntity.extensionsBinary, proto.transit_realtime.FeedEntity.prototype.getExtension);
};


/**
 * required string id = 1;
 * @return {string}
 */
proto.transit_realtime.FeedEntity.prototype.getId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.transit_realtime.FeedEntity.prototype.setId = function(value) {
  jspb.Message.setField(this, 1, value);
};


proto.transit_realtime.FeedEntity.prototype.clearId = function() {
  jspb.Message.setField(this, 1, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.FeedEntity.prototype.hasId = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional bool is_deleted = 2;
 * Note that Boolean fields may be set to 0/1 when serialized from a Java server.
 * You should avoid comparisons like {@code val === true/false} in those cases.
 * @return {boolean}
 */
proto.transit_realtime.FeedEntity.prototype.getIsDeleted = function() {
  return /** @type {boolean} */ (jspb.Message.getFieldWithDefault(this, 2, false));
};


/** @param {boolean} value */
proto.transit_realtime.FeedEntity.prototype.setIsDeleted = function(value) {
  jspb.Message.setField(this, 2, value);
};


proto.transit_realtime.FeedEntity.prototype.clearIsDeleted = function() {
  jspb.Message.setField(this, 2, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.FeedEntity.prototype.hasIsDeleted = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional TripUpdate trip_update = 3;
 * @return {?proto.transit_realtime.TripUpdate}
 */
proto.transit_realtime.FeedEntity.prototype.getTripUpdate = function() {
  return /** @type{?proto.transit_realtime.TripUpdate} */ (
    jspb.Message.getWrapperField(this, proto.transit_realtime.TripUpdate, 3));
};


/** @param {?proto.transit_realtime.TripUpdate|undefined} value */
proto.transit_realtime.FeedEntity.prototype.setTripUpdate = function(value) {
  jspb.Message.setWrapperField(this, 3, value);
};


proto.transit_realtime.FeedEntity.prototype.clearTripUpdate = function() {
  this.setTripUpdate(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.FeedEntity.prototype.hasTripUpdate = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * optional VehiclePosition vehicle = 4;
 * @return {?proto.transit_realtime.VehiclePosition}
 */
proto.transit_realtime.FeedEntity.prototype.getVehicle = function() {
  return /** @type{?proto.transit_realtime.VehiclePosition} */ (
    jspb.Message.getWrapperField(this, proto.transit_realtime.VehiclePosition, 4));
};


/** @param {?proto.transit_realtime.VehiclePosition|undefined} value */
proto.transit_realtime.FeedEntity.prototype.setVehicle = function(value) {
  jspb.Message.setWrapperField(this, 4, value);
};


proto.transit_realtime.FeedEntity.prototype.clearVehicle = function() {
  this.setVehicle(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.FeedEntity.prototype.hasVehicle = function() {
  return jspb.Message.getField(this, 4) != null;
};


/**
 * optional Alert alert = 5;
 * @return {?proto.transit_realtime.Alert}
 */
proto.transit_realtime.FeedEntity.prototype.getAlert = function() {
  return /** @type{?proto.transit_realtime.Alert} */ (
    jspb.Message.getWrapperField(this, proto.transit_realtime.Alert, 5));
};


/** @param {?proto.transit_realtime.Alert|undefined} value */
proto.transit_realtime.FeedEntity.prototype.setAlert = function(value) {
  jspb.Message.setWrapperField(this, 5, value);
};


proto.transit_realtime.FeedEntity.prototype.clearAlert = function() {
  this.setAlert(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.FeedEntity.prototype.hasAlert = function() {
  return jspb.Message.getField(this, 5) != null;
};


/**
 * optional Shape shape = 6;
 * @return {?proto.transit_realtime.Shape}
 */
proto.transit_realtime.FeedEntity.prototype.getShape = function() {
  return /** @type{?proto.transit_realtime.Shape} */ (
    jspb.Message.getWrapperField(this, proto.transit_realtime.Shape, 6));
};


/** @param {?proto.transit_realtime.Shape|undefined} value */
proto.transit_realtime.FeedEntity.prototype.setShape = function(value) {
  jspb.Message.setWrapperField(this, 6, value);
};


proto.transit_realtime.FeedEntity.prototype.clearShape = function() {
  this.setShape(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.FeedEntity.prototype.hasShape = function() {
  return jspb.Message.getField(this, 6) != null;
};



/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldInfo>}
 */
proto.transit_realtime.FeedEntity.extensions = {};


/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldBinaryInfo>}
 */
proto.transit_realtime.FeedEntity.extensionsBinary = {};


/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.transit_realtime.TripUpdate = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, 7, proto.transit_realtime.TripUpdate.repeatedFields_, null);
};
goog.inherits(proto.transit_realtime.TripUpdate, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.transit_realtime.TripUpdate.displayName = 'proto.transit_realtime.TripUpdate';
}
/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.transit_realtime.TripUpdate.repeatedFields_ = [2];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.transit_realtime.TripUpdate.prototype.toObject = function(opt_includeInstance) {
  return proto.transit_realtime.TripUpdate.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.transit_realtime.TripUpdate} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.TripUpdate.toObject = function(includeInstance, msg) {
  var f, obj = {
    trip: (f = msg.getTrip()) && proto.transit_realtime.TripDescriptor.toObject(includeInstance, f),
    vehicle: (f = msg.getVehicle()) && proto.transit_realtime.VehicleDescriptor.toObject(includeInstance, f),
    stopTimeUpdateList: jspb.Message.toObjectList(msg.getStopTimeUpdateList(),
    proto.transit_realtime.TripUpdate.StopTimeUpdate.toObject, includeInstance),
    timestamp: jspb.Message.getField(msg, 4),
    delay: jspb.Message.getField(msg, 5),
    tripProperties: (f = msg.getTripProperties()) && proto.transit_realtime.TripUpdate.TripProperties.toObject(includeInstance, f)
  };

  jspb.Message.toObjectExtension(/** @type {!jspb.Message} */ (msg), obj,
      proto.transit_realtime.TripUpdate.extensions, proto.transit_realtime.TripUpdate.prototype.getExtension,
      includeInstance);
  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.transit_realtime.TripUpdate}
 */
proto.transit_realtime.TripUpdate.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.transit_realtime.TripUpdate;
  return proto.transit_realtime.TripUpdate.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.transit_realtime.TripUpdate} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.transit_realtime.TripUpdate}
 */
proto.transit_realtime.TripUpdate.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.transit_realtime.TripDescriptor;
      reader.readMessage(value,proto.transit_realtime.TripDescriptor.deserializeBinaryFromReader);
      msg.setTrip(value);
      break;
    case 3:
      var value = new proto.transit_realtime.VehicleDescriptor;
      reader.readMessage(value,proto.transit_realtime.VehicleDescriptor.deserializeBinaryFromReader);
      msg.setVehicle(value);
      break;
    case 2:
      var value = new proto.transit_realtime.TripUpdate.StopTimeUpdate;
      reader.readMessage(value,proto.transit_realtime.TripUpdate.StopTimeUpdate.deserializeBinaryFromReader);
      msg.addStopTimeUpdate(value);
      break;
    case 4:
      var value = /** @type {number} */ (reader.readUint64());
      msg.setTimestamp(value);
      break;
    case 5:
      var value = /** @type {number} */ (reader.readInt32());
      msg.setDelay(value);
      break;
    case 6:
      var value = new proto.transit_realtime.TripUpdate.TripProperties;
      reader.readMessage(value,proto.transit_realtime.TripUpdate.TripProperties.deserializeBinaryFromReader);
      msg.setTripProperties(value);
      break;
    default:
      jspb.Message.readBinaryExtension(msg, reader, proto.transit_realtime.TripUpdate.extensionsBinary,
        proto.transit_realtime.TripUpdate.prototype.getExtension,
        proto.transit_realtime.TripUpdate.prototype.setExtension);
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.transit_realtime.TripUpdate.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.transit_realtime.TripUpdate.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.transit_realtime.TripUpdate} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.TripUpdate.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getTrip();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.transit_realtime.TripDescriptor.serializeBinaryToWriter
    );
  }
  f = message.getVehicle();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.transit_realtime.VehicleDescriptor.serializeBinaryToWriter
    );
  }
  f = message.getStopTimeUpdateList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      2,
      f,
      proto.transit_realtime.TripUpdate.StopTimeUpdate.serializeBinaryToWriter
    );
  }
  f = /** @type {number} */ (jspb.Message.getField(message, 4));
  if (f != null) {
    writer.writeUint64(
      4,
      f
    );
  }
  f = /** @type {number} */ (jspb.Message.getField(message, 5));
  if (f != null) {
    writer.writeInt32(
      5,
      f
    );
  }
  f = message.getTripProperties();
  if (f != null) {
    writer.writeMessage(
      6,
      f,
      proto.transit_realtime.TripUpdate.TripProperties.serializeBinaryToWriter
    );
  }
  jspb.Message.serializeBinaryExtensions(message, writer,
    proto.transit_realtime.TripUpdate.extensionsBinary, proto.transit_realtime.TripUpdate.prototype.getExtension);
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.transit_realtime.TripUpdate.StopTimeEvent = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, 4, null, null);
};
goog.inherits(proto.transit_realtime.TripUpdate.StopTimeEvent, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.transit_realtime.TripUpdate.StopTimeEvent.displayName = 'proto.transit_realtime.TripUpdate.StopTimeEvent';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.transit_realtime.TripUpdate.StopTimeEvent.prototype.toObject = function(opt_includeInstance) {
  return proto.transit_realtime.TripUpdate.StopTimeEvent.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.transit_realtime.TripUpdate.StopTimeEvent} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.TripUpdate.StopTimeEvent.toObject = function(includeInstance, msg) {
  var f, obj = {
    delay: jspb.Message.getField(msg, 1),
    time: jspb.Message.getField(msg, 2),
    uncertainty: jspb.Message.getField(msg, 3)
  };

  jspb.Message.toObjectExtension(/** @type {!jspb.Message} */ (msg), obj,
      proto.transit_realtime.TripUpdate.StopTimeEvent.extensions, proto.transit_realtime.TripUpdate.StopTimeEvent.prototype.getExtension,
      includeInstance);
  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.transit_realtime.TripUpdate.StopTimeEvent}
 */
proto.transit_realtime.TripUpdate.StopTimeEvent.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.transit_realtime.TripUpdate.StopTimeEvent;
  return proto.transit_realtime.TripUpdate.StopTimeEvent.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.transit_realtime.TripUpdate.StopTimeEvent} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.transit_realtime.TripUpdate.StopTimeEvent}
 */
proto.transit_realtime.TripUpdate.StopTimeEvent.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {number} */ (reader.readInt32());
      msg.setDelay(value);
      break;
    case 2:
      var value = /** @type {number} */ (reader.readInt64());
      msg.setTime(value);
      break;
    case 3:
      var value = /** @type {number} */ (reader.readInt32());
      msg.setUncertainty(value);
      break;
    default:
      jspb.Message.readBinaryExtension(msg, reader, proto.transit_realtime.TripUpdate.StopTimeEvent.extensionsBinary,
        proto.transit_realtime.TripUpdate.StopTimeEvent.prototype.getExtension,
        proto.transit_realtime.TripUpdate.StopTimeEvent.prototype.setExtension);
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.transit_realtime.TripUpdate.StopTimeEvent.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.transit_realtime.TripUpdate.StopTimeEvent.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.transit_realtime.TripUpdate.StopTimeEvent} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.TripUpdate.StopTimeEvent.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = /** @type {number} */ (jspb.Message.getField(message, 1));
  if (f != null) {
    writer.writeInt32(
      1,
      f
    );
  }
  f = /** @type {number} */ (jspb.Message.getField(message, 2));
  if (f != null) {
    writer.writeInt64(
      2,
      f
    );
  }
  f = /** @type {number} */ (jspb.Message.getField(message, 3));
  if (f != null) {
    writer.writeInt32(
      3,
      f
    );
  }
  jspb.Message.serializeBinaryExtensions(message, writer,
    proto.transit_realtime.TripUpdate.StopTimeEvent.extensionsBinary, proto.transit_realtime.TripUpdate.StopTimeEvent.prototype.getExtension);
};


/**
 * optional int32 delay = 1;
 * @return {number}
 */
proto.transit_realtime.TripUpdate.StopTimeEvent.prototype.getDelay = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
};


/** @param {number} value */
proto.transit_realtime.TripUpdate.StopTimeEvent.prototype.setDelay = function(value) {
  jspb.Message.setField(this, 1, value);
};


proto.transit_realtime.TripUpdate.StopTimeEvent.prototype.clearDelay = function() {
  jspb.Message.setField(this, 1, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripUpdate.StopTimeEvent.prototype.hasDelay = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional int64 time = 2;
 * @return {number}
 */
proto.transit_realtime.TripUpdate.StopTimeEvent.prototype.getTime = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
};


/** @param {number} value */
proto.transit_realtime.TripUpdate.StopTimeEvent.prototype.setTime = function(value) {
  jspb.Message.setField(this, 2, value);
};


proto.transit_realtime.TripUpdate.StopTimeEvent.prototype.clearTime = function() {
  jspb.Message.setField(this, 2, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripUpdate.StopTimeEvent.prototype.hasTime = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional int32 uncertainty = 3;
 * @return {number}
 */
proto.transit_realtime.TripUpdate.StopTimeEvent.prototype.getUncertainty = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
};


/** @param {number} value */
proto.transit_realtime.TripUpdate.StopTimeEvent.prototype.setUncertainty = function(value) {
  jspb.Message.setField(this, 3, value);
};


proto.transit_realtime.TripUpdate.StopTimeEvent.prototype.clearUncertainty = function() {
  jspb.Message.setField(this, 3, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripUpdate.StopTimeEvent.prototype.hasUncertainty = function() {
  return jspb.Message.getField(this, 3) != null;
};



/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldInfo>}
 */
proto.transit_realtime.TripUpdate.StopTimeEvent.extensions = {};


/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldBinaryInfo>}
 */
proto.transit_realtime.TripUpdate.StopTimeEvent.extensionsBinary = {};


/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, 8, null, null);
};
goog.inherits(proto.transit_realtime.TripUpdate.StopTimeUpdate, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.transit_realtime.TripUpdate.StopTimeUpdate.displayName = 'proto.transit_realtime.TripUpdate.StopTimeUpdate';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.toObject = function(opt_includeInstance) {
  return proto.transit_realtime.TripUpdate.StopTimeUpdate.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.transit_realtime.TripUpdate.StopTimeUpdate} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.toObject = function(includeInstance, msg) {
  var f, obj = {
    stopSequence: jspb.Message.getField(msg, 1),
    stopId: jspb.Message.getField(msg, 4),
    arrival: (f = msg.getArrival()) && proto.transit_realtime.TripUpdate.StopTimeEvent.toObject(includeInstance, f),
    departure: (f = msg.getDeparture()) && proto.transit_realtime.TripUpdate.StopTimeEvent.toObject(includeInstance, f),
    departureOccupancyStatus: jspb.Message.getField(msg, 7),
    scheduleRelationship: jspb.Message.getFieldWithDefault(msg, 5, 0),
    stopTimeProperties: (f = msg.getStopTimeProperties()) && proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.toObject(includeInstance, f)
  };

  jspb.Message.toObjectExtension(/** @type {!jspb.Message} */ (msg), obj,
      proto.transit_realtime.TripUpdate.StopTimeUpdate.extensions, proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.getExtension,
      includeInstance);
  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.transit_realtime.TripUpdate.StopTimeUpdate}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.transit_realtime.TripUpdate.StopTimeUpdate;
  return proto.transit_realtime.TripUpdate.StopTimeUpdate.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.transit_realtime.TripUpdate.StopTimeUpdate} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.transit_realtime.TripUpdate.StopTimeUpdate}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setStopSequence(value);
      break;
    case 4:
      var value = /** @type {string} */ (reader.readString());
      msg.setStopId(value);
      break;
    case 2:
      var value = new proto.transit_realtime.TripUpdate.StopTimeEvent;
      reader.readMessage(value,proto.transit_realtime.TripUpdate.StopTimeEvent.deserializeBinaryFromReader);
      msg.setArrival(value);
      break;
    case 3:
      var value = new proto.transit_realtime.TripUpdate.StopTimeEvent;
      reader.readMessage(value,proto.transit_realtime.TripUpdate.StopTimeEvent.deserializeBinaryFromReader);
      msg.setDeparture(value);
      break;
    case 7:
      var value = /** @type {!proto.transit_realtime.VehiclePosition.OccupancyStatus} */ (reader.readEnum());
      msg.setDepartureOccupancyStatus(value);
      break;
    case 5:
      var value = /** @type {!proto.transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship} */ (reader.readEnum());
      msg.setScheduleRelationship(value);
      break;
    case 6:
      var value = new proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties;
      reader.readMessage(value,proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.deserializeBinaryFromReader);
      msg.setStopTimeProperties(value);
      break;
    default:
      jspb.Message.readBinaryExtension(msg, reader, proto.transit_realtime.TripUpdate.StopTimeUpdate.extensionsBinary,
        proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.getExtension,
        proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.setExtension);
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.transit_realtime.TripUpdate.StopTimeUpdate.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.transit_realtime.TripUpdate.StopTimeUpdate} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = /** @type {number} */ (jspb.Message.getField(message, 1));
  if (f != null) {
    writer.writeUint32(
      1,
      f
    );
  }
  f = /** @type {string} */ (jspb.Message.getField(message, 4));
  if (f != null) {
    writer.writeString(
      4,
      f
    );
  }
  f = message.getArrival();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.transit_realtime.TripUpdate.StopTimeEvent.serializeBinaryToWriter
    );
  }
  f = message.getDeparture();
  if (f != null) {
    writer.writeMessage(
      3,
      f,
      proto.transit_realtime.TripUpdate.StopTimeEvent.serializeBinaryToWriter
    );
  }
  f = /** @type {!proto.transit_realtime.VehiclePosition.OccupancyStatus} */ (jspb.Message.getField(message, 7));
  if (f != null) {
    writer.writeEnum(
      7,
      f
    );
  }
  f = /** @type {!proto.transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship} */ (jspb.Message.getField(message, 5));
  if (f != null) {
    writer.writeEnum(
      5,
      f
    );
  }
  f = message.getStopTimeProperties();
  if (f != null) {
    writer.writeMessage(
      6,
      f,
      proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.serializeBinaryToWriter
    );
  }
  jspb.Message.serializeBinaryExtensions(message, writer,
    proto.transit_realtime.TripUpdate.StopTimeUpdate.extensionsBinary, proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.getExtension);
};


/**
 * @enum {number}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship = {
  SCHEDULED: 0,
  SKIPPED: 1,
  NO_DATA: 2,
  UNSCHEDULED: 3
};


/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, 2, null, null);
};
goog.inherits(proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.displayName = 'proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.prototype.toObject = function(opt_includeInstance) {
  return proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.toObject = function(includeInstance, msg) {
  var f, obj = {
    assignedStopId: jspb.Message.getField(msg, 1)
  };

  jspb.Message.toObjectExtension(/** @type {!jspb.Message} */ (msg), obj,
      proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.extensions, proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.prototype.getExtension,
      includeInstance);
  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties;
  return proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setAssignedStopId(value);
      break;
    default:
      jspb.Message.readBinaryExtension(msg, reader, proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.extensionsBinary,
        proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.prototype.getExtension,
        proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.prototype.setExtension);
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = /** @type {string} */ (jspb.Message.getField(message, 1));
  if (f != null) {
    writer.writeString(
      1,
      f
    );
  }
  jspb.Message.serializeBinaryExtensions(message, writer,
    proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.extensionsBinary, proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.prototype.getExtension);
};


/**
 * optional string assigned_stop_id = 1;
 * @return {string}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.prototype.getAssignedStopId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.prototype.setAssignedStopId = function(value) {
  jspb.Message.setField(this, 1, value);
};


proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.prototype.clearAssignedStopId = function() {
  jspb.Message.setField(this, 1, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.prototype.hasAssignedStopId = function() {
  return jspb.Message.getField(this, 1) != null;
};



/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldInfo>}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.extensions = {};


/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldBinaryInfo>}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties.extensionsBinary = {};

/**
 * optional uint32 stop_sequence = 1;
 * @return {number}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.getStopSequence = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
};


/** @param {number} value */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.setStopSequence = function(value) {
  jspb.Message.setField(this, 1, value);
};


proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.clearStopSequence = function() {
  jspb.Message.setField(this, 1, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.hasStopSequence = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional string stop_id = 4;
 * @return {string}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.getStopId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
};


/** @param {string} value */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.setStopId = function(value) {
  jspb.Message.setField(this, 4, value);
};


proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.clearStopId = function() {
  jspb.Message.setField(this, 4, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.hasStopId = function() {
  return jspb.Message.getField(this, 4) != null;
};


/**
 * optional StopTimeEvent arrival = 2;
 * @return {?proto.transit_realtime.TripUpdate.StopTimeEvent}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.getArrival = function() {
  return /** @type{?proto.transit_realtime.TripUpdate.StopTimeEvent} */ (
    jspb.Message.getWrapperField(this, proto.transit_realtime.TripUpdate.StopTimeEvent, 2));
};


/** @param {?proto.transit_realtime.TripUpdate.StopTimeEvent|undefined} value */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.setArrival = function(value) {
  jspb.Message.setWrapperField(this, 2, value);
};


proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.clearArrival = function() {
  this.setArrival(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.hasArrival = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional StopTimeEvent departure = 3;
 * @return {?proto.transit_realtime.TripUpdate.StopTimeEvent}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.getDeparture = function() {
  return /** @type{?proto.transit_realtime.TripUpdate.StopTimeEvent} */ (
    jspb.Message.getWrapperField(this, proto.transit_realtime.TripUpdate.StopTimeEvent, 3));
};


/** @param {?proto.transit_realtime.TripUpdate.StopTimeEvent|undefined} value */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.setDeparture = function(value) {
  jspb.Message.setWrapperField(this, 3, value);
};


proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.clearDeparture = function() {
  this.setDeparture(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.hasDeparture = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * optional VehiclePosition.OccupancyStatus departure_occupancy_status = 7;
 * @return {!proto.transit_realtime.VehiclePosition.OccupancyStatus}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.getDepartureOccupancyStatus = function() {
  return /** @type {!proto.transit_realtime.VehiclePosition.OccupancyStatus} */ (jspb.Message.getFieldWithDefault(this, 7, 0));
};


/** @param {!proto.transit_realtime.VehiclePosition.OccupancyStatus} value */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.setDepartureOccupancyStatus = function(value) {
  jspb.Message.setField(this, 7, value);
};


proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.clearDepartureOccupancyStatus = function() {
  jspb.Message.setField(this, 7, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.hasDepartureOccupancyStatus = function() {
  return jspb.Message.getField(this, 7) != null;
};


/**
 * optional ScheduleRelationship schedule_relationship = 5;
 * @return {!proto.transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.getScheduleRelationship = function() {
  return /** @type {!proto.transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship} */ (jspb.Message.getFieldWithDefault(this, 5, 0));
};


/** @param {!proto.transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship} value */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.setScheduleRelationship = function(value) {
  jspb.Message.setField(this, 5, value);
};


proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.clearScheduleRelationship = function() {
  jspb.Message.setField(this, 5, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.hasScheduleRelationship = function() {
  return jspb.Message.getField(this, 5) != null;
};


/**
 * optional StopTimeProperties stop_time_properties = 6;
 * @return {?proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.getStopTimeProperties = function() {
  return /** @type{?proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties} */ (
    jspb.Message.getWrapperField(this, proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties, 6));
};


/** @param {?proto.transit_realtime.TripUpdate.StopTimeUpdate.StopTimeProperties|undefined} value */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.setStopTimeProperties = function(value) {
  jspb.Message.setWrapperField(this, 6, value);
};


proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.clearStopTimeProperties = function() {
  this.setStopTimeProperties(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.prototype.hasStopTimeProperties = function() {
  return jspb.Message.getField(this, 6) != null;
};



/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldInfo>}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.extensions = {};


/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldBinaryInfo>}
 */
proto.transit_realtime.TripUpdate.StopTimeUpdate.extensionsBinary = {};


/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.transit_realtime.TripUpdate.TripProperties = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, 5, null, null);
};
goog.inherits(proto.transit_realtime.TripUpdate.TripProperties, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.transit_realtime.TripUpdate.TripProperties.displayName = 'proto.transit_realtime.TripUpdate.TripProperties';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.transit_realtime.TripUpdate.TripProperties.prototype.toObject = function(opt_includeInstance) {
  return proto.transit_realtime.TripUpdate.TripProperties.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.transit_realtime.TripUpdate.TripProperties} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.TripUpdate.TripProperties.toObject = function(includeInstance, msg) {
  var f, obj = {
    tripId: jspb.Message.getField(msg, 1),
    startDate: jspb.Message.getField(msg, 2),
    startTime: jspb.Message.getField(msg, 3),
    shapeId: jspb.Message.getField(msg, 4)
  };

  jspb.Message.toObjectExtension(/** @type {!jspb.Message} */ (msg), obj,
      proto.transit_realtime.TripUpdate.TripProperties.extensions, proto.transit_realtime.TripUpdate.TripProperties.prototype.getExtension,
      includeInstance);
  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.transit_realtime.TripUpdate.TripProperties}
 */
proto.transit_realtime.TripUpdate.TripProperties.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.transit_realtime.TripUpdate.TripProperties;
  return proto.transit_realtime.TripUpdate.TripProperties.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.transit_realtime.TripUpdate.TripProperties} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.transit_realtime.TripUpdate.TripProperties}
 */
proto.transit_realtime.TripUpdate.TripProperties.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setTripId(value);
      break;
    case 2:
      var value = /** @type {string} */ (reader.readString());
      msg.setStartDate(value);
      break;
    case 3:
      var value = /** @type {string} */ (reader.readString());
      msg.setStartTime(value);
      break;
    case 4:
      var value = /** @type {string} */ (reader.readString());
      msg.setShapeId(value);
      break;
    default:
      jspb.Message.readBinaryExtension(msg, reader, proto.transit_realtime.TripUpdate.TripProperties.extensionsBinary,
        proto.transit_realtime.TripUpdate.TripProperties.prototype.getExtension,
        proto.transit_realtime.TripUpdate.TripProperties.prototype.setExtension);
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.transit_realtime.TripUpdate.TripProperties.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.transit_realtime.TripUpdate.TripProperties.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.transit_realtime.TripUpdate.TripProperties} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.TripUpdate.TripProperties.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = /** @type {string} */ (jspb.Message.getField(message, 1));
  if (f != null) {
    writer.writeString(
      1,
      f
    );
  }
  f = /** @type {string} */ (jspb.Message.getField(message, 2));
  if (f != null) {
    writer.writeString(
      2,
      f
    );
  }
  f = /** @type {string} */ (jspb.Message.getField(message, 3));
  if (f != null) {
    writer.writeString(
      3,
      f
    );
  }
  f = /** @type {string} */ (jspb.Message.getField(message, 4));
  if (f != null) {
    writer.writeString(
      4,
      f
    );
  }
  jspb.Message.serializeBinaryExtensions(message, writer,
    proto.transit_realtime.TripUpdate.TripProperties.extensionsBinary, proto.transit_realtime.TripUpdate.TripProperties.prototype.getExtension);
};


/**
 * optional string trip_id = 1;
 * @return {string}
 */
proto.transit_realtime.TripUpdate.TripProperties.prototype.getTripId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.transit_realtime.TripUpdate.TripProperties.prototype.setTripId = function(value) {
  jspb.Message.setField(this, 1, value);
};


proto.transit_realtime.TripUpdate.TripProperties.prototype.clearTripId = function() {
  jspb.Message.setField(this, 1, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripUpdate.TripProperties.prototype.hasTripId = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional string start_date = 2;
 * @return {string}
 */
proto.transit_realtime.TripUpdate.TripProperties.prototype.getStartDate = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
};


/** @param {string} value */
proto.transit_realtime.TripUpdate.TripProperties.prototype.setStartDate = function(value) {
  jspb.Message.setField(this, 2, value);
};


proto.transit_realtime.TripUpdate.TripProperties.prototype.clearStartDate = function() {
  jspb.Message.setField(this, 2, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripUpdate.TripProperties.prototype.hasStartDate = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional string start_time = 3;
 * @return {string}
 */
proto.transit_realtime.TripUpdate.TripProperties.prototype.getStartTime = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
};


/** @param {string} value */
proto.transit_realtime.TripUpdate.TripProperties.prototype.setStartTime = function(value) {
  jspb.Message.setField(this, 3, value);
};


proto.transit_realtime.TripUpdate.TripProperties.prototype.clearStartTime = function() {
  jspb.Message.setField(this, 3, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripUpdate.TripProperties.prototype.hasStartTime = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * optional string shape_id = 4;
 * @return {string}
 */
proto.transit_realtime.TripUpdate.TripProperties.prototype.getShapeId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, ""));
};


/** @param {string} value */
proto.transit_realtime.TripUpdate.TripProperties.prototype.setShapeId = function(value) {
  jspb.Message.setField(this, 4, value);
};


proto.transit_realtime.TripUpdate.TripProperties.prototype.clearShapeId = function() {
  jspb.Message.setField(this, 4, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripUpdate.TripProperties.prototype.hasShapeId = function() {
  return jspb.Message.getField(this, 4) != null;
};



/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldInfo>}
 */
proto.transit_realtime.TripUpdate.TripProperties.extensions = {};


/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldBinaryInfo>}
 */
proto.transit_realtime.TripUpdate.TripProperties.extensionsBinary = {};

/**
 * required TripDescriptor trip = 1;
 * @return {!proto.transit_realtime.TripDescriptor}
 */
proto.transit_realtime.TripUpdate.prototype.getTrip = function() {
  return /** @type{!proto.transit_realtime.TripDescriptor} */ (
    jspb.Message.getWrapperField(this, proto.transit_realtime.TripDescriptor, 1, 1));
};


/** @param {!proto.transit_realtime.TripDescriptor} value */
proto.transit_realtime.TripUpdate.prototype.setTrip = function(value) {
  jspb.Message.setWrapperField(this, 1, value);
};


proto.transit_realtime.TripUpdate.prototype.clearTrip = function() {
  jspb.Message.setField(this, 1, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripUpdate.prototype.hasTrip = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional VehicleDescriptor vehicle = 3;
 * @return {?proto.transit_realtime.VehicleDescriptor}
 */
proto.transit_realtime.TripUpdate.prototype.getVehicle = function() {
  return /** @type{?proto.transit_realtime.VehicleDescriptor} */ (
    jspb.Message.getWrapperField(this, proto.transit_realtime.VehicleDescriptor, 3));
};


/** @param {?proto.transit_realtime.VehicleDescriptor|undefined} value */
proto.transit_realtime.TripUpdate.prototype.setVehicle = function(value) {
  jspb.Message.setWrapperField(this, 3, value);
};


proto.transit_realtime.TripUpdate.prototype.clearVehicle = function() {
  this.setVehicle(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripUpdate.prototype.hasVehicle = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * repeated StopTimeUpdate stop_time_update = 2;
 * @return {!Array<!proto.transit_realtime.TripUpdate.StopTimeUpdate>}
 */
proto.transit_realtime.TripUpdate.prototype.getStopTimeUpdateList = function() {
  return /** @type{!Array<!proto.transit_realtime.TripUpdate.StopTimeUpdate>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.transit_realtime.TripUpdate.StopTimeUpdate, 2));
};


/** @param {!Array<!proto.transit_realtime.TripUpdate.StopTimeUpdate>} value */
proto.transit_realtime.TripUpdate.prototype.setStopTimeUpdateList = function(value) {
  jspb.Message.setRepeatedWrapperField(this, 2, value);
};


/**
 * @param {!proto.transit_realtime.TripUpdate.StopTimeUpdate=} opt_value
 * @param {number=} opt_index
 * @return {!proto.transit_realtime.TripUpdate.StopTimeUpdate}
 */
proto.transit_realtime.TripUpdate.prototype.addStopTimeUpdate = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.transit_realtime.TripUpdate.StopTimeUpdate, opt_index);
};


proto.transit_realtime.TripUpdate.prototype.clearStopTimeUpdateList = function() {
  this.setStopTimeUpdateList([]);
};


/**
 * optional uint64 timestamp = 4;
 * @return {number}
 */
proto.transit_realtime.TripUpdate.prototype.getTimestamp = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
};


/** @param {number} value */
proto.transit_realtime.TripUpdate.prototype.setTimestamp = function(value) {
  jspb.Message.setField(this, 4, value);
};


proto.transit_realtime.TripUpdate.prototype.clearTimestamp = function() {
  jspb.Message.setField(this, 4, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripUpdate.prototype.hasTimestamp = function() {
  return jspb.Message.getField(this, 4) != null;
};


/**
 * optional int32 delay = 5;
 * @return {number}
 */
proto.transit_realtime.TripUpdate.prototype.getDelay = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));
};


/** @param {number} value */
proto.transit_realtime.TripUpdate.prototype.setDelay = function(value) {
  jspb.Message.setField(this, 5, value);
};


proto.transit_realtime.TripUpdate.prototype.clearDelay = function() {
  jspb.Message.setField(this, 5, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripUpdate.prototype.hasDelay = function() {
  return jspb.Message.getField(this, 5) != null;
};


/**
 * optional TripProperties trip_properties = 6;
 * @return {?proto.transit_realtime.TripUpdate.TripProperties}
 */
proto.transit_realtime.TripUpdate.prototype.getTripProperties = function() {
  return /** @type{?proto.transit_realtime.TripUpdate.TripProperties} */ (
    jspb.Message.getWrapperField(this, proto.transit_realtime.TripUpdate.TripProperties, 6));
};


/** @param {?proto.transit_realtime.TripUpdate.TripProperties|undefined} value */
proto.transit_realtime.TripUpdate.prototype.setTripProperties = function(value) {
  jspb.Message.setWrapperField(this, 6, value);
};


proto.transit_realtime.TripUpdate.prototype.clearTripProperties = function() {
  this.setTripProperties(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripUpdate.prototype.hasTripProperties = function() {
  return jspb.Message.getField(this, 6) != null;
};



/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldInfo>}
 */
proto.transit_realtime.TripUpdate.extensions = {};


/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldBinaryInfo>}
 */
proto.transit_realtime.TripUpdate.extensionsBinary = {};


/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.transit_realtime.VehiclePosition = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, 12, proto.transit_realtime.VehiclePosition.repeatedFields_, null);
};
goog.inherits(proto.transit_realtime.VehiclePosition, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.transit_realtime.VehiclePosition.displayName = 'proto.transit_realtime.VehiclePosition';
}
/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.transit_realtime.VehiclePosition.repeatedFields_ = [11];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.transit_realtime.VehiclePosition.prototype.toObject = function(opt_includeInstance) {
  return proto.transit_realtime.VehiclePosition.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.transit_realtime.VehiclePosition} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.VehiclePosition.toObject = function(includeInstance, msg) {
  var f, obj = {
    trip: (f = msg.getTrip()) && proto.transit_realtime.TripDescriptor.toObject(includeInstance, f),
    vehicle: (f = msg.getVehicle()) && proto.transit_realtime.VehicleDescriptor.toObject(includeInstance, f),
    position: (f = msg.getPosition()) && proto.transit_realtime.Position.toObject(includeInstance, f),
    currentStopSequence: jspb.Message.getField(msg, 3),
    stopId: jspb.Message.getField(msg, 7),
    currentStatus: jspb.Message.getFieldWithDefault(msg, 4, 2),
    timestamp: jspb.Message.getField(msg, 5),
    congestionLevel: jspb.Message.getField(msg, 6),
    occupancyStatus: jspb.Message.getField(msg, 9),
    occupancyPercentage: jspb.Message.getField(msg, 10),
    multiCarriageDetailsList: jspb.Message.toObjectList(msg.getMultiCarriageDetailsList(),
    proto.transit_realtime.VehiclePosition.CarriageDetails.toObject, includeInstance)
  };

  jspb.Message.toObjectExtension(/** @type {!jspb.Message} */ (msg), obj,
      proto.transit_realtime.VehiclePosition.extensions, proto.transit_realtime.VehiclePosition.prototype.getExtension,
      includeInstance);
  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.transit_realtime.VehiclePosition}
 */
proto.transit_realtime.VehiclePosition.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.transit_realtime.VehiclePosition;
  return proto.transit_realtime.VehiclePosition.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.transit_realtime.VehiclePosition} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.transit_realtime.VehiclePosition}
 */
proto.transit_realtime.VehiclePosition.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.transit_realtime.TripDescriptor;
      reader.readMessage(value,proto.transit_realtime.TripDescriptor.deserializeBinaryFromReader);
      msg.setTrip(value);
      break;
    case 8:
      var value = new proto.transit_realtime.VehicleDescriptor;
      reader.readMessage(value,proto.transit_realtime.VehicleDescriptor.deserializeBinaryFromReader);
      msg.setVehicle(value);
      break;
    case 2:
      var value = new proto.transit_realtime.Position;
      reader.readMessage(value,proto.transit_realtime.Position.deserializeBinaryFromReader);
      msg.setPosition(value);
      break;
    case 3:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setCurrentStopSequence(value);
      break;
    case 7:
      var value = /** @type {string} */ (reader.readString());
      msg.setStopId(value);
      break;
    case 4:
      var value = /** @type {!proto.transit_realtime.VehiclePosition.VehicleStopStatus} */ (reader.readEnum());
      msg.setCurrentStatus(value);
      break;
    case 5:
      var value = /** @type {number} */ (reader.readUint64());
      msg.setTimestamp(value);
      break;
    case 6:
      var value = /** @type {!proto.transit_realtime.VehiclePosition.CongestionLevel} */ (reader.readEnum());
      msg.setCongestionLevel(value);
      break;
    case 9:
      var value = /** @type {!proto.transit_realtime.VehiclePosition.OccupancyStatus} */ (reader.readEnum());
      msg.setOccupancyStatus(value);
      break;
    case 10:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setOccupancyPercentage(value);
      break;
    case 11:
      var value = new proto.transit_realtime.VehiclePosition.CarriageDetails;
      reader.readMessage(value,proto.transit_realtime.VehiclePosition.CarriageDetails.deserializeBinaryFromReader);
      msg.addMultiCarriageDetails(value);
      break;
    default:
      jspb.Message.readBinaryExtension(msg, reader, proto.transit_realtime.VehiclePosition.extensionsBinary,
        proto.transit_realtime.VehiclePosition.prototype.getExtension,
        proto.transit_realtime.VehiclePosition.prototype.setExtension);
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.transit_realtime.VehiclePosition.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.transit_realtime.VehiclePosition.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.transit_realtime.VehiclePosition} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.VehiclePosition.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getTrip();
  if (f != null) {
    writer.writeMessage(
      1,
      f,
      proto.transit_realtime.TripDescriptor.serializeBinaryToWriter
    );
  }
  f = message.getVehicle();
  if (f != null) {
    writer.writeMessage(
      8,
      f,
      proto.transit_realtime.VehicleDescriptor.serializeBinaryToWriter
    );
  }
  f = message.getPosition();
  if (f != null) {
    writer.writeMessage(
      2,
      f,
      proto.transit_realtime.Position.serializeBinaryToWriter
    );
  }
  f = /** @type {number} */ (jspb.Message.getField(message, 3));
  if (f != null) {
    writer.writeUint32(
      3,
      f
    );
  }
  f = /** @type {string} */ (jspb.Message.getField(message, 7));
  if (f != null) {
    writer.writeString(
      7,
      f
    );
  }
  f = /** @type {!proto.transit_realtime.VehiclePosition.VehicleStopStatus} */ (jspb.Message.getField(message, 4));
  if (f != null) {
    writer.writeEnum(
      4,
      f
    );
  }
  f = /** @type {number} */ (jspb.Message.getField(message, 5));
  if (f != null) {
    writer.writeUint64(
      5,
      f
    );
  }
  f = /** @type {!proto.transit_realtime.VehiclePosition.CongestionLevel} */ (jspb.Message.getField(message, 6));
  if (f != null) {
    writer.writeEnum(
      6,
      f
    );
  }
  f = /** @type {!proto.transit_realtime.VehiclePosition.OccupancyStatus} */ (jspb.Message.getField(message, 9));
  if (f != null) {
    writer.writeEnum(
      9,
      f
    );
  }
  f = /** @type {number} */ (jspb.Message.getField(message, 10));
  if (f != null) {
    writer.writeUint32(
      10,
      f
    );
  }
  f = message.getMultiCarriageDetailsList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      11,
      f,
      proto.transit_realtime.VehiclePosition.CarriageDetails.serializeBinaryToWriter
    );
  }
  jspb.Message.serializeBinaryExtensions(message, writer,
    proto.transit_realtime.VehiclePosition.extensionsBinary, proto.transit_realtime.VehiclePosition.prototype.getExtension);
};


/**
 * @enum {number}
 */
proto.transit_realtime.VehiclePosition.VehicleStopStatus = {
  INCOMING_AT: 0,
  STOPPED_AT: 1,
  IN_TRANSIT_TO: 2
};

/**
 * @enum {number}
 */
proto.transit_realtime.VehiclePosition.CongestionLevel = {
  UNKNOWN_CONGESTION_LEVEL: 0,
  RUNNING_SMOOTHLY: 1,
  STOP_AND_GO: 2,
  CONGESTION: 3,
  SEVERE_CONGESTION: 4
};

/**
 * @enum {number}
 */
proto.transit_realtime.VehiclePosition.OccupancyStatus = {
  EMPTY: 0,
  MANY_SEATS_AVAILABLE: 1,
  FEW_SEATS_AVAILABLE: 2,
  STANDING_ROOM_ONLY: 3,
  CRUSHED_STANDING_ROOM_ONLY: 4,
  FULL: 5,
  NOT_ACCEPTING_PASSENGERS: 6,
  NO_DATA_AVAILABLE: 7,
  NOT_BOARDABLE: 8
};


/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.transit_realtime.VehiclePosition.CarriageDetails = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, 6, null, null);
};
goog.inherits(proto.transit_realtime.VehiclePosition.CarriageDetails, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.transit_realtime.VehiclePosition.CarriageDetails.displayName = 'proto.transit_realtime.VehiclePosition.CarriageDetails';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.toObject = function(opt_includeInstance) {
  return proto.transit_realtime.VehiclePosition.CarriageDetails.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.transit_realtime.VehiclePosition.CarriageDetails} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.VehiclePosition.CarriageDetails.toObject = function(includeInstance, msg) {
  var f, obj = {
    id: jspb.Message.getField(msg, 1),
    label: jspb.Message.getField(msg, 2),
    occupancyStatus: jspb.Message.getFieldWithDefault(msg, 3, 7),
    occupancyPercentage: jspb.Message.getFieldWithDefault(msg, 4, -1),
    carriageSequence: jspb.Message.getField(msg, 5)
  };

  jspb.Message.toObjectExtension(/** @type {!jspb.Message} */ (msg), obj,
      proto.transit_realtime.VehiclePosition.CarriageDetails.extensions, proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.getExtension,
      includeInstance);
  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.transit_realtime.VehiclePosition.CarriageDetails}
 */
proto.transit_realtime.VehiclePosition.CarriageDetails.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.transit_realtime.VehiclePosition.CarriageDetails;
  return proto.transit_realtime.VehiclePosition.CarriageDetails.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.transit_realtime.VehiclePosition.CarriageDetails} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.transit_realtime.VehiclePosition.CarriageDetails}
 */
proto.transit_realtime.VehiclePosition.CarriageDetails.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setId(value);
      break;
    case 2:
      var value = /** @type {string} */ (reader.readString());
      msg.setLabel(value);
      break;
    case 3:
      var value = /** @type {!proto.transit_realtime.VehiclePosition.OccupancyStatus} */ (reader.readEnum());
      msg.setOccupancyStatus(value);
      break;
    case 4:
      var value = /** @type {number} */ (reader.readInt32());
      msg.setOccupancyPercentage(value);
      break;
    case 5:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setCarriageSequence(value);
      break;
    default:
      jspb.Message.readBinaryExtension(msg, reader, proto.transit_realtime.VehiclePosition.CarriageDetails.extensionsBinary,
        proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.getExtension,
        proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.setExtension);
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.transit_realtime.VehiclePosition.CarriageDetails.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.transit_realtime.VehiclePosition.CarriageDetails} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.VehiclePosition.CarriageDetails.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = /** @type {string} */ (jspb.Message.getField(message, 1));
  if (f != null) {
    writer.writeString(
      1,
      f
    );
  }
  f = /** @type {string} */ (jspb.Message.getField(message, 2));
  if (f != null) {
    writer.writeString(
      2,
      f
    );
  }
  f = /** @type {!proto.transit_realtime.VehiclePosition.OccupancyStatus} */ (jspb.Message.getField(message, 3));
  if (f != null) {
    writer.writeEnum(
      3,
      f
    );
  }
  f = /** @type {number} */ (jspb.Message.getField(message, 4));
  if (f != null) {
    writer.writeInt32(
      4,
      f
    );
  }
  f = /** @type {number} */ (jspb.Message.getField(message, 5));
  if (f != null) {
    writer.writeUint32(
      5,
      f
    );
  }
  jspb.Message.serializeBinaryExtensions(message, writer,
    proto.transit_realtime.VehiclePosition.CarriageDetails.extensionsBinary, proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.getExtension);
};


/**
 * optional string id = 1;
 * @return {string}
 */
proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.getId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.setId = function(value) {
  jspb.Message.setField(this, 1, value);
};


proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.clearId = function() {
  jspb.Message.setField(this, 1, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.hasId = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional string label = 2;
 * @return {string}
 */
proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.getLabel = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
};


/** @param {string} value */
proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.setLabel = function(value) {
  jspb.Message.setField(this, 2, value);
};


proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.clearLabel = function() {
  jspb.Message.setField(this, 2, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.hasLabel = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional OccupancyStatus occupancy_status = 3;
 * @return {!proto.transit_realtime.VehiclePosition.OccupancyStatus}
 */
proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.getOccupancyStatus = function() {
  return /** @type {!proto.transit_realtime.VehiclePosition.OccupancyStatus} */ (jspb.Message.getFieldWithDefault(this, 3, 7));
};


/** @param {!proto.transit_realtime.VehiclePosition.OccupancyStatus} value */
proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.setOccupancyStatus = function(value) {
  jspb.Message.setField(this, 3, value);
};


proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.clearOccupancyStatus = function() {
  jspb.Message.setField(this, 3, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.hasOccupancyStatus = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * optional int32 occupancy_percentage = 4;
 * @return {number}
 */
proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.getOccupancyPercentage = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, -1));
};


/** @param {number} value */
proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.setOccupancyPercentage = function(value) {
  jspb.Message.setField(this, 4, value);
};


proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.clearOccupancyPercentage = function() {
  jspb.Message.setField(this, 4, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.hasOccupancyPercentage = function() {
  return jspb.Message.getField(this, 4) != null;
};


/**
 * optional uint32 carriage_sequence = 5;
 * @return {number}
 */
proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.getCarriageSequence = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));
};


/** @param {number} value */
proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.setCarriageSequence = function(value) {
  jspb.Message.setField(this, 5, value);
};


proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.clearCarriageSequence = function() {
  jspb.Message.setField(this, 5, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.VehiclePosition.CarriageDetails.prototype.hasCarriageSequence = function() {
  return jspb.Message.getField(this, 5) != null;
};



/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldInfo>}
 */
proto.transit_realtime.VehiclePosition.CarriageDetails.extensions = {};


/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldBinaryInfo>}
 */
proto.transit_realtime.VehiclePosition.CarriageDetails.extensionsBinary = {};

/**
 * optional TripDescriptor trip = 1;
 * @return {?proto.transit_realtime.TripDescriptor}
 */
proto.transit_realtime.VehiclePosition.prototype.getTrip = function() {
  return /** @type{?proto.transit_realtime.TripDescriptor} */ (
    jspb.Message.getWrapperField(this, proto.transit_realtime.TripDescriptor, 1));
};


/** @param {?proto.transit_realtime.TripDescriptor|undefined} value */
proto.transit_realtime.VehiclePosition.prototype.setTrip = function(value) {
  jspb.Message.setWrapperField(this, 1, value);
};


proto.transit_realtime.VehiclePosition.prototype.clearTrip = function() {
  this.setTrip(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.VehiclePosition.prototype.hasTrip = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional VehicleDescriptor vehicle = 8;
 * @return {?proto.transit_realtime.VehicleDescriptor}
 */
proto.transit_realtime.VehiclePosition.prototype.getVehicle = function() {
  return /** @type{?proto.transit_realtime.VehicleDescriptor} */ (
    jspb.Message.getWrapperField(this, proto.transit_realtime.VehicleDescriptor, 8));
};


/** @param {?proto.transit_realtime.VehicleDescriptor|undefined} value */
proto.transit_realtime.VehiclePosition.prototype.setVehicle = function(value) {
  jspb.Message.setWrapperField(this, 8, value);
};


proto.transit_realtime.VehiclePosition.prototype.clearVehicle = function() {
  this.setVehicle(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.VehiclePosition.prototype.hasVehicle = function() {
  return jspb.Message.getField(this, 8) != null;
};


/**
 * optional Position position = 2;
 * @return {?proto.transit_realtime.Position}
 */
proto.transit_realtime.VehiclePosition.prototype.getPosition = function() {
  return /** @type{?proto.transit_realtime.Position} */ (
    jspb.Message.getWrapperField(this, proto.transit_realtime.Position, 2));
};


/** @param {?proto.transit_realtime.Position|undefined} value */
proto.transit_realtime.VehiclePosition.prototype.setPosition = function(value) {
  jspb.Message.setWrapperField(this, 2, value);
};


proto.transit_realtime.VehiclePosition.prototype.clearPosition = function() {
  this.setPosition(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.VehiclePosition.prototype.hasPosition = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional uint32 current_stop_sequence = 3;
 * @return {number}
 */
proto.transit_realtime.VehiclePosition.prototype.getCurrentStopSequence = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
};


/** @param {number} value */
proto.transit_realtime.VehiclePosition.prototype.setCurrentStopSequence = function(value) {
  jspb.Message.setField(this, 3, value);
};


proto.transit_realtime.VehiclePosition.prototype.clearCurrentStopSequence = function() {
  jspb.Message.setField(this, 3, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.VehiclePosition.prototype.hasCurrentStopSequence = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * optional string stop_id = 7;
 * @return {string}
 */
proto.transit_realtime.VehiclePosition.prototype.getStopId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, ""));
};


/** @param {string} value */
proto.transit_realtime.VehiclePosition.prototype.setStopId = function(value) {
  jspb.Message.setField(this, 7, value);
};


proto.transit_realtime.VehiclePosition.prototype.clearStopId = function() {
  jspb.Message.setField(this, 7, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.VehiclePosition.prototype.hasStopId = function() {
  return jspb.Message.getField(this, 7) != null;
};


/**
 * optional VehicleStopStatus current_status = 4;
 * @return {!proto.transit_realtime.VehiclePosition.VehicleStopStatus}
 */
proto.transit_realtime.VehiclePosition.prototype.getCurrentStatus = function() {
  return /** @type {!proto.transit_realtime.VehiclePosition.VehicleStopStatus} */ (jspb.Message.getFieldWithDefault(this, 4, 2));
};


/** @param {!proto.transit_realtime.VehiclePosition.VehicleStopStatus} value */
proto.transit_realtime.VehiclePosition.prototype.setCurrentStatus = function(value) {
  jspb.Message.setField(this, 4, value);
};


proto.transit_realtime.VehiclePosition.prototype.clearCurrentStatus = function() {
  jspb.Message.setField(this, 4, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.VehiclePosition.prototype.hasCurrentStatus = function() {
  return jspb.Message.getField(this, 4) != null;
};


/**
 * optional uint64 timestamp = 5;
 * @return {number}
 */
proto.transit_realtime.VehiclePosition.prototype.getTimestamp = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));
};


/** @param {number} value */
proto.transit_realtime.VehiclePosition.prototype.setTimestamp = function(value) {
  jspb.Message.setField(this, 5, value);
};


proto.transit_realtime.VehiclePosition.prototype.clearTimestamp = function() {
  jspb.Message.setField(this, 5, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.VehiclePosition.prototype.hasTimestamp = function() {
  return jspb.Message.getField(this, 5) != null;
};


/**
 * optional CongestionLevel congestion_level = 6;
 * @return {!proto.transit_realtime.VehiclePosition.CongestionLevel}
 */
proto.transit_realtime.VehiclePosition.prototype.getCongestionLevel = function() {
  return /** @type {!proto.transit_realtime.VehiclePosition.CongestionLevel} */ (jspb.Message.getFieldWithDefault(this, 6, 0));
};


/** @param {!proto.transit_realtime.VehiclePosition.CongestionLevel} value */
proto.transit_realtime.VehiclePosition.prototype.setCongestionLevel = function(value) {
  jspb.Message.setField(this, 6, value);
};


proto.transit_realtime.VehiclePosition.prototype.clearCongestionLevel = function() {
  jspb.Message.setField(this, 6, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.VehiclePosition.prototype.hasCongestionLevel = function() {
  return jspb.Message.getField(this, 6) != null;
};


/**
 * optional OccupancyStatus occupancy_status = 9;
 * @return {!proto.transit_realtime.VehiclePosition.OccupancyStatus}
 */
proto.transit_realtime.VehiclePosition.prototype.getOccupancyStatus = function() {
  return /** @type {!proto.transit_realtime.VehiclePosition.OccupancyStatus} */ (jspb.Message.getFieldWithDefault(this, 9, 0));
};


/** @param {!proto.transit_realtime.VehiclePosition.OccupancyStatus} value */
proto.transit_realtime.VehiclePosition.prototype.setOccupancyStatus = function(value) {
  jspb.Message.setField(this, 9, value);
};


proto.transit_realtime.VehiclePosition.prototype.clearOccupancyStatus = function() {
  jspb.Message.setField(this, 9, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.VehiclePosition.prototype.hasOccupancyStatus = function() {
  return jspb.Message.getField(this, 9) != null;
};


/**
 * optional uint32 occupancy_percentage = 10;
 * @return {number}
 */
proto.transit_realtime.VehiclePosition.prototype.getOccupancyPercentage = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 10, 0));
};


/** @param {number} value */
proto.transit_realtime.VehiclePosition.prototype.setOccupancyPercentage = function(value) {
  jspb.Message.setField(this, 10, value);
};


proto.transit_realtime.VehiclePosition.prototype.clearOccupancyPercentage = function() {
  jspb.Message.setField(this, 10, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.VehiclePosition.prototype.hasOccupancyPercentage = function() {
  return jspb.Message.getField(this, 10) != null;
};


/**
 * repeated CarriageDetails multi_carriage_details = 11;
 * @return {!Array<!proto.transit_realtime.VehiclePosition.CarriageDetails>}
 */
proto.transit_realtime.VehiclePosition.prototype.getMultiCarriageDetailsList = function() {
  return /** @type{!Array<!proto.transit_realtime.VehiclePosition.CarriageDetails>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.transit_realtime.VehiclePosition.CarriageDetails, 11));
};


/** @param {!Array<!proto.transit_realtime.VehiclePosition.CarriageDetails>} value */
proto.transit_realtime.VehiclePosition.prototype.setMultiCarriageDetailsList = function(value) {
  jspb.Message.setRepeatedWrapperField(this, 11, value);
};


/**
 * @param {!proto.transit_realtime.VehiclePosition.CarriageDetails=} opt_value
 * @param {number=} opt_index
 * @return {!proto.transit_realtime.VehiclePosition.CarriageDetails}
 */
proto.transit_realtime.VehiclePosition.prototype.addMultiCarriageDetails = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 11, opt_value, proto.transit_realtime.VehiclePosition.CarriageDetails, opt_index);
};


proto.transit_realtime.VehiclePosition.prototype.clearMultiCarriageDetailsList = function() {
  this.setMultiCarriageDetailsList([]);
};



/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldInfo>}
 */
proto.transit_realtime.VehiclePosition.extensions = {};


/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldBinaryInfo>}
 */
proto.transit_realtime.VehiclePosition.extensionsBinary = {};


/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.transit_realtime.Alert = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, 15, proto.transit_realtime.Alert.repeatedFields_, null);
};
goog.inherits(proto.transit_realtime.Alert, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.transit_realtime.Alert.displayName = 'proto.transit_realtime.Alert';
}
/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.transit_realtime.Alert.repeatedFields_ = [1,5];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.transit_realtime.Alert.prototype.toObject = function(opt_includeInstance) {
  return proto.transit_realtime.Alert.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.transit_realtime.Alert} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.Alert.toObject = function(includeInstance, msg) {
  var f, obj = {
    activePeriodList: jspb.Message.toObjectList(msg.getActivePeriodList(),
    proto.transit_realtime.TimeRange.toObject, includeInstance),
    informedEntityList: jspb.Message.toObjectList(msg.getInformedEntityList(),
    proto.transit_realtime.EntitySelector.toObject, includeInstance),
    cause: jspb.Message.getFieldWithDefault(msg, 6, 1),
    effect: jspb.Message.getFieldWithDefault(msg, 7, 8),
    url: (f = msg.getUrl()) && proto.transit_realtime.TranslatedString.toObject(includeInstance, f),
    headerText: (f = msg.getHeaderText()) && proto.transit_realtime.TranslatedString.toObject(includeInstance, f),
    descriptionText: (f = msg.getDescriptionText()) && proto.transit_realtime.TranslatedString.toObject(includeInstance, f),
    ttsHeaderText: (f = msg.getTtsHeaderText()) && proto.transit_realtime.TranslatedString.toObject(includeInstance, f),
    ttsDescriptionText: (f = msg.getTtsDescriptionText()) && proto.transit_realtime.TranslatedString.toObject(includeInstance, f),
    severityLevel: jspb.Message.getFieldWithDefault(msg, 14, 1)
  };

  jspb.Message.toObjectExtension(/** @type {!jspb.Message} */ (msg), obj,
      proto.transit_realtime.Alert.extensions, proto.transit_realtime.Alert.prototype.getExtension,
      includeInstance);
  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.transit_realtime.Alert}
 */
proto.transit_realtime.Alert.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.transit_realtime.Alert;
  return proto.transit_realtime.Alert.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.transit_realtime.Alert} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.transit_realtime.Alert}
 */
proto.transit_realtime.Alert.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.transit_realtime.TimeRange;
      reader.readMessage(value,proto.transit_realtime.TimeRange.deserializeBinaryFromReader);
      msg.addActivePeriod(value);
      break;
    case 5:
      var value = new proto.transit_realtime.EntitySelector;
      reader.readMessage(value,proto.transit_realtime.EntitySelector.deserializeBinaryFromReader);
      msg.addInformedEntity(value);
      break;
    case 6:
      var value = /** @type {!proto.transit_realtime.Alert.Cause} */ (reader.readEnum());
      msg.setCause(value);
      break;
    case 7:
      var value = /** @type {!proto.transit_realtime.Alert.Effect} */ (reader.readEnum());
      msg.setEffect(value);
      break;
    case 8:
      var value = new proto.transit_realtime.TranslatedString;
      reader.readMessage(value,proto.transit_realtime.TranslatedString.deserializeBinaryFromReader);
      msg.setUrl(value);
      break;
    case 10:
      var value = new proto.transit_realtime.TranslatedString;
      reader.readMessage(value,proto.transit_realtime.TranslatedString.deserializeBinaryFromReader);
      msg.setHeaderText(value);
      break;
    case 11:
      var value = new proto.transit_realtime.TranslatedString;
      reader.readMessage(value,proto.transit_realtime.TranslatedString.deserializeBinaryFromReader);
      msg.setDescriptionText(value);
      break;
    case 12:
      var value = new proto.transit_realtime.TranslatedString;
      reader.readMessage(value,proto.transit_realtime.TranslatedString.deserializeBinaryFromReader);
      msg.setTtsHeaderText(value);
      break;
    case 13:
      var value = new proto.transit_realtime.TranslatedString;
      reader.readMessage(value,proto.transit_realtime.TranslatedString.deserializeBinaryFromReader);
      msg.setTtsDescriptionText(value);
      break;
    case 14:
      var value = /** @type {!proto.transit_realtime.Alert.SeverityLevel} */ (reader.readEnum());
      msg.setSeverityLevel(value);
      break;
    default:
      jspb.Message.readBinaryExtension(msg, reader, proto.transit_realtime.Alert.extensionsBinary,
        proto.transit_realtime.Alert.prototype.getExtension,
        proto.transit_realtime.Alert.prototype.setExtension);
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.transit_realtime.Alert.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.transit_realtime.Alert.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.transit_realtime.Alert} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.Alert.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getActivePeriodList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      1,
      f,
      proto.transit_realtime.TimeRange.serializeBinaryToWriter
    );
  }
  f = message.getInformedEntityList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      5,
      f,
      proto.transit_realtime.EntitySelector.serializeBinaryToWriter
    );
  }
  f = /** @type {!proto.transit_realtime.Alert.Cause} */ (jspb.Message.getField(message, 6));
  if (f != null) {
    writer.writeEnum(
      6,
      f
    );
  }
  f = /** @type {!proto.transit_realtime.Alert.Effect} */ (jspb.Message.getField(message, 7));
  if (f != null) {
    writer.writeEnum(
      7,
      f
    );
  }
  f = message.getUrl();
  if (f != null) {
    writer.writeMessage(
      8,
      f,
      proto.transit_realtime.TranslatedString.serializeBinaryToWriter
    );
  }
  f = message.getHeaderText();
  if (f != null) {
    writer.writeMessage(
      10,
      f,
      proto.transit_realtime.TranslatedString.serializeBinaryToWriter
    );
  }
  f = message.getDescriptionText();
  if (f != null) {
    writer.writeMessage(
      11,
      f,
      proto.transit_realtime.TranslatedString.serializeBinaryToWriter
    );
  }
  f = message.getTtsHeaderText();
  if (f != null) {
    writer.writeMessage(
      12,
      f,
      proto.transit_realtime.TranslatedString.serializeBinaryToWriter
    );
  }
  f = message.getTtsDescriptionText();
  if (f != null) {
    writer.writeMessage(
      13,
      f,
      proto.transit_realtime.TranslatedString.serializeBinaryToWriter
    );
  }
  f = /** @type {!proto.transit_realtime.Alert.SeverityLevel} */ (jspb.Message.getField(message, 14));
  if (f != null) {
    writer.writeEnum(
      14,
      f
    );
  }
  jspb.Message.serializeBinaryExtensions(message, writer,
    proto.transit_realtime.Alert.extensionsBinary, proto.transit_realtime.Alert.prototype.getExtension);
};


/**
 * @enum {number}
 */
proto.transit_realtime.Alert.Cause = {
  UNKNOWN_CAUSE: 1,
  OTHER_CAUSE: 2,
  TECHNICAL_PROBLEM: 3,
  STRIKE: 4,
  DEMONSTRATION: 5,
  ACCIDENT: 6,
  HOLIDAY: 7,
  WEATHER: 8,
  MAINTENANCE: 9,
  CONSTRUCTION: 10,
  POLICE_ACTIVITY: 11,
  MEDICAL_EMERGENCY: 12
};

/**
 * @enum {number}
 */
proto.transit_realtime.Alert.Effect = {
  NO_SERVICE: 1,
  REDUCED_SERVICE: 2,
  SIGNIFICANT_DELAYS: 3,
  DETOUR: 4,
  ADDITIONAL_SERVICE: 5,
  MODIFIED_SERVICE: 6,
  OTHER_EFFECT: 7,
  UNKNOWN_EFFECT: 8,
  STOP_MOVED: 9,
  NO_EFFECT: 10,
  ACCESSIBILITY_ISSUE: 11
};

/**
 * @enum {number}
 */
proto.transit_realtime.Alert.SeverityLevel = {
  UNKNOWN_SEVERITY: 1,
  INFO: 2,
  WARNING: 3,
  SEVERE: 4
};

/**
 * repeated TimeRange active_period = 1;
 * @return {!Array<!proto.transit_realtime.TimeRange>}
 */
proto.transit_realtime.Alert.prototype.getActivePeriodList = function() {
  return /** @type{!Array<!proto.transit_realtime.TimeRange>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.transit_realtime.TimeRange, 1));
};


/** @param {!Array<!proto.transit_realtime.TimeRange>} value */
proto.transit_realtime.Alert.prototype.setActivePeriodList = function(value) {
  jspb.Message.setRepeatedWrapperField(this, 1, value);
};


/**
 * @param {!proto.transit_realtime.TimeRange=} opt_value
 * @param {number=} opt_index
 * @return {!proto.transit_realtime.TimeRange}
 */
proto.transit_realtime.Alert.prototype.addActivePeriod = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.transit_realtime.TimeRange, opt_index);
};


proto.transit_realtime.Alert.prototype.clearActivePeriodList = function() {
  this.setActivePeriodList([]);
};


/**
 * repeated EntitySelector informed_entity = 5;
 * @return {!Array<!proto.transit_realtime.EntitySelector>}
 */
proto.transit_realtime.Alert.prototype.getInformedEntityList = function() {
  return /** @type{!Array<!proto.transit_realtime.EntitySelector>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.transit_realtime.EntitySelector, 5));
};


/** @param {!Array<!proto.transit_realtime.EntitySelector>} value */
proto.transit_realtime.Alert.prototype.setInformedEntityList = function(value) {
  jspb.Message.setRepeatedWrapperField(this, 5, value);
};


/**
 * @param {!proto.transit_realtime.EntitySelector=} opt_value
 * @param {number=} opt_index
 * @return {!proto.transit_realtime.EntitySelector}
 */
proto.transit_realtime.Alert.prototype.addInformedEntity = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.transit_realtime.EntitySelector, opt_index);
};


proto.transit_realtime.Alert.prototype.clearInformedEntityList = function() {
  this.setInformedEntityList([]);
};


/**
 * optional Cause cause = 6;
 * @return {!proto.transit_realtime.Alert.Cause}
 */
proto.transit_realtime.Alert.prototype.getCause = function() {
  return /** @type {!proto.transit_realtime.Alert.Cause} */ (jspb.Message.getFieldWithDefault(this, 6, 1));
};


/** @param {!proto.transit_realtime.Alert.Cause} value */
proto.transit_realtime.Alert.prototype.setCause = function(value) {
  jspb.Message.setField(this, 6, value);
};


proto.transit_realtime.Alert.prototype.clearCause = function() {
  jspb.Message.setField(this, 6, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.Alert.prototype.hasCause = function() {
  return jspb.Message.getField(this, 6) != null;
};


/**
 * optional Effect effect = 7;
 * @return {!proto.transit_realtime.Alert.Effect}
 */
proto.transit_realtime.Alert.prototype.getEffect = function() {
  return /** @type {!proto.transit_realtime.Alert.Effect} */ (jspb.Message.getFieldWithDefault(this, 7, 8));
};


/** @param {!proto.transit_realtime.Alert.Effect} value */
proto.transit_realtime.Alert.prototype.setEffect = function(value) {
  jspb.Message.setField(this, 7, value);
};


proto.transit_realtime.Alert.prototype.clearEffect = function() {
  jspb.Message.setField(this, 7, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.Alert.prototype.hasEffect = function() {
  return jspb.Message.getField(this, 7) != null;
};


/**
 * optional TranslatedString url = 8;
 * @return {?proto.transit_realtime.TranslatedString}
 */
proto.transit_realtime.Alert.prototype.getUrl = function() {
  return /** @type{?proto.transit_realtime.TranslatedString} */ (
    jspb.Message.getWrapperField(this, proto.transit_realtime.TranslatedString, 8));
};


/** @param {?proto.transit_realtime.TranslatedString|undefined} value */
proto.transit_realtime.Alert.prototype.setUrl = function(value) {
  jspb.Message.setWrapperField(this, 8, value);
};


proto.transit_realtime.Alert.prototype.clearUrl = function() {
  this.setUrl(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.Alert.prototype.hasUrl = function() {
  return jspb.Message.getField(this, 8) != null;
};


/**
 * optional TranslatedString header_text = 10;
 * @return {?proto.transit_realtime.TranslatedString}
 */
proto.transit_realtime.Alert.prototype.getHeaderText = function() {
  return /** @type{?proto.transit_realtime.TranslatedString} */ (
    jspb.Message.getWrapperField(this, proto.transit_realtime.TranslatedString, 10));
};


/** @param {?proto.transit_realtime.TranslatedString|undefined} value */
proto.transit_realtime.Alert.prototype.setHeaderText = function(value) {
  jspb.Message.setWrapperField(this, 10, value);
};


proto.transit_realtime.Alert.prototype.clearHeaderText = function() {
  this.setHeaderText(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.Alert.prototype.hasHeaderText = function() {
  return jspb.Message.getField(this, 10) != null;
};


/**
 * optional TranslatedString description_text = 11;
 * @return {?proto.transit_realtime.TranslatedString}
 */
proto.transit_realtime.Alert.prototype.getDescriptionText = function() {
  return /** @type{?proto.transit_realtime.TranslatedString} */ (
    jspb.Message.getWrapperField(this, proto.transit_realtime.TranslatedString, 11));
};


/** @param {?proto.transit_realtime.TranslatedString|undefined} value */
proto.transit_realtime.Alert.prototype.setDescriptionText = function(value) {
  jspb.Message.setWrapperField(this, 11, value);
};


proto.transit_realtime.Alert.prototype.clearDescriptionText = function() {
  this.setDescriptionText(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.Alert.prototype.hasDescriptionText = function() {
  return jspb.Message.getField(this, 11) != null;
};


/**
 * optional TranslatedString tts_header_text = 12;
 * @return {?proto.transit_realtime.TranslatedString}
 */
proto.transit_realtime.Alert.prototype.getTtsHeaderText = function() {
  return /** @type{?proto.transit_realtime.TranslatedString} */ (
    jspb.Message.getWrapperField(this, proto.transit_realtime.TranslatedString, 12));
};


/** @param {?proto.transit_realtime.TranslatedString|undefined} value */
proto.transit_realtime.Alert.prototype.setTtsHeaderText = function(value) {
  jspb.Message.setWrapperField(this, 12, value);
};


proto.transit_realtime.Alert.prototype.clearTtsHeaderText = function() {
  this.setTtsHeaderText(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.Alert.prototype.hasTtsHeaderText = function() {
  return jspb.Message.getField(this, 12) != null;
};


/**
 * optional TranslatedString tts_description_text = 13;
 * @return {?proto.transit_realtime.TranslatedString}
 */
proto.transit_realtime.Alert.prototype.getTtsDescriptionText = function() {
  return /** @type{?proto.transit_realtime.TranslatedString} */ (
    jspb.Message.getWrapperField(this, proto.transit_realtime.TranslatedString, 13));
};


/** @param {?proto.transit_realtime.TranslatedString|undefined} value */
proto.transit_realtime.Alert.prototype.setTtsDescriptionText = function(value) {
  jspb.Message.setWrapperField(this, 13, value);
};


proto.transit_realtime.Alert.prototype.clearTtsDescriptionText = function() {
  this.setTtsDescriptionText(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.Alert.prototype.hasTtsDescriptionText = function() {
  return jspb.Message.getField(this, 13) != null;
};


/**
 * optional SeverityLevel severity_level = 14;
 * @return {!proto.transit_realtime.Alert.SeverityLevel}
 */
proto.transit_realtime.Alert.prototype.getSeverityLevel = function() {
  return /** @type {!proto.transit_realtime.Alert.SeverityLevel} */ (jspb.Message.getFieldWithDefault(this, 14, 1));
};


/** @param {!proto.transit_realtime.Alert.SeverityLevel} value */
proto.transit_realtime.Alert.prototype.setSeverityLevel = function(value) {
  jspb.Message.setField(this, 14, value);
};


proto.transit_realtime.Alert.prototype.clearSeverityLevel = function() {
  jspb.Message.setField(this, 14, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.Alert.prototype.hasSeverityLevel = function() {
  return jspb.Message.getField(this, 14) != null;
};



/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldInfo>}
 */
proto.transit_realtime.Alert.extensions = {};


/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldBinaryInfo>}
 */
proto.transit_realtime.Alert.extensionsBinary = {};


/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.transit_realtime.TimeRange = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, 3, null, null);
};
goog.inherits(proto.transit_realtime.TimeRange, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.transit_realtime.TimeRange.displayName = 'proto.transit_realtime.TimeRange';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.transit_realtime.TimeRange.prototype.toObject = function(opt_includeInstance) {
  return proto.transit_realtime.TimeRange.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.transit_realtime.TimeRange} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.TimeRange.toObject = function(includeInstance, msg) {
  var f, obj = {
    start: jspb.Message.getField(msg, 1),
    end: jspb.Message.getField(msg, 2)
  };

  jspb.Message.toObjectExtension(/** @type {!jspb.Message} */ (msg), obj,
      proto.transit_realtime.TimeRange.extensions, proto.transit_realtime.TimeRange.prototype.getExtension,
      includeInstance);
  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.transit_realtime.TimeRange}
 */
proto.transit_realtime.TimeRange.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.transit_realtime.TimeRange;
  return proto.transit_realtime.TimeRange.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.transit_realtime.TimeRange} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.transit_realtime.TimeRange}
 */
proto.transit_realtime.TimeRange.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {number} */ (reader.readUint64());
      msg.setStart(value);
      break;
    case 2:
      var value = /** @type {number} */ (reader.readUint64());
      msg.setEnd(value);
      break;
    default:
      jspb.Message.readBinaryExtension(msg, reader, proto.transit_realtime.TimeRange.extensionsBinary,
        proto.transit_realtime.TimeRange.prototype.getExtension,
        proto.transit_realtime.TimeRange.prototype.setExtension);
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.transit_realtime.TimeRange.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.transit_realtime.TimeRange.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.transit_realtime.TimeRange} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.TimeRange.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = /** @type {number} */ (jspb.Message.getField(message, 1));
  if (f != null) {
    writer.writeUint64(
      1,
      f
    );
  }
  f = /** @type {number} */ (jspb.Message.getField(message, 2));
  if (f != null) {
    writer.writeUint64(
      2,
      f
    );
  }
  jspb.Message.serializeBinaryExtensions(message, writer,
    proto.transit_realtime.TimeRange.extensionsBinary, proto.transit_realtime.TimeRange.prototype.getExtension);
};


/**
 * optional uint64 start = 1;
 * @return {number}
 */
proto.transit_realtime.TimeRange.prototype.getStart = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
};


/** @param {number} value */
proto.transit_realtime.TimeRange.prototype.setStart = function(value) {
  jspb.Message.setField(this, 1, value);
};


proto.transit_realtime.TimeRange.prototype.clearStart = function() {
  jspb.Message.setField(this, 1, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TimeRange.prototype.hasStart = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional uint64 end = 2;
 * @return {number}
 */
proto.transit_realtime.TimeRange.prototype.getEnd = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
};


/** @param {number} value */
proto.transit_realtime.TimeRange.prototype.setEnd = function(value) {
  jspb.Message.setField(this, 2, value);
};


proto.transit_realtime.TimeRange.prototype.clearEnd = function() {
  jspb.Message.setField(this, 2, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TimeRange.prototype.hasEnd = function() {
  return jspb.Message.getField(this, 2) != null;
};



/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldInfo>}
 */
proto.transit_realtime.TimeRange.extensions = {};


/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldBinaryInfo>}
 */
proto.transit_realtime.TimeRange.extensionsBinary = {};


/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.transit_realtime.Position = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, 6, null, null);
};
goog.inherits(proto.transit_realtime.Position, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.transit_realtime.Position.displayName = 'proto.transit_realtime.Position';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.transit_realtime.Position.prototype.toObject = function(opt_includeInstance) {
  return proto.transit_realtime.Position.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.transit_realtime.Position} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.Position.toObject = function(includeInstance, msg) {
  var f, obj = {
    latitude: +jspb.Message.getField(msg, 1),
    longitude: +jspb.Message.getField(msg, 2),
    bearing: jspb.Message.getOptionalFloatingPointField(msg, 3),
    odometer: jspb.Message.getOptionalFloatingPointField(msg, 4),
    speed: jspb.Message.getOptionalFloatingPointField(msg, 5)
  };

  jspb.Message.toObjectExtension(/** @type {!jspb.Message} */ (msg), obj,
      proto.transit_realtime.Position.extensions, proto.transit_realtime.Position.prototype.getExtension,
      includeInstance);
  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.transit_realtime.Position}
 */
proto.transit_realtime.Position.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.transit_realtime.Position;
  return proto.transit_realtime.Position.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.transit_realtime.Position} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.transit_realtime.Position}
 */
proto.transit_realtime.Position.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {number} */ (reader.readFloat());
      msg.setLatitude(value);
      break;
    case 2:
      var value = /** @type {number} */ (reader.readFloat());
      msg.setLongitude(value);
      break;
    case 3:
      var value = /** @type {number} */ (reader.readFloat());
      msg.setBearing(value);
      break;
    case 4:
      var value = /** @type {number} */ (reader.readDouble());
      msg.setOdometer(value);
      break;
    case 5:
      var value = /** @type {number} */ (reader.readFloat());
      msg.setSpeed(value);
      break;
    default:
      jspb.Message.readBinaryExtension(msg, reader, proto.transit_realtime.Position.extensionsBinary,
        proto.transit_realtime.Position.prototype.getExtension,
        proto.transit_realtime.Position.prototype.setExtension);
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.transit_realtime.Position.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.transit_realtime.Position.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.transit_realtime.Position} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.Position.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = /** @type {number} */ (jspb.Message.getField(message, 1));
  if (f != null) {
    writer.writeFloat(
      1,
      f
    );
  }
  f = /** @type {number} */ (jspb.Message.getField(message, 2));
  if (f != null) {
    writer.writeFloat(
      2,
      f
    );
  }
  f = /** @type {number} */ (jspb.Message.getField(message, 3));
  if (f != null) {
    writer.writeFloat(
      3,
      f
    );
  }
  f = /** @type {number} */ (jspb.Message.getField(message, 4));
  if (f != null) {
    writer.writeDouble(
      4,
      f
    );
  }
  f = /** @type {number} */ (jspb.Message.getField(message, 5));
  if (f != null) {
    writer.writeFloat(
      5,
      f
    );
  }
  jspb.Message.serializeBinaryExtensions(message, writer,
    proto.transit_realtime.Position.extensionsBinary, proto.transit_realtime.Position.prototype.getExtension);
};


/**
 * required float latitude = 1;
 * @return {number}
 */
proto.transit_realtime.Position.prototype.getLatitude = function() {
  return /** @type {number} */ (+jspb.Message.getFieldWithDefault(this, 1, 0.0));
};


/** @param {number} value */
proto.transit_realtime.Position.prototype.setLatitude = function(value) {
  jspb.Message.setField(this, 1, value);
};


proto.transit_realtime.Position.prototype.clearLatitude = function() {
  jspb.Message.setField(this, 1, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.Position.prototype.hasLatitude = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * required float longitude = 2;
 * @return {number}
 */
proto.transit_realtime.Position.prototype.getLongitude = function() {
  return /** @type {number} */ (+jspb.Message.getFieldWithDefault(this, 2, 0.0));
};


/** @param {number} value */
proto.transit_realtime.Position.prototype.setLongitude = function(value) {
  jspb.Message.setField(this, 2, value);
};


proto.transit_realtime.Position.prototype.clearLongitude = function() {
  jspb.Message.setField(this, 2, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.Position.prototype.hasLongitude = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional float bearing = 3;
 * @return {number}
 */
proto.transit_realtime.Position.prototype.getBearing = function() {
  return /** @type {number} */ (+jspb.Message.getFieldWithDefault(this, 3, 0.0));
};


/** @param {number} value */
proto.transit_realtime.Position.prototype.setBearing = function(value) {
  jspb.Message.setField(this, 3, value);
};


proto.transit_realtime.Position.prototype.clearBearing = function() {
  jspb.Message.setField(this, 3, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.Position.prototype.hasBearing = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * optional double odometer = 4;
 * @return {number}
 */
proto.transit_realtime.Position.prototype.getOdometer = function() {
  return /** @type {number} */ (+jspb.Message.getFieldWithDefault(this, 4, 0.0));
};


/** @param {number} value */
proto.transit_realtime.Position.prototype.setOdometer = function(value) {
  jspb.Message.setField(this, 4, value);
};


proto.transit_realtime.Position.prototype.clearOdometer = function() {
  jspb.Message.setField(this, 4, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.Position.prototype.hasOdometer = function() {
  return jspb.Message.getField(this, 4) != null;
};


/**
 * optional float speed = 5;
 * @return {number}
 */
proto.transit_realtime.Position.prototype.getSpeed = function() {
  return /** @type {number} */ (+jspb.Message.getFieldWithDefault(this, 5, 0.0));
};


/** @param {number} value */
proto.transit_realtime.Position.prototype.setSpeed = function(value) {
  jspb.Message.setField(this, 5, value);
};


proto.transit_realtime.Position.prototype.clearSpeed = function() {
  jspb.Message.setField(this, 5, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.Position.prototype.hasSpeed = function() {
  return jspb.Message.getField(this, 5) != null;
};



/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldInfo>}
 */
proto.transit_realtime.Position.extensions = {};


/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldBinaryInfo>}
 */
proto.transit_realtime.Position.extensionsBinary = {};


/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.transit_realtime.TripDescriptor = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, 7, null, null);
};
goog.inherits(proto.transit_realtime.TripDescriptor, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.transit_realtime.TripDescriptor.displayName = 'proto.transit_realtime.TripDescriptor';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.transit_realtime.TripDescriptor.prototype.toObject = function(opt_includeInstance) {
  return proto.transit_realtime.TripDescriptor.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.transit_realtime.TripDescriptor} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.TripDescriptor.toObject = function(includeInstance, msg) {
  var f, obj = {
    tripId: jspb.Message.getField(msg, 1),
    routeId: jspb.Message.getField(msg, 5),
    directionId: jspb.Message.getField(msg, 6),
    startTime: jspb.Message.getField(msg, 2),
    startDate: jspb.Message.getField(msg, 3),
    scheduleRelationship: jspb.Message.getField(msg, 4)
  };

  jspb.Message.toObjectExtension(/** @type {!jspb.Message} */ (msg), obj,
      proto.transit_realtime.TripDescriptor.extensions, proto.transit_realtime.TripDescriptor.prototype.getExtension,
      includeInstance);
  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.transit_realtime.TripDescriptor}
 */
proto.transit_realtime.TripDescriptor.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.transit_realtime.TripDescriptor;
  return proto.transit_realtime.TripDescriptor.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.transit_realtime.TripDescriptor} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.transit_realtime.TripDescriptor}
 */
proto.transit_realtime.TripDescriptor.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setTripId(value);
      break;
    case 5:
      var value = /** @type {string} */ (reader.readString());
      msg.setRouteId(value);
      break;
    case 6:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setDirectionId(value);
      break;
    case 2:
      var value = /** @type {string} */ (reader.readString());
      msg.setStartTime(value);
      break;
    case 3:
      var value = /** @type {string} */ (reader.readString());
      msg.setStartDate(value);
      break;
    case 4:
      var value = /** @type {!proto.transit_realtime.TripDescriptor.ScheduleRelationship} */ (reader.readEnum());
      msg.setScheduleRelationship(value);
      break;
    default:
      jspb.Message.readBinaryExtension(msg, reader, proto.transit_realtime.TripDescriptor.extensionsBinary,
        proto.transit_realtime.TripDescriptor.prototype.getExtension,
        proto.transit_realtime.TripDescriptor.prototype.setExtension);
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.transit_realtime.TripDescriptor.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.transit_realtime.TripDescriptor.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.transit_realtime.TripDescriptor} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.TripDescriptor.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = /** @type {string} */ (jspb.Message.getField(message, 1));
  if (f != null) {
    writer.writeString(
      1,
      f
    );
  }
  f = /** @type {string} */ (jspb.Message.getField(message, 5));
  if (f != null) {
    writer.writeString(
      5,
      f
    );
  }
  f = /** @type {number} */ (jspb.Message.getField(message, 6));
  if (f != null) {
    writer.writeUint32(
      6,
      f
    );
  }
  f = /** @type {string} */ (jspb.Message.getField(message, 2));
  if (f != null) {
    writer.writeString(
      2,
      f
    );
  }
  f = /** @type {string} */ (jspb.Message.getField(message, 3));
  if (f != null) {
    writer.writeString(
      3,
      f
    );
  }
  f = /** @type {!proto.transit_realtime.TripDescriptor.ScheduleRelationship} */ (jspb.Message.getField(message, 4));
  if (f != null) {
    writer.writeEnum(
      4,
      f
    );
  }
  jspb.Message.serializeBinaryExtensions(message, writer,
    proto.transit_realtime.TripDescriptor.extensionsBinary, proto.transit_realtime.TripDescriptor.prototype.getExtension);
};


/**
 * @enum {number}
 */
proto.transit_realtime.TripDescriptor.ScheduleRelationship = {
  SCHEDULED: 0,
  ADDED: 1,
  UNSCHEDULED: 2,
  CANCELED: 3,
  REPLACEMENT: 5,
  DUPLICATED: 6
};

/**
 * optional string trip_id = 1;
 * @return {string}
 */
proto.transit_realtime.TripDescriptor.prototype.getTripId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.transit_realtime.TripDescriptor.prototype.setTripId = function(value) {
  jspb.Message.setField(this, 1, value);
};


proto.transit_realtime.TripDescriptor.prototype.clearTripId = function() {
  jspb.Message.setField(this, 1, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripDescriptor.prototype.hasTripId = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional string route_id = 5;
 * @return {string}
 */
proto.transit_realtime.TripDescriptor.prototype.getRouteId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, ""));
};


/** @param {string} value */
proto.transit_realtime.TripDescriptor.prototype.setRouteId = function(value) {
  jspb.Message.setField(this, 5, value);
};


proto.transit_realtime.TripDescriptor.prototype.clearRouteId = function() {
  jspb.Message.setField(this, 5, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripDescriptor.prototype.hasRouteId = function() {
  return jspb.Message.getField(this, 5) != null;
};


/**
 * optional uint32 direction_id = 6;
 * @return {number}
 */
proto.transit_realtime.TripDescriptor.prototype.getDirectionId = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 6, 0));
};


/** @param {number} value */
proto.transit_realtime.TripDescriptor.prototype.setDirectionId = function(value) {
  jspb.Message.setField(this, 6, value);
};


proto.transit_realtime.TripDescriptor.prototype.clearDirectionId = function() {
  jspb.Message.setField(this, 6, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripDescriptor.prototype.hasDirectionId = function() {
  return jspb.Message.getField(this, 6) != null;
};


/**
 * optional string start_time = 2;
 * @return {string}
 */
proto.transit_realtime.TripDescriptor.prototype.getStartTime = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
};


/** @param {string} value */
proto.transit_realtime.TripDescriptor.prototype.setStartTime = function(value) {
  jspb.Message.setField(this, 2, value);
};


proto.transit_realtime.TripDescriptor.prototype.clearStartTime = function() {
  jspb.Message.setField(this, 2, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripDescriptor.prototype.hasStartTime = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional string start_date = 3;
 * @return {string}
 */
proto.transit_realtime.TripDescriptor.prototype.getStartDate = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
};


/** @param {string} value */
proto.transit_realtime.TripDescriptor.prototype.setStartDate = function(value) {
  jspb.Message.setField(this, 3, value);
};


proto.transit_realtime.TripDescriptor.prototype.clearStartDate = function() {
  jspb.Message.setField(this, 3, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripDescriptor.prototype.hasStartDate = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * optional ScheduleRelationship schedule_relationship = 4;
 * @return {!proto.transit_realtime.TripDescriptor.ScheduleRelationship}
 */
proto.transit_realtime.TripDescriptor.prototype.getScheduleRelationship = function() {
  return /** @type {!proto.transit_realtime.TripDescriptor.ScheduleRelationship} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
};


/** @param {!proto.transit_realtime.TripDescriptor.ScheduleRelationship} value */
proto.transit_realtime.TripDescriptor.prototype.setScheduleRelationship = function(value) {
  jspb.Message.setField(this, 4, value);
};


proto.transit_realtime.TripDescriptor.prototype.clearScheduleRelationship = function() {
  jspb.Message.setField(this, 4, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TripDescriptor.prototype.hasScheduleRelationship = function() {
  return jspb.Message.getField(this, 4) != null;
};



/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldInfo>}
 */
proto.transit_realtime.TripDescriptor.extensions = {};


/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldBinaryInfo>}
 */
proto.transit_realtime.TripDescriptor.extensionsBinary = {};


/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.transit_realtime.VehicleDescriptor = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, 4, null, null);
};
goog.inherits(proto.transit_realtime.VehicleDescriptor, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.transit_realtime.VehicleDescriptor.displayName = 'proto.transit_realtime.VehicleDescriptor';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.transit_realtime.VehicleDescriptor.prototype.toObject = function(opt_includeInstance) {
  return proto.transit_realtime.VehicleDescriptor.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.transit_realtime.VehicleDescriptor} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.VehicleDescriptor.toObject = function(includeInstance, msg) {
  var f, obj = {
    id: jspb.Message.getField(msg, 1),
    label: jspb.Message.getField(msg, 2),
    licensePlate: jspb.Message.getField(msg, 3)
  };

  jspb.Message.toObjectExtension(/** @type {!jspb.Message} */ (msg), obj,
      proto.transit_realtime.VehicleDescriptor.extensions, proto.transit_realtime.VehicleDescriptor.prototype.getExtension,
      includeInstance);
  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.transit_realtime.VehicleDescriptor}
 */
proto.transit_realtime.VehicleDescriptor.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.transit_realtime.VehicleDescriptor;
  return proto.transit_realtime.VehicleDescriptor.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.transit_realtime.VehicleDescriptor} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.transit_realtime.VehicleDescriptor}
 */
proto.transit_realtime.VehicleDescriptor.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setId(value);
      break;
    case 2:
      var value = /** @type {string} */ (reader.readString());
      msg.setLabel(value);
      break;
    case 3:
      var value = /** @type {string} */ (reader.readString());
      msg.setLicensePlate(value);
      break;
    default:
      jspb.Message.readBinaryExtension(msg, reader, proto.transit_realtime.VehicleDescriptor.extensionsBinary,
        proto.transit_realtime.VehicleDescriptor.prototype.getExtension,
        proto.transit_realtime.VehicleDescriptor.prototype.setExtension);
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.transit_realtime.VehicleDescriptor.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.transit_realtime.VehicleDescriptor.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.transit_realtime.VehicleDescriptor} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.VehicleDescriptor.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = /** @type {string} */ (jspb.Message.getField(message, 1));
  if (f != null) {
    writer.writeString(
      1,
      f
    );
  }
  f = /** @type {string} */ (jspb.Message.getField(message, 2));
  if (f != null) {
    writer.writeString(
      2,
      f
    );
  }
  f = /** @type {string} */ (jspb.Message.getField(message, 3));
  if (f != null) {
    writer.writeString(
      3,
      f
    );
  }
  jspb.Message.serializeBinaryExtensions(message, writer,
    proto.transit_realtime.VehicleDescriptor.extensionsBinary, proto.transit_realtime.VehicleDescriptor.prototype.getExtension);
};


/**
 * optional string id = 1;
 * @return {string}
 */
proto.transit_realtime.VehicleDescriptor.prototype.getId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.transit_realtime.VehicleDescriptor.prototype.setId = function(value) {
  jspb.Message.setField(this, 1, value);
};


proto.transit_realtime.VehicleDescriptor.prototype.clearId = function() {
  jspb.Message.setField(this, 1, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.VehicleDescriptor.prototype.hasId = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional string label = 2;
 * @return {string}
 */
proto.transit_realtime.VehicleDescriptor.prototype.getLabel = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
};


/** @param {string} value */
proto.transit_realtime.VehicleDescriptor.prototype.setLabel = function(value) {
  jspb.Message.setField(this, 2, value);
};


proto.transit_realtime.VehicleDescriptor.prototype.clearLabel = function() {
  jspb.Message.setField(this, 2, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.VehicleDescriptor.prototype.hasLabel = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional string license_plate = 3;
 * @return {string}
 */
proto.transit_realtime.VehicleDescriptor.prototype.getLicensePlate = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, ""));
};


/** @param {string} value */
proto.transit_realtime.VehicleDescriptor.prototype.setLicensePlate = function(value) {
  jspb.Message.setField(this, 3, value);
};


proto.transit_realtime.VehicleDescriptor.prototype.clearLicensePlate = function() {
  jspb.Message.setField(this, 3, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.VehicleDescriptor.prototype.hasLicensePlate = function() {
  return jspb.Message.getField(this, 3) != null;
};



/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldInfo>}
 */
proto.transit_realtime.VehicleDescriptor.extensions = {};


/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldBinaryInfo>}
 */
proto.transit_realtime.VehicleDescriptor.extensionsBinary = {};


/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.transit_realtime.EntitySelector = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, 7, null, null);
};
goog.inherits(proto.transit_realtime.EntitySelector, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.transit_realtime.EntitySelector.displayName = 'proto.transit_realtime.EntitySelector';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.transit_realtime.EntitySelector.prototype.toObject = function(opt_includeInstance) {
  return proto.transit_realtime.EntitySelector.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.transit_realtime.EntitySelector} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.EntitySelector.toObject = function(includeInstance, msg) {
  var f, obj = {
    agencyId: jspb.Message.getField(msg, 1),
    routeId: jspb.Message.getField(msg, 2),
    routeType: jspb.Message.getField(msg, 3),
    trip: (f = msg.getTrip()) && proto.transit_realtime.TripDescriptor.toObject(includeInstance, f),
    stopId: jspb.Message.getField(msg, 5),
    directionId: jspb.Message.getField(msg, 6)
  };

  jspb.Message.toObjectExtension(/** @type {!jspb.Message} */ (msg), obj,
      proto.transit_realtime.EntitySelector.extensions, proto.transit_realtime.EntitySelector.prototype.getExtension,
      includeInstance);
  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.transit_realtime.EntitySelector}
 */
proto.transit_realtime.EntitySelector.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.transit_realtime.EntitySelector;
  return proto.transit_realtime.EntitySelector.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.transit_realtime.EntitySelector} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.transit_realtime.EntitySelector}
 */
proto.transit_realtime.EntitySelector.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setAgencyId(value);
      break;
    case 2:
      var value = /** @type {string} */ (reader.readString());
      msg.setRouteId(value);
      break;
    case 3:
      var value = /** @type {number} */ (reader.readInt32());
      msg.setRouteType(value);
      break;
    case 4:
      var value = new proto.transit_realtime.TripDescriptor;
      reader.readMessage(value,proto.transit_realtime.TripDescriptor.deserializeBinaryFromReader);
      msg.setTrip(value);
      break;
    case 5:
      var value = /** @type {string} */ (reader.readString());
      msg.setStopId(value);
      break;
    case 6:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setDirectionId(value);
      break;
    default:
      jspb.Message.readBinaryExtension(msg, reader, proto.transit_realtime.EntitySelector.extensionsBinary,
        proto.transit_realtime.EntitySelector.prototype.getExtension,
        proto.transit_realtime.EntitySelector.prototype.setExtension);
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.transit_realtime.EntitySelector.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.transit_realtime.EntitySelector.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.transit_realtime.EntitySelector} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.EntitySelector.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = /** @type {string} */ (jspb.Message.getField(message, 1));
  if (f != null) {
    writer.writeString(
      1,
      f
    );
  }
  f = /** @type {string} */ (jspb.Message.getField(message, 2));
  if (f != null) {
    writer.writeString(
      2,
      f
    );
  }
  f = /** @type {number} */ (jspb.Message.getField(message, 3));
  if (f != null) {
    writer.writeInt32(
      3,
      f
    );
  }
  f = message.getTrip();
  if (f != null) {
    writer.writeMessage(
      4,
      f,
      proto.transit_realtime.TripDescriptor.serializeBinaryToWriter
    );
  }
  f = /** @type {string} */ (jspb.Message.getField(message, 5));
  if (f != null) {
    writer.writeString(
      5,
      f
    );
  }
  f = /** @type {number} */ (jspb.Message.getField(message, 6));
  if (f != null) {
    writer.writeUint32(
      6,
      f
    );
  }
  jspb.Message.serializeBinaryExtensions(message, writer,
    proto.transit_realtime.EntitySelector.extensionsBinary, proto.transit_realtime.EntitySelector.prototype.getExtension);
};


/**
 * optional string agency_id = 1;
 * @return {string}
 */
proto.transit_realtime.EntitySelector.prototype.getAgencyId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.transit_realtime.EntitySelector.prototype.setAgencyId = function(value) {
  jspb.Message.setField(this, 1, value);
};


proto.transit_realtime.EntitySelector.prototype.clearAgencyId = function() {
  jspb.Message.setField(this, 1, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.EntitySelector.prototype.hasAgencyId = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional string route_id = 2;
 * @return {string}
 */
proto.transit_realtime.EntitySelector.prototype.getRouteId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
};


/** @param {string} value */
proto.transit_realtime.EntitySelector.prototype.setRouteId = function(value) {
  jspb.Message.setField(this, 2, value);
};


proto.transit_realtime.EntitySelector.prototype.clearRouteId = function() {
  jspb.Message.setField(this, 2, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.EntitySelector.prototype.hasRouteId = function() {
  return jspb.Message.getField(this, 2) != null;
};


/**
 * optional int32 route_type = 3;
 * @return {number}
 */
proto.transit_realtime.EntitySelector.prototype.getRouteType = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
};


/** @param {number} value */
proto.transit_realtime.EntitySelector.prototype.setRouteType = function(value) {
  jspb.Message.setField(this, 3, value);
};


proto.transit_realtime.EntitySelector.prototype.clearRouteType = function() {
  jspb.Message.setField(this, 3, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.EntitySelector.prototype.hasRouteType = function() {
  return jspb.Message.getField(this, 3) != null;
};


/**
 * optional TripDescriptor trip = 4;
 * @return {?proto.transit_realtime.TripDescriptor}
 */
proto.transit_realtime.EntitySelector.prototype.getTrip = function() {
  return /** @type{?proto.transit_realtime.TripDescriptor} */ (
    jspb.Message.getWrapperField(this, proto.transit_realtime.TripDescriptor, 4));
};


/** @param {?proto.transit_realtime.TripDescriptor|undefined} value */
proto.transit_realtime.EntitySelector.prototype.setTrip = function(value) {
  jspb.Message.setWrapperField(this, 4, value);
};


proto.transit_realtime.EntitySelector.prototype.clearTrip = function() {
  this.setTrip(undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.EntitySelector.prototype.hasTrip = function() {
  return jspb.Message.getField(this, 4) != null;
};


/**
 * optional string stop_id = 5;
 * @return {string}
 */
proto.transit_realtime.EntitySelector.prototype.getStopId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, ""));
};


/** @param {string} value */
proto.transit_realtime.EntitySelector.prototype.setStopId = function(value) {
  jspb.Message.setField(this, 5, value);
};


proto.transit_realtime.EntitySelector.prototype.clearStopId = function() {
  jspb.Message.setField(this, 5, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.EntitySelector.prototype.hasStopId = function() {
  return jspb.Message.getField(this, 5) != null;
};


/**
 * optional uint32 direction_id = 6;
 * @return {number}
 */
proto.transit_realtime.EntitySelector.prototype.getDirectionId = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 6, 0));
};


/** @param {number} value */
proto.transit_realtime.EntitySelector.prototype.setDirectionId = function(value) {
  jspb.Message.setField(this, 6, value);
};


proto.transit_realtime.EntitySelector.prototype.clearDirectionId = function() {
  jspb.Message.setField(this, 6, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.EntitySelector.prototype.hasDirectionId = function() {
  return jspb.Message.getField(this, 6) != null;
};



/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldInfo>}
 */
proto.transit_realtime.EntitySelector.extensions = {};


/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldBinaryInfo>}
 */
proto.transit_realtime.EntitySelector.extensionsBinary = {};


/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.transit_realtime.TranslatedString = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, 2, proto.transit_realtime.TranslatedString.repeatedFields_, null);
};
goog.inherits(proto.transit_realtime.TranslatedString, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.transit_realtime.TranslatedString.displayName = 'proto.transit_realtime.TranslatedString';
}
/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.transit_realtime.TranslatedString.repeatedFields_ = [1];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.transit_realtime.TranslatedString.prototype.toObject = function(opt_includeInstance) {
  return proto.transit_realtime.TranslatedString.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.transit_realtime.TranslatedString} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.TranslatedString.toObject = function(includeInstance, msg) {
  var f, obj = {
    translationList: jspb.Message.toObjectList(msg.getTranslationList(),
    proto.transit_realtime.TranslatedString.Translation.toObject, includeInstance)
  };

  jspb.Message.toObjectExtension(/** @type {!jspb.Message} */ (msg), obj,
      proto.transit_realtime.TranslatedString.extensions, proto.transit_realtime.TranslatedString.prototype.getExtension,
      includeInstance);
  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.transit_realtime.TranslatedString}
 */
proto.transit_realtime.TranslatedString.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.transit_realtime.TranslatedString;
  return proto.transit_realtime.TranslatedString.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.transit_realtime.TranslatedString} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.transit_realtime.TranslatedString}
 */
proto.transit_realtime.TranslatedString.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = new proto.transit_realtime.TranslatedString.Translation;
      reader.readMessage(value,proto.transit_realtime.TranslatedString.Translation.deserializeBinaryFromReader);
      msg.addTranslation(value);
      break;
    default:
      jspb.Message.readBinaryExtension(msg, reader, proto.transit_realtime.TranslatedString.extensionsBinary,
        proto.transit_realtime.TranslatedString.prototype.getExtension,
        proto.transit_realtime.TranslatedString.prototype.setExtension);
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.transit_realtime.TranslatedString.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.transit_realtime.TranslatedString.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.transit_realtime.TranslatedString} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.TranslatedString.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getTranslationList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      1,
      f,
      proto.transit_realtime.TranslatedString.Translation.serializeBinaryToWriter
    );
  }
  jspb.Message.serializeBinaryExtensions(message, writer,
    proto.transit_realtime.TranslatedString.extensionsBinary, proto.transit_realtime.TranslatedString.prototype.getExtension);
};



/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.transit_realtime.TranslatedString.Translation = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, 3, null, null);
};
goog.inherits(proto.transit_realtime.TranslatedString.Translation, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.transit_realtime.TranslatedString.Translation.displayName = 'proto.transit_realtime.TranslatedString.Translation';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.transit_realtime.TranslatedString.Translation.prototype.toObject = function(opt_includeInstance) {
  return proto.transit_realtime.TranslatedString.Translation.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.transit_realtime.TranslatedString.Translation} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.TranslatedString.Translation.toObject = function(includeInstance, msg) {
  var f, obj = {
    text: jspb.Message.getField(msg, 1),
    language: jspb.Message.getField(msg, 2)
  };

  jspb.Message.toObjectExtension(/** @type {!jspb.Message} */ (msg), obj,
      proto.transit_realtime.TranslatedString.Translation.extensions, proto.transit_realtime.TranslatedString.Translation.prototype.getExtension,
      includeInstance);
  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.transit_realtime.TranslatedString.Translation}
 */
proto.transit_realtime.TranslatedString.Translation.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.transit_realtime.TranslatedString.Translation;
  return proto.transit_realtime.TranslatedString.Translation.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.transit_realtime.TranslatedString.Translation} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.transit_realtime.TranslatedString.Translation}
 */
proto.transit_realtime.TranslatedString.Translation.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setText(value);
      break;
    case 2:
      var value = /** @type {string} */ (reader.readString());
      msg.setLanguage(value);
      break;
    default:
      jspb.Message.readBinaryExtension(msg, reader, proto.transit_realtime.TranslatedString.Translation.extensionsBinary,
        proto.transit_realtime.TranslatedString.Translation.prototype.getExtension,
        proto.transit_realtime.TranslatedString.Translation.prototype.setExtension);
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.transit_realtime.TranslatedString.Translation.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.transit_realtime.TranslatedString.Translation.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.transit_realtime.TranslatedString.Translation} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.TranslatedString.Translation.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = /** @type {string} */ (jspb.Message.getField(message, 1));
  if (f != null) {
    writer.writeString(
      1,
      f
    );
  }
  f = /** @type {string} */ (jspb.Message.getField(message, 2));
  if (f != null) {
    writer.writeString(
      2,
      f
    );
  }
  jspb.Message.serializeBinaryExtensions(message, writer,
    proto.transit_realtime.TranslatedString.Translation.extensionsBinary, proto.transit_realtime.TranslatedString.Translation.prototype.getExtension);
};


/**
 * required string text = 1;
 * @return {string}
 */
proto.transit_realtime.TranslatedString.Translation.prototype.getText = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.transit_realtime.TranslatedString.Translation.prototype.setText = function(value) {
  jspb.Message.setField(this, 1, value);
};


proto.transit_realtime.TranslatedString.Translation.prototype.clearText = function() {
  jspb.Message.setField(this, 1, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TranslatedString.Translation.prototype.hasText = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional string language = 2;
 * @return {string}
 */
proto.transit_realtime.TranslatedString.Translation.prototype.getLanguage = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
};


/** @param {string} value */
proto.transit_realtime.TranslatedString.Translation.prototype.setLanguage = function(value) {
  jspb.Message.setField(this, 2, value);
};


proto.transit_realtime.TranslatedString.Translation.prototype.clearLanguage = function() {
  jspb.Message.setField(this, 2, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.TranslatedString.Translation.prototype.hasLanguage = function() {
  return jspb.Message.getField(this, 2) != null;
};



/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldInfo>}
 */
proto.transit_realtime.TranslatedString.Translation.extensions = {};


/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldBinaryInfo>}
 */
proto.transit_realtime.TranslatedString.Translation.extensionsBinary = {};

/**
 * repeated Translation translation = 1;
 * @return {!Array<!proto.transit_realtime.TranslatedString.Translation>}
 */
proto.transit_realtime.TranslatedString.prototype.getTranslationList = function() {
  return /** @type{!Array<!proto.transit_realtime.TranslatedString.Translation>} */ (
    jspb.Message.getRepeatedWrapperField(this, proto.transit_realtime.TranslatedString.Translation, 1));
};


/** @param {!Array<!proto.transit_realtime.TranslatedString.Translation>} value */
proto.transit_realtime.TranslatedString.prototype.setTranslationList = function(value) {
  jspb.Message.setRepeatedWrapperField(this, 1, value);
};


/**
 * @param {!proto.transit_realtime.TranslatedString.Translation=} opt_value
 * @param {number=} opt_index
 * @return {!proto.transit_realtime.TranslatedString.Translation}
 */
proto.transit_realtime.TranslatedString.prototype.addTranslation = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.transit_realtime.TranslatedString.Translation, opt_index);
};


proto.transit_realtime.TranslatedString.prototype.clearTranslationList = function() {
  this.setTranslationList([]);
};



/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldInfo>}
 */
proto.transit_realtime.TranslatedString.extensions = {};


/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldBinaryInfo>}
 */
proto.transit_realtime.TranslatedString.extensionsBinary = {};


/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.transit_realtime.Shape = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, 3, null, null);
};
goog.inherits(proto.transit_realtime.Shape, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  proto.transit_realtime.Shape.displayName = 'proto.transit_realtime.Shape';
}


if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto suitable for use in Soy templates.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
 * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
 *     for transitional soy proto support: http://goto/soy-param-migration
 * @return {!Object}
 */
proto.transit_realtime.Shape.prototype.toObject = function(opt_includeInstance) {
  return proto.transit_realtime.Shape.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Whether to include the JSPB
 *     instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.transit_realtime.Shape} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.Shape.toObject = function(includeInstance, msg) {
  var f, obj = {
    shapeId: jspb.Message.getField(msg, 1),
    encodedPolyline: jspb.Message.getField(msg, 2)
  };

  jspb.Message.toObjectExtension(/** @type {!jspb.Message} */ (msg), obj,
      proto.transit_realtime.Shape.extensions, proto.transit_realtime.Shape.prototype.getExtension,
      includeInstance);
  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.transit_realtime.Shape}
 */
proto.transit_realtime.Shape.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.transit_realtime.Shape;
  return proto.transit_realtime.Shape.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.transit_realtime.Shape} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.transit_realtime.Shape}
 */
proto.transit_realtime.Shape.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setShapeId(value);
      break;
    case 2:
      var value = /** @type {string} */ (reader.readString());
      msg.setEncodedPolyline(value);
      break;
    default:
      jspb.Message.readBinaryExtension(msg, reader, proto.transit_realtime.Shape.extensionsBinary,
        proto.transit_realtime.Shape.prototype.getExtension,
        proto.transit_realtime.Shape.prototype.setExtension);
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.transit_realtime.Shape.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.transit_realtime.Shape.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.transit_realtime.Shape} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.transit_realtime.Shape.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = /** @type {string} */ (jspb.Message.getField(message, 1));
  if (f != null) {
    writer.writeString(
      1,
      f
    );
  }
  f = /** @type {string} */ (jspb.Message.getField(message, 2));
  if (f != null) {
    writer.writeString(
      2,
      f
    );
  }
  jspb.Message.serializeBinaryExtensions(message, writer,
    proto.transit_realtime.Shape.extensionsBinary, proto.transit_realtime.Shape.prototype.getExtension);
};


/**
 * optional string shape_id = 1;
 * @return {string}
 */
proto.transit_realtime.Shape.prototype.getShapeId = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/** @param {string} value */
proto.transit_realtime.Shape.prototype.setShapeId = function(value) {
  jspb.Message.setField(this, 1, value);
};


proto.transit_realtime.Shape.prototype.clearShapeId = function() {
  jspb.Message.setField(this, 1, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.Shape.prototype.hasShapeId = function() {
  return jspb.Message.getField(this, 1) != null;
};


/**
 * optional string encoded_polyline = 2;
 * @return {string}
 */
proto.transit_realtime.Shape.prototype.getEncodedPolyline = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, ""));
};


/** @param {string} value */
proto.transit_realtime.Shape.prototype.setEncodedPolyline = function(value) {
  jspb.Message.setField(this, 2, value);
};


proto.transit_realtime.Shape.prototype.clearEncodedPolyline = function() {
  jspb.Message.setField(this, 2, undefined);
};


/**
 * Returns whether this field is set.
 * @return {!boolean}
 */
proto.transit_realtime.Shape.prototype.hasEncodedPolyline = function() {
  return jspb.Message.getField(this, 2) != null;
};



/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldInfo>}
 */
proto.transit_realtime.Shape.extensions = {};


/**
 * The extensions registered with this message class. This is a map of
 * extension field number to fieldInfo object.
 *
 * For example:
 *     { 123: {fieldIndex: 123, fieldName: {my_field_name: 0}, ctor: proto.example.MyMessage} }
 *
 * fieldName contains the JsCompiler renamed field name property so that it
 * works in OPTIMIZED mode.
 *
 * @type {!Object<number, jspb.ExtensionFieldBinaryInfo>}
 */
proto.transit_realtime.Shape.extensionsBinary = {};

goog.object.extend(exports, proto.transit_realtime);
