diff --git a/feeds/feeds.pb.go b/feeds/feeds.pb.go
index 9902bb9..e9fa181 100644
--- a/feeds/feeds.pb.go
+++ b/feeds/feeds.pb.go
@@ -77,7 +77,7 @@
 	return proto.EnumName(PriceType_name, int32(x))
 }
 func (PriceType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{0}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{0}
 }
 
 // Defines whether a credit card is required in order to book an appointment.
@@ -113,7 +113,7 @@
 	return proto.EnumName(RequireCreditCard_name, int32(x))
 }
 func (RequireCreditCard) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{1}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{1}
 }
 
 // The platform that the action is performed on. Web application is the general
@@ -154,7 +154,7 @@
 	return proto.EnumName(ActionPlatform_name, int32(x))
 }
 func (ActionPlatform) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{2}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{2}
 }
 
 type FeedMetadata_ProcessingInstruction int32
@@ -186,7 +186,7 @@
 	return proto.EnumName(FeedMetadata_ProcessingInstruction_name, int32(x))
 }
 func (FeedMetadata_ProcessingInstruction) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{0, 0}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{0, 0}
 }
 
 // Enum to indicate the prepayment type.
@@ -221,7 +221,7 @@
 	return proto.EnumName(Service_PrepaymentType_name, int32(x))
 }
 func (Service_PrepaymentType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{7, 0}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{7, 0}
 }
 
 type Service_ServiceType int32
@@ -253,7 +253,7 @@
 	return proto.EnumName(Service_ServiceType_name, int32(x))
 }
 func (Service_ServiceType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{7, 1}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{7, 1}
 }
 
 // Enum to indicate the type of field.
@@ -299,7 +299,7 @@
 	return proto.EnumName(ServiceIntakeFormField_FieldType_name, int32(x))
 }
 func (ServiceIntakeFormField_FieldType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{11, 0}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{11, 0}
 }
 
 // Enum to indicate the type of this media source. Only photos are supported.
@@ -327,13 +327,13 @@
 	return proto.EnumName(RelatedMedia_MediaType_name, int32(x))
 }
 func (RelatedMedia_MediaType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{17, 0}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{17, 0}
 }
 
 type FeedMetadata struct {
 	// Instructs us how to process the feed: either as a shard of a complete feed,
 	// or as a shard of an incremental update.
-	ProcessingInstruction FeedMetadata_ProcessingInstruction `protobuf:"varint,1,opt,name=processing_instruction,json=processingInstruction,enum=maps.booking.feeds.FeedMetadata_ProcessingInstruction" json:"processing_instruction,omitempty"`
+	ProcessingInstruction FeedMetadata_ProcessingInstruction `protobuf:"varint,1,opt,name=processing_instruction,json=processingInstruction,proto3,enum=maps.booking.feeds.FeedMetadata_ProcessingInstruction" json:"processing_instruction,omitempty"`
 	// The current shard and total number of shards for this feed.
 	//
 	// Shard number is assumed to be zero-based.
@@ -342,8 +342,8 @@
 	//
 	// Shards do not need to be transferred in order, and they may not be
 	// processed in order.
-	ShardNumber int32 `protobuf:"varint,2,opt,name=shard_number,json=shardNumber" json:"shard_number,omitempty"`
-	TotalShards int32 `protobuf:"varint,3,opt,name=total_shards,json=totalShards" json:"total_shards,omitempty"`
+	ShardNumber int32 `protobuf:"varint,2,opt,name=shard_number,json=shardNumber,proto3" json:"shard_number,omitempty"`
+	TotalShards int32 `protobuf:"varint,3,opt,name=total_shards,json=totalShards,proto3" json:"total_shards,omitempty"`
 	// An identifier that must be consistent across all shards in a feed.
 	// This value must be globally unique across each feed type.
 	//
@@ -355,11 +355,11 @@
 	// total_shards).
 	//
 	// Feeds that span multiple shards must set this nonce to the same value.
-	Nonce uint64 `protobuf:"varint,5,opt,name=nonce" json:"nonce,omitempty"`
+	Nonce uint64 `protobuf:"varint,5,opt,name=nonce,proto3" json:"nonce,omitempty"`
 	// The timestamp at which this feed shard was generated.
 	//
 	// In Unix time format (seconds since the epoch).
-	GenerationTimestamp  int64    `protobuf:"varint,4,opt,name=generation_timestamp,json=generationTimestamp" json:"generation_timestamp,omitempty"`
+	GenerationTimestamp  int64    `protobuf:"varint,4,opt,name=generation_timestamp,json=generationTimestamp,proto3" json:"generation_timestamp,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -369,7 +369,7 @@
 func (m *FeedMetadata) String() string { return proto.CompactTextString(m) }
 func (*FeedMetadata) ProtoMessage()    {}
 func (*FeedMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{0}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{0}
 }
 func (m *FeedMetadata) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FeedMetadata.Unmarshal(m, b)
@@ -425,8 +425,8 @@
 }
 
 type AvailabilityFeed struct {
-	Metadata             *FeedMetadata          `protobuf:"bytes,1,opt,name=metadata" json:"metadata,omitempty"`
-	ServiceAvailability  []*ServiceAvailability `protobuf:"bytes,2,rep,name=service_availability,json=serviceAvailability" json:"service_availability,omitempty"`
+	Metadata             *FeedMetadata          `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
+	ServiceAvailability  []*ServiceAvailability `protobuf:"bytes,2,rep,name=service_availability,json=serviceAvailability,proto3" json:"service_availability,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
 	XXX_unrecognized     []byte                 `json:"-"`
 	XXX_sizecache        int32                  `json:"-"`
@@ -436,7 +436,7 @@
 func (m *AvailabilityFeed) String() string { return proto.CompactTextString(m) }
 func (*AvailabilityFeed) ProtoMessage()    {}
 func (*AvailabilityFeed) Descriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{1}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{1}
 }
 func (m *AvailabilityFeed) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_AvailabilityFeed.Unmarshal(m, b)
@@ -494,8 +494,8 @@
 	// is interpreted to mean all time up to the end_timestamp_restrict.
 	//
 	// In Unix time format (seconds since the epoch).
-	StartTimestampRestrict int64 `protobuf:"varint,1,opt,name=start_timestamp_restrict,json=startTimestampRestrict" json:"start_timestamp_restrict,omitempty"`
-	EndTimestampRestrict   int64 `protobuf:"varint,2,opt,name=end_timestamp_restrict,json=endTimestampRestrict" json:"end_timestamp_restrict,omitempty"`
+	StartTimestampRestrict int64 `protobuf:"varint,1,opt,name=start_timestamp_restrict,json=startTimestampRestrict,proto3" json:"start_timestamp_restrict,omitempty"`
+	EndTimestampRestrict   int64 `protobuf:"varint,2,opt,name=end_timestamp_restrict,json=endTimestampRestrict,proto3" json:"end_timestamp_restrict,omitempty"`
 	// If provided, the timestamp restricts will be applied only to the given
 	// merchant or service.
 	//
@@ -505,13 +505,13 @@
 	//
 	// Leaving these fields unset, or setting these to the empty string or null,
 	// is interpreted to mean that no restrict is intended.
-	MerchantIdRestrict string `protobuf:"bytes,3,opt,name=merchant_id_restrict,json=merchantIdRestrict" json:"merchant_id_restrict,omitempty"`
-	ServiceIdRestrict  string `protobuf:"bytes,4,opt,name=service_id_restrict,json=serviceIdRestrict" json:"service_id_restrict,omitempty"`
+	MerchantIdRestrict string `protobuf:"bytes,3,opt,name=merchant_id_restrict,json=merchantIdRestrict,proto3" json:"merchant_id_restrict,omitempty"`
+	ServiceIdRestrict  string `protobuf:"bytes,4,opt,name=service_id_restrict,json=serviceIdRestrict,proto3" json:"service_id_restrict,omitempty"`
 	// Setting resources_restrict further restricts the scope of the update to
 	// just this set of resources. All id fields of the resources must match
 	// exactly.
-	ResourcesRestrict    *Resources      `protobuf:"bytes,6,opt,name=resources_restrict,json=resourcesRestrict" json:"resources_restrict,omitempty"`
-	Availability         []*Availability `protobuf:"bytes,5,rep,name=availability" json:"availability,omitempty"`
+	ResourcesRestrict    *Resources      `protobuf:"bytes,6,opt,name=resources_restrict,json=resourcesRestrict,proto3" json:"resources_restrict,omitempty"`
+	Availability         []*Availability `protobuf:"bytes,5,rep,name=availability,proto3" json:"availability,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
 	XXX_unrecognized     []byte          `json:"-"`
 	XXX_sizecache        int32           `json:"-"`
@@ -521,7 +521,7 @@
 func (m *ServiceAvailability) String() string { return proto.CompactTextString(m) }
 func (*ServiceAvailability) ProtoMessage()    {}
 func (*ServiceAvailability) Descriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{2}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{2}
 }
 func (m *ServiceAvailability) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ServiceAvailability.Unmarshal(m, b)
@@ -597,15 +597,17 @@
 //   availability {start_sec: 9am, duration: 180 minutes, ...}
 //
 type Availability struct {
-	// An opaque string from an aggregator to identify a merchant.
-	MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId" json:"merchant_id,omitempty"`
+	// An opaque string from an aggregator to identify a merchant. (required)
+	MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId,proto3" json:"merchant_id,omitempty"`
 	// An opaque string from aggregator to identify a service of the
-	// merchant.
-	ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId" json:"service_id,omitempty"`
-	// Start time of this availability, using epoch time in seconds.
-	StartSec int64 `protobuf:"varint,3,opt,name=start_sec,json=startSec" json:"start_sec,omitempty"`
+	// merchant. (required)
+	ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"`
+	// Start time of this availability, using epoch time in seconds in UTC.
+	// (required)
+	StartSec int64 `protobuf:"varint,3,opt,name=start_sec,json=startSec,proto3" json:"start_sec,omitempty"`
 	// Duration of the service in seconds, e.g. 30 minutes for a chair massage.
-	DurationSec int64 `protobuf:"varint,4,opt,name=duration_sec,json=durationSec" json:"duration_sec,omitempty"`
+	// (required)
+	DurationSec int64 `protobuf:"varint,4,opt,name=duration_sec,json=durationSec,proto3" json:"duration_sec,omitempty"`
 	// Number of total spots and open spots of this availability.
 	// E.g. a Yoga class of 10 spots with 3 booked.
 	//   availability {spots_total: 10, spots_open: 7 ...}
@@ -616,11 +618,13 @@
 	//       below, these two fields will be inferred. A Recurrence
 	//       implies spots_total=1 and spots_open=1. A ScheduleException implies
 	//       spots_total=1 and spots_open=0.
-	SpotsTotal int64 `protobuf:"varint,5,opt,name=spots_total,json=spotsTotal" json:"spots_total,omitempty"`
-	SpotsOpen  int64 `protobuf:"varint,6,opt,name=spots_open,json=spotsOpen" json:"spots_open,omitempty"`
+	// (both required if recurrence not set)
+	SpotsTotal int64 `protobuf:"varint,5,opt,name=spots_total,json=spotsTotal,proto3" json:"spots_total,omitempty"`
+	SpotsOpen  int64 `protobuf:"varint,6,opt,name=spots_open,json=spotsOpen,proto3" json:"spots_open,omitempty"`
 	// An optional opaque string to identify this availability slot. If set, it
 	// will be included in the requests that book/update/cancel appointments.
-	AvailabilityTag string `protobuf:"bytes,7,opt,name=availability_tag,json=availabilityTag" json:"availability_tag,omitempty"`
+	// (optional)
+	AvailabilityTag string `protobuf:"bytes,7,opt,name=availability_tag,json=availabilityTag,proto3" json:"availability_tag,omitempty"`
 	// Optional resources used to disambiguate this availability slot from
 	// others when different staff, room, or party_size values are part
 	// of the service.
@@ -630,8 +634,9 @@
 	//                 spots_total: 10 spots_open: 7 }
 	//  availability { resources { staff_id: "2" staff_name: "John" }
 	//                 spots_total: 5 spots_open: 2 }
-	Resources *Resources `protobuf:"bytes,8,opt,name=resources" json:"resources,omitempty"`
-	// A list of ids referencing the payment options which can be used to pay
+	// (optional)
+	Resources *Resources `protobuf:"bytes,8,opt,name=resources,proto3" json:"resources,omitempty"`
+	// A list of IDs referencing the payment options which can be used to pay
 	// for this slot. The actual payment options are defined at the Merchant
 	// level, and can also be shared among multiple Merchants.
 	//
@@ -639,23 +644,72 @@
 	// message. Similarly payment_option_ids specified here do NOT have to be
 	// present in the service message, though must be defined at the
 	// Merchant level.
-	PaymentOptionId []string `protobuf:"bytes,9,rep,name=payment_option_id,json=paymentOptionId" json:"payment_option_id,omitempty"`
+	// Our current implementation limits the number of entries in this array to
+	// one element. Multiple payment_option_id are still allowed at the Service
+	// level, but an override at the availability slot level, is limited to a
+	// single payment_option_id. (optional)
+	PaymentOptionId []string `protobuf:"bytes,9,rep,name=payment_option_id,json=paymentOptionId,proto3" json:"payment_option_id,omitempty"`
 	// The recurrence information for the availability, representing more than one
 	// start time. A recurrence should contain appointments for one working day.
-	Recurrence *Availability_Recurrence `protobuf:"bytes,10,opt,name=recurrence" json:"recurrence,omitempty"`
-	// When this service cannot be scheduled. To limit the number of
-	// schedule_exception messages consider joining adjacent exceptions.
-	ScheduleException    []*Availability_ScheduleException `protobuf:"bytes,11,rep,name=schedule_exception,json=scheduleException" json:"schedule_exception,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                          `json:"-"`
-	XXX_unrecognized     []byte                            `json:"-"`
-	XXX_sizecache        int32                             `json:"-"`
+	// (optional)
+	Recurrence *Availability_Recurrence `protobuf:"bytes,10,opt,name=recurrence,proto3" json:"recurrence,omitempty"`
+	// Times when this service cannot be scheduled. To limit the number of
+	// schedule_exception messages, consider joining adjacent exceptions.
+	// (optional)
+	ScheduleException []*Availability_ScheduleException `protobuf:"bytes,11,rep,name=schedule_exception,json=scheduleException,proto3" json:"schedule_exception,omitempty"`
+	// Defines how a deposit may be charged to the user. Overrides the service
+	// deposit if one was specified. Setting this to an empty Deposit message
+	// removes any service-level deposit. (optional)
+	Deposit *Deposit `protobuf:"bytes,12,opt,name=deposit,proto3" json:"deposit,omitempty"`
+	// Defines a no show fee that may be charged to the user. Overrides the
+	// service no show fee if one was specified. Setting this to an empty
+	// NoShowFee message removes any service-level no show fee. (optional)
+	NoShowFee *NoShowFee `protobuf:"bytes,13,opt,name=no_show_fee,json=noShowFee,proto3" json:"no_show_fee,omitempty"`
+	// Indicates whether the user must provide a credit card in order to book this
+	// availability slot.
+	// If the value is not set, it is inherited from the service level if it's set
+	// there. (optional)
+	RequireCreditCard RequireCreditCard `protobuf:"varint,14,opt,name=require_credit_card,json=requireCreditCard,proto3,enum=maps.booking.feeds.RequireCreditCard" json:"require_credit_card,omitempty"`
+	// Indicates a list of supported ticket types for this availability slot. If
+	// unset, all ticket types in the parent service are available for this slot.
+	// Note that the values of this field must be defined in the parent service.
+	// Examples:
+	//
+	// * Service with four ticket types:
+	// TicketType {ticket_type_id: "adult_1" short_description: "Adult weekdays"}
+	// TicketType {ticket_type_id: "adult_2" short_description: "Adult weekends"}
+	// TicketType {ticket_type_id: "youth_1" short_description: "Youth weekdays"}
+	// TicketType {ticket_type_id: "youth_2" short_description: "Youth weekends"}
+	//
+	// To represent the inventory during the weekdays:
+	//   `availability {ticket_type_id: "adult_1" ticket_type_id: "youth_1"...}`.
+	// To represent the inventory during the holidays:
+	//   `availability {ticket_type_id: "adult_2" ticket_type_id: "youth_2"...}`.
+	//
+	// * Service with three ticket types:
+	// TicketType {ticket_type_id: "adult" short_description: "Adult"}
+	// TicketType {ticket_type_id: "youth" short_description: "Youth"}
+	// TicketType {ticket_type_id: "senior" short_description: "Senior"}
+	//
+	// To indicate that all three ticket types are available for this time
+	// slot, use either
+	//   `availability {ticket_type_id: "adult" ticket_type_id: "youth"
+	//   ticket_type_id: "senior" ...}`
+	// or
+	//   `availability {...}' (do not set ticket_type_id in this slot).
+	//
+	//  (optional)
+	TicketTypeId         []string `protobuf:"bytes,15,rep,name=ticket_type_id,json=ticketTypeId,proto3" json:"ticket_type_id,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *Availability) Reset()         { *m = Availability{} }
 func (m *Availability) String() string { return proto.CompactTextString(m) }
 func (*Availability) ProtoMessage()    {}
 func (*Availability) Descriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{3}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{3}
 }
 func (m *Availability) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Availability.Unmarshal(m, b)
@@ -752,6 +806,34 @@
 	return nil
 }
 
+func (m *Availability) GetDeposit() *Deposit {
+	if m != nil {
+		return m.Deposit
+	}
+	return nil
+}
+
+func (m *Availability) GetNoShowFee() *NoShowFee {
+	if m != nil {
+		return m.NoShowFee
+	}
+	return nil
+}
+
+func (m *Availability) GetRequireCreditCard() RequireCreditCard {
+	if m != nil {
+		return m.RequireCreditCard
+	}
+	return RequireCreditCard_REQUIRE_CREDIT_CARD_UNSPECIFIED
+}
+
+func (m *Availability) GetTicketTypeId() []string {
+	if m != nil {
+		return m.TicketTypeId
+	}
+	return nil
+}
+
 // Recurrence messages are optional, but allow for a more compact
 // representation of consistently repeating availability slots. They typically
 // represent a day's working schedule.
@@ -768,14 +850,15 @@
 //      merchants/services with regularly scheduled classes.
 type Availability_Recurrence struct {
 	// The inclusive maximum UTC timestamp the availability repeats until.
-	RepeatUntilSec int64 `protobuf:"varint,1,opt,name=repeat_until_sec,json=repeatUntilSec" json:"repeat_until_sec,omitempty"`
+	// (required)
+	RepeatUntilSec int64 `protobuf:"varint,1,opt,name=repeat_until_sec,json=repeatUntilSec,proto3" json:"repeat_until_sec,omitempty"`
 	// Defines the time between successive availability slots.
 	//
-	// E.g. An availability with a duration of 20 min, a repeat_every_sec of
+	// Example: An availability with a duration of 20 min, a repeat_every_sec of
 	// 30 min, a start_sec of 9:00am, and a repeat_until_sec of 11:00am will
 	// yield slots at 9-9:20am, 9:30-9:50am, 10-10:20am, 10:30-10:50am,
-	// 11-11:20am.
-	RepeatEverySec       int32    `protobuf:"varint,2,opt,name=repeat_every_sec,json=repeatEverySec" json:"repeat_every_sec,omitempty"`
+	// 11-11:20am. (required)
+	RepeatEverySec       int32    `protobuf:"varint,2,opt,name=repeat_every_sec,json=repeatEverySec,proto3" json:"repeat_every_sec,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -785,7 +868,7 @@
 func (m *Availability_Recurrence) String() string { return proto.CompactTextString(m) }
 func (*Availability_Recurrence) ProtoMessage()    {}
 func (*Availability_Recurrence) Descriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{3, 0}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{3, 0}
 }
 func (m *Availability_Recurrence) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Availability_Recurrence.Unmarshal(m, b)
@@ -819,13 +902,24 @@
 	return 0
 }
 
-// ScheduleException messages are used to represent booked/unavailable time
-// ranges within the work day. As time slots are booked, the list of
-// exceptions should grow to reflect the newly unavailable time ranges.
-// The recurrence itself shouldn't be modified.
+// ScheduleException messages represent booked/unavailable time ranges within
+// the workday, which are exceptions to the recurrence described above. As
+// time slots are booked, the list of exceptions should be updated to reflect
+// the newly unavailable time ranges. The recurrence itself shouldn't be
+// modified.
 type Availability_ScheduleException struct {
-	// The time range of the exception.
-	TimeRange            *TimeRange `protobuf:"bytes,1,opt,name=time_range,json=timeRange" json:"time_range,omitempty"`
+	// The time range of the exception. Any slots described by the recurrence
+	// which overlap this closed-open time range will be considered unavailable.
+	//
+	// Example: If the recurrence specifies a duration of 20 min, a
+	// repeat_every_sec of 30 min, a start_time of 9:00am, and a
+	// repeat_until_sec of 11:00am, then a ScheduleException with a time_range
+	// of 9:45am-11:00am would make unavailable the slots at 9:30-9:50am,
+	// 10-10:20am, and 10:30-10:50am.
+	//
+	// Note that because the time range is closed-open, the slot beginning at
+	// 11am slot would not be impacted.
+	TimeRange            *TimeRange `protobuf:"bytes,1,opt,name=time_range,json=timeRange,proto3" json:"time_range,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
 	XXX_unrecognized     []byte     `json:"-"`
 	XXX_sizecache        int32      `json:"-"`
@@ -835,7 +929,7 @@
 func (m *Availability_ScheduleException) String() string { return proto.CompactTextString(m) }
 func (*Availability_ScheduleException) ProtoMessage()    {}
 func (*Availability_ScheduleException) Descriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{3, 1}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{3, 1}
 }
 func (m *Availability_ScheduleException) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Availability_ScheduleException.Unmarshal(m, b)
@@ -872,28 +966,28 @@
 	// It also needs to be stable over time to allow correlation with past
 	// bookings.
 	// This field must be present if staff_name is present.
-	StaffId string `protobuf:"bytes,1,opt,name=staff_id,json=staffId" json:"staff_id,omitempty"`
+	StaffId string `protobuf:"bytes,1,opt,name=staff_id,json=staffId,proto3" json:"staff_id,omitempty"`
 	// Optional name of a staff member providing the service. This field will be
 	// displayed to users making a booking, and should be human readable, as
 	// opposed to an opaque identifier.
 	// This field must be present if staff_id is present.
-	StaffName string `protobuf:"bytes,2,opt,name=staff_name,json=staffName" json:"staff_name,omitempty"`
+	StaffName string `protobuf:"bytes,2,opt,name=staff_name,json=staffName,proto3" json:"staff_name,omitempty"`
 	// An optional id for the room the service is located in. This field
 	// identifies the room across all merchants, services, and availability
 	// records. It also needs to be stable over time to allow correlation with
 	// past bookings.
 	// This field must be present if room_name is present.
-	RoomId string `protobuf:"bytes,3,opt,name=room_id,json=roomId" json:"room_id,omitempty"`
+	RoomId string `protobuf:"bytes,3,opt,name=room_id,json=roomId,proto3" json:"room_id,omitempty"`
 	// An optional name for the room the service is located in. This
 	// field will be displayed to users making a booking, and should be human
 	// readable, as opposed to an opaque identifier.
 	// This field must be present if room_id is present.
-	RoomName string `protobuf:"bytes,4,opt,name=room_name,json=roomName" json:"room_name,omitempty"`
+	RoomName string `protobuf:"bytes,4,opt,name=room_name,json=roomName,proto3" json:"room_name,omitempty"`
 	// Applicable only for Dining: The party size which can be accommodated
 	// during this time slot. A restaurant can be associated with multiple Slots
 	// for the same time, each specifying a different party_size, if for instance
 	// 2, 3, or 4 people can be seated with a reservation.
-	PartySize            int32    `protobuf:"varint,5,opt,name=party_size,json=partySize" json:"party_size,omitempty"`
+	PartySize            int32    `protobuf:"varint,5,opt,name=party_size,json=partySize,proto3" json:"party_size,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -903,7 +997,7 @@
 func (m *Resources) String() string { return proto.CompactTextString(m) }
 func (*Resources) ProtoMessage()    {}
 func (*Resources) Descriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{4}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{4}
 }
 func (m *Resources) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Resources.Unmarshal(m, b)
@@ -959,8 +1053,8 @@
 }
 
 type TimeRange struct {
-	BeginSec             int64    `protobuf:"varint,1,opt,name=begin_sec,json=beginSec" json:"begin_sec,omitempty"`
-	EndSec               int64    `protobuf:"varint,2,opt,name=end_sec,json=endSec" json:"end_sec,omitempty"`
+	BeginSec             int64    `protobuf:"varint,1,opt,name=begin_sec,json=beginSec,proto3" json:"begin_sec,omitempty"`
+	EndSec               int64    `protobuf:"varint,2,opt,name=end_sec,json=endSec,proto3" json:"end_sec,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -970,7 +1064,7 @@
 func (m *TimeRange) String() string { return proto.CompactTextString(m) }
 func (*TimeRange) ProtoMessage()    {}
 func (*TimeRange) Descriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{5}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{5}
 }
 func (m *TimeRange) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_TimeRange.Unmarshal(m, b)
@@ -1005,8 +1099,8 @@
 }
 
 type ServiceFeed struct {
-	Metadata             *FeedMetadata `protobuf:"bytes,1,opt,name=metadata" json:"metadata,omitempty"`
-	Service              []*Service    `protobuf:"bytes,2,rep,name=service" json:"service,omitempty"`
+	Metadata             *FeedMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"`
+	Service              []*Service    `protobuf:"bytes,2,rep,name=service,proto3" json:"service,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
 	XXX_unrecognized     []byte        `json:"-"`
 	XXX_sizecache        int32         `json:"-"`
@@ -1016,7 +1110,7 @@
 func (m *ServiceFeed) String() string { return proto.CompactTextString(m) }
 func (*ServiceFeed) ProtoMessage()    {}
 func (*ServiceFeed) Descriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{6}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{6}
 }
 func (m *ServiceFeed) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ServiceFeed.Unmarshal(m, b)
@@ -1054,13 +1148,13 @@
 type Service struct {
 	// An opaque string from an aggregator partner which uniquely identifies a
 	// merchant. (required)
-	MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId" json:"merchant_id,omitempty"`
+	MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId,proto3" json:"merchant_id,omitempty"`
 	// An opaque string from an aggregator partner which uniquely identifies the
 	// service. (required)
-	ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId" json:"service_id,omitempty"`
+	ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"`
 	// The name of the service, suitable for display to users, e.g. "Men's
 	// haircut". (required)
-	Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"`
+	Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
 	// The description of the service, suitable for display to users.
 	//
 	// This field now supports both plain text and HTML-like formatting rules to
@@ -1129,49 +1223,49 @@
 	//   approach for you.
 	//
 	// (required)
-	Description string `protobuf:"bytes,4,opt,name=description" json:"description,omitempty"`
+	Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
 	// The price of the service. (optional, overridden when payment options or
 	// ticket types present)
-	Price *Price `protobuf:"bytes,5,opt,name=price" json:"price,omitempty"`
+	Price *Price `protobuf:"bytes,5,opt,name=price,proto3" json:"price,omitempty"`
 	// Rules to book/cancel an appointment. (optional)
-	Rules *SchedulingRules `protobuf:"bytes,6,opt,name=rules" json:"rules,omitempty"`
+	Rules *SchedulingRules `protobuf:"bytes,6,opt,name=rules,proto3" json:"rules,omitempty"`
 	// Intake forms to customize the service. (optional)
-	Form []*ServiceIntakeForm `protobuf:"bytes,7,rep,name=form" json:"form,omitempty"`
+	Form []*ServiceIntakeForm `protobuf:"bytes,7,rep,name=form,proto3" json:"form,omitempty"`
 	// Whether a prepayment is required, optional or not supported. (optional)
-	PrepaymentType Service_PrepaymentType `protobuf:"varint,8,opt,name=prepayment_type,json=prepaymentType,enum=maps.booking.feeds.Service_PrepaymentType" json:"prepayment_type,omitempty"`
+	PrepaymentType Service_PrepaymentType `protobuf:"varint,8,opt,name=prepayment_type,json=prepaymentType,proto3,enum=maps.booking.feeds.Service_PrepaymentType" json:"prepayment_type,omitempty"`
 	// The service's tax rate. If present this field overrides any tax_rate set at
 	// the merchant level. An empty message (i.e. tax_rate { }) will reset the
 	// applied tax rate to zero. (optional)
-	TaxRate *TaxRate `protobuf:"bytes,9,opt,name=tax_rate,json=taxRate" json:"tax_rate,omitempty"`
+	TaxRate *TaxRate `protobuf:"bytes,9,opt,name=tax_rate,json=taxRate,proto3" json:"tax_rate,omitempty"`
 	// A list of ids referencing the payment options which can be used to pay
 	// for this service. The actual payment options are defined at the Merchant
 	// level, and can also be shared among multiple Merchants. (optional)
-	PaymentOptionId []string `protobuf:"bytes,10,rep,name=payment_option_id,json=paymentOptionId" json:"payment_option_id,omitempty"`
+	PaymentOptionId []string `protobuf:"bytes,10,rep,name=payment_option_id,json=paymentOptionId,proto3" json:"payment_option_id,omitempty"`
 	// Defines how a deposit may be charged to the user. Can be overridden at the
 	// availability level. (optional)
-	Deposit *Deposit `protobuf:"bytes,11,opt,name=deposit" json:"deposit,omitempty"`
+	Deposit *Deposit `protobuf:"bytes,11,opt,name=deposit,proto3" json:"deposit,omitempty"`
 	// Defines a no show fee that may be charged to the user. Can be overridden
 	// at the availability level. (optional)
-	NoShowFee *NoShowFee `protobuf:"bytes,12,opt,name=no_show_fee,json=noShowFee" json:"no_show_fee,omitempty"`
+	NoShowFee *NoShowFee `protobuf:"bytes,12,opt,name=no_show_fee,json=noShowFee,proto3" json:"no_show_fee,omitempty"`
 	// Indicates whether the user must provide a credit card in order to book this
 	// service.
 	// This value can be overridden at the availability level. (optional)
-	RequireCreditCard RequireCreditCard `protobuf:"varint,13,opt,name=require_credit_card,json=requireCreditCard,enum=maps.booking.feeds.RequireCreditCard" json:"require_credit_card,omitempty"`
+	RequireCreditCard RequireCreditCard `protobuf:"varint,13,opt,name=require_credit_card,json=requireCreditCard,proto3,enum=maps.booking.feeds.RequireCreditCard" json:"require_credit_card,omitempty"`
 	// An action link related to this service.
-	ActionLink []*ActionLink `protobuf:"bytes,14,rep,name=action_link,json=actionLink" json:"action_link,omitempty"`
+	ActionLink []*ActionLink `protobuf:"bytes,14,rep,name=action_link,json=actionLink,proto3" json:"action_link,omitempty"`
 	// The predefined type of this service. Currently, only used with action_link.
-	Type Service_ServiceType `protobuf:"varint,15,opt,name=type,enum=maps.booking.feeds.Service_ServiceType" json:"type,omitempty"`
+	Type Service_ServiceType `protobuf:"varint,15,opt,name=type,proto3,enum=maps.booking.feeds.Service_ServiceType" json:"type,omitempty"`
 	// Types of tickets that can be booked/purchased for this service, if tickets
 	// are supported. (optional)
-	TicketType []*TicketType `protobuf:"bytes,16,rep,name=ticket_type,json=ticketType" json:"ticket_type,omitempty"`
+	TicketType []*TicketType `protobuf:"bytes,16,rep,name=ticket_type,json=ticketType,proto3" json:"ticket_type,omitempty"`
 	// Photos related to this service. Google will crawl these media to
 	// ensure that they are displayed to end-users in the most efficient way.
 	// (optional)
-	RelatedMedia []*RelatedMedia `protobuf:"bytes,17,rep,name=related_media,json=relatedMedia" json:"related_media,omitempty"`
+	RelatedMedia []*RelatedMedia `protobuf:"bytes,17,rep,name=related_media,json=relatedMedia,proto3" json:"related_media,omitempty"`
 	// Service attribute values that apply to this service (optional).
 	// Each Service may have zero or more values for each service attribute
 	// defined in the corresponding Merchant.
-	ServiceAttributeValueId []*ServiceAttributeValueId `protobuf:"bytes,18,rep,name=service_attribute_value_id,json=serviceAttributeValueId" json:"service_attribute_value_id,omitempty"`
+	ServiceAttributeValueId []*ServiceAttributeValueId `protobuf:"bytes,18,rep,name=service_attribute_value_id,json=serviceAttributeValueId,proto3" json:"service_attribute_value_id,omitempty"`
 	XXX_NoUnkeyedLiteral    struct{}                   `json:"-"`
 	XXX_unrecognized        []byte                     `json:"-"`
 	XXX_sizecache           int32                      `json:"-"`
@@ -1181,7 +1275,7 @@
 func (m *Service) String() string { return proto.CompactTextString(m) }
 func (*Service) ProtoMessage()    {}
 func (*Service) Descriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{7}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{7}
 }
 func (m *Service) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Service.Unmarshal(m, b)
@@ -1334,12 +1428,12 @@
 	// rounding. (e.g. For USD 2.5 cents rounded to 2 cents, 3.5 cents rounded to
 	// 4 cents, 0.5 cents rounded to 0 cents, 2.51 cents rounded to 3 cents).
 	// (required)
-	PriceMicros int64 `protobuf:"varint,1,opt,name=price_micros,json=priceMicros" json:"price_micros,omitempty"`
+	PriceMicros int64 `protobuf:"varint,1,opt,name=price_micros,json=priceMicros,proto3" json:"price_micros,omitempty"`
 	// The currency of the price that is defined in ISO 4217. (required)
-	CurrencyCode string `protobuf:"bytes,2,opt,name=currency_code,json=currencyCode" json:"currency_code,omitempty"`
+	CurrencyCode string `protobuf:"bytes,2,opt,name=currency_code,json=currencyCode,proto3" json:"currency_code,omitempty"`
 	// An optional and opaque string that identifies the pricing option that is
 	// associated with the extended price. (optional)
-	PricingOptionTag     string   `protobuf:"bytes,3,opt,name=pricing_option_tag,json=pricingOptionTag" json:"pricing_option_tag,omitempty"`
+	PricingOptionTag     string   `protobuf:"bytes,3,opt,name=pricing_option_tag,json=pricingOptionTag,proto3" json:"pricing_option_tag,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -1349,7 +1443,7 @@
 func (m *Price) String() string { return proto.CompactTextString(m) }
 func (*Price) ProtoMessage()    {}
 func (*Price) Descriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{8}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{8}
 }
 func (m *Price) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Price.Unmarshal(m, b)
@@ -1394,14 +1488,14 @@
 type SchedulingRules struct {
 	// The minimum advance notice in seconds required to book an appointment.
 	// (optional)
-	MinAdvanceBooking int64 `protobuf:"varint,1,opt,name=min_advance_booking,json=minAdvanceBooking" json:"min_advance_booking,omitempty"`
+	MinAdvanceBooking int64 `protobuf:"varint,1,opt,name=min_advance_booking,json=minAdvanceBooking,proto3" json:"min_advance_booking,omitempty"`
 	// The minimum advance notice in seconds required to cancel a booked
 	// appointment online. (optional)
-	MinAdvanceOnlineCanceling int64 `protobuf:"varint,2,opt,name=min_advance_online_canceling,json=minAdvanceOnlineCanceling" json:"min_advance_online_canceling,omitempty"`
+	MinAdvanceOnlineCanceling int64 `protobuf:"varint,2,opt,name=min_advance_online_canceling,json=minAdvanceOnlineCanceling,proto3" json:"min_advance_online_canceling,omitempty"`
 	// The fee for canceling within the minimum advance notice period.
-	LateCancellationFee *Price `protobuf:"bytes,3,opt,name=late_cancellation_fee,json=lateCancellationFee" json:"late_cancellation_fee,omitempty"` // Deprecated: Do not use.
+	LateCancellationFee *Price `protobuf:"bytes,3,opt,name=late_cancellation_fee,json=lateCancellationFee,proto3" json:"late_cancellation_fee,omitempty"` // Deprecated: Do not use.
 	// The fee for no-show without canceling.
-	NoshowFee            *Price   `protobuf:"bytes,4,opt,name=noshow_fee,json=noshowFee" json:"noshow_fee,omitempty"` // Deprecated: Do not use.
+	NoshowFee            *Price   `protobuf:"bytes,4,opt,name=noshow_fee,json=noshowFee,proto3" json:"noshow_fee,omitempty"` // Deprecated: Do not use.
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -1411,7 +1505,7 @@
 func (m *SchedulingRules) String() string { return proto.CompactTextString(m) }
 func (*SchedulingRules) ProtoMessage()    {}
 func (*SchedulingRules) Descriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{9}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{9}
 }
 func (m *SchedulingRules) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_SchedulingRules.Unmarshal(m, b)
@@ -1480,7 +1574,7 @@
 	// the smallest currency unit (for example, fractions of one cent) will be
 	// rounded using nearest even rounding. Taxes will be shown to the user as a
 	// separate line item. (required)
-	MicroPercent         int32    `protobuf:"varint,1,opt,name=micro_percent,json=microPercent" json:"micro_percent,omitempty"`
+	MicroPercent         int32    `protobuf:"varint,1,opt,name=micro_percent,json=microPercent,proto3" json:"micro_percent,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -1490,7 +1584,7 @@
 func (m *TaxRate) String() string { return proto.CompactTextString(m) }
 func (*TaxRate) ProtoMessage()    {}
 func (*TaxRate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{10}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{10}
 }
 func (m *TaxRate) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_TaxRate.Unmarshal(m, b)
@@ -1520,14 +1614,14 @@
 // Defines a field that is included in a ServiceIntakeForm.
 type ServiceIntakeFormField struct {
 	// The type of this field. (required)
-	Type ServiceIntakeFormField_FieldType `protobuf:"varint,1,opt,name=type,enum=maps.booking.feeds.ServiceIntakeFormField_FieldType" json:"type,omitempty"`
+	Type ServiceIntakeFormField_FieldType `protobuf:"varint,1,opt,name=type,proto3,enum=maps.booking.feeds.ServiceIntakeFormField_FieldType" json:"type,omitempty"`
 	// The text shown to the user for this field. (required)
-	Label string `protobuf:"bytes,2,opt,name=label" json:"label,omitempty"`
+	Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"`
 	// For MULTIPLE_CHOICE, CHECKBOXES, or DROPDOWN, the values to enumerate.
 	// (optional)
-	Value []string `protobuf:"bytes,3,rep,name=value" json:"value,omitempty"`
+	Value []string `protobuf:"bytes,3,rep,name=value,proto3" json:"value,omitempty"`
 	// Indicates whether an answer to this field is required by a user. (optional)
-	IsRequired           bool     `protobuf:"varint,4,opt,name=is_required,json=isRequired" json:"is_required,omitempty"`
+	IsRequired           bool     `protobuf:"varint,4,opt,name=is_required,json=isRequired,proto3" json:"is_required,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -1537,7 +1631,7 @@
 func (m *ServiceIntakeFormField) String() string { return proto.CompactTextString(m) }
 func (*ServiceIntakeFormField) ProtoMessage()    {}
 func (*ServiceIntakeFormField) Descriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{11}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{11}
 }
 func (m *ServiceIntakeFormField) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ServiceIntakeFormField.Unmarshal(m, b)
@@ -1588,13 +1682,13 @@
 // Defines an intake form that customizes the service provided by a merchant.
 type ServiceIntakeForm struct {
 	// Fields that will be displayed to the user. (required)
-	Field []*ServiceIntakeFormField `protobuf:"bytes,1,rep,name=field" json:"field,omitempty"`
+	Field []*ServiceIntakeFormField `protobuf:"bytes,1,rep,name=field,proto3" json:"field,omitempty"`
 	// If true, this form will be shown to first time customers.
 	// (one of first_time_customers or returning_customers required)
-	FirstTimeCustomers bool `protobuf:"varint,2,opt,name=first_time_customers,json=firstTimeCustomers" json:"first_time_customers,omitempty"`
+	FirstTimeCustomers bool `protobuf:"varint,2,opt,name=first_time_customers,json=firstTimeCustomers,proto3" json:"first_time_customers,omitempty"`
 	// If true, this form will be shown to repeat customers.
 	// (one of first_time_customers or returning_customers required)
-	ReturningCustomers   bool     `protobuf:"varint,3,opt,name=returning_customers,json=returningCustomers" json:"returning_customers,omitempty"`
+	ReturningCustomers   bool     `protobuf:"varint,3,opt,name=returning_customers,json=returningCustomers,proto3" json:"returning_customers,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -1604,7 +1698,7 @@
 func (m *ServiceIntakeForm) String() string { return proto.CompactTextString(m) }
 func (*ServiceIntakeForm) ProtoMessage()    {}
 func (*ServiceIntakeForm) Descriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{12}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{12}
 }
 func (m *ServiceIntakeForm) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ServiceIntakeForm.Unmarshal(m, b)
@@ -1649,11 +1743,11 @@
 // for.
 type Deposit struct {
 	// Deposit amount.
-	Deposit *Price `protobuf:"bytes,1,opt,name=deposit" json:"deposit,omitempty"`
+	Deposit *Price `protobuf:"bytes,1,opt,name=deposit,proto3" json:"deposit,omitempty"`
 	// Minimum advance cancellation for the deposit.
-	MinAdvanceCancellationSec int64 `protobuf:"varint,2,opt,name=min_advance_cancellation_sec,json=minAdvanceCancellationSec" json:"min_advance_cancellation_sec,omitempty"`
+	MinAdvanceCancellationSec int64 `protobuf:"varint,2,opt,name=min_advance_cancellation_sec,json=minAdvanceCancellationSec,proto3" json:"min_advance_cancellation_sec,omitempty"`
 	// Defines how the deposit is determined from the availability.
-	DepositType          PriceType `protobuf:"varint,3,opt,name=deposit_type,json=depositType,enum=maps.booking.feeds.PriceType" json:"deposit_type,omitempty"`
+	DepositType          PriceType `protobuf:"varint,3,opt,name=deposit_type,json=depositType,proto3,enum=maps.booking.feeds.PriceType" json:"deposit_type,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
 	XXX_unrecognized     []byte    `json:"-"`
 	XXX_sizecache        int32     `json:"-"`
@@ -1663,7 +1757,7 @@
 func (m *Deposit) String() string { return proto.CompactTextString(m) }
 func (*Deposit) ProtoMessage()    {}
 func (*Deposit) Descriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{13}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{13}
 }
 func (m *Deposit) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Deposit.Unmarshal(m, b)
@@ -1709,9 +1803,9 @@
 type NoShowFee struct {
 	// The amount the user may be charged if they do not show up for their
 	// reservation.
-	Fee *Price `protobuf:"bytes,1,opt,name=fee" json:"fee,omitempty"`
+	Fee *Price `protobuf:"bytes,1,opt,name=fee,proto3" json:"fee,omitempty"`
 	// Defines how the fee is determined from the availability.
-	FeeType              PriceType `protobuf:"varint,3,opt,name=fee_type,json=feeType,enum=maps.booking.feeds.PriceType" json:"fee_type,omitempty"`
+	FeeType              PriceType `protobuf:"varint,3,opt,name=fee_type,json=feeType,proto3,enum=maps.booking.feeds.PriceType" json:"fee_type,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
 	XXX_unrecognized     []byte    `json:"-"`
 	XXX_sizecache        int32     `json:"-"`
@@ -1721,7 +1815,7 @@
 func (m *NoShowFee) String() string { return proto.CompactTextString(m) }
 func (*NoShowFee) ProtoMessage()    {}
 func (*NoShowFee) Descriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{14}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{14}
 }
 func (m *NoShowFee) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_NoShowFee.Unmarshal(m, b)
@@ -1760,15 +1854,15 @@
 // performed on.
 type ActionLink struct {
 	// The entry point URL for this action link.
-	Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
+	Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
 	// The BCP-47 language tag identifying the language in which the content
 	// from this URI is available.
-	Language string `protobuf:"bytes,2,opt,name=language" json:"language,omitempty"`
+	Language string `protobuf:"bytes,2,opt,name=language,proto3" json:"language,omitempty"`
 	// ISO 3166-1 alpha-2 country code. Leave empty for unrestricted visibility.
-	RestrictedCountry []string `protobuf:"bytes,3,rep,name=restricted_country,json=restrictedCountry" json:"restricted_country,omitempty"`
+	RestrictedCountry []string `protobuf:"bytes,3,rep,name=restricted_country,json=restrictedCountry,proto3" json:"restricted_country,omitempty"`
 	// The platform that this action should be performed on. If this field is
 	// unset, ACTION_PLATFORM_WEB_APPLICATION will be used as fallback.
-	Platform             ActionPlatform `protobuf:"varint,4,opt,name=platform,enum=maps.booking.feeds.ActionPlatform" json:"platform,omitempty"`
+	Platform             ActionPlatform `protobuf:"varint,4,opt,name=platform,proto3,enum=maps.booking.feeds.ActionPlatform" json:"platform,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
 	XXX_unrecognized     []byte         `json:"-"`
 	XXX_sizecache        int32          `json:"-"`
@@ -1778,7 +1872,7 @@
 func (m *ActionLink) String() string { return proto.CompactTextString(m) }
 func (*ActionLink) ProtoMessage()    {}
 func (*ActionLink) Descriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{15}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{15}
 }
 func (m *ActionLink) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ActionLink.Unmarshal(m, b)
@@ -1833,12 +1927,12 @@
 type TicketType struct {
 	// The ticket id is used to differentiate among different ticket types of the
 	// same service, and is only expected to be unique within a service.
-	TicketTypeId string `protobuf:"bytes,1,opt,name=ticket_type_id,json=ticketTypeId" json:"ticket_type_id,omitempty"`
+	TicketTypeId string `protobuf:"bytes,1,opt,name=ticket_type_id,json=ticketTypeId,proto3" json:"ticket_type_id,omitempty"`
 	// This can be user visible, e.g., “adult”, "child", “veteran”, “Row J”, etc.
-	ShortDescription string `protobuf:"bytes,2,opt,name=short_description,json=shortDescription" json:"short_description,omitempty"`
+	ShortDescription string `protobuf:"bytes,2,opt,name=short_description,json=shortDescription,proto3" json:"short_description,omitempty"`
 	// The price of a single ticket of this type, exclusive of any taxes. The tax
 	// rate of Service is applied to its tickets.
-	Price                *Price   `protobuf:"bytes,3,opt,name=price" json:"price,omitempty"`
+	Price                *Price   `protobuf:"bytes,3,opt,name=price,proto3" json:"price,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -1848,7 +1942,7 @@
 func (m *TicketType) String() string { return proto.CompactTextString(m) }
 func (*TicketType) ProtoMessage()    {}
 func (*TicketType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{16}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{16}
 }
 func (m *TicketType) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_TicketType.Unmarshal(m, b)
@@ -1894,11 +1988,11 @@
 // ensure that they are displayed to end-users in the most efficient way.
 type RelatedMedia struct {
 	// URL of this media source.
-	Url string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
+	Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
 	// Type of this media source.
-	Type RelatedMedia_MediaType `protobuf:"varint,2,opt,name=type,enum=maps.booking.feeds.RelatedMedia_MediaType" json:"type,omitempty"`
+	Type RelatedMedia_MediaType `protobuf:"varint,2,opt,name=type,proto3,enum=maps.booking.feeds.RelatedMedia_MediaType" json:"type,omitempty"`
 	// Caption of the media, only plain text is supported. (optional)
-	Caption              string   `protobuf:"bytes,3,opt,name=caption" json:"caption,omitempty"`
+	Caption              string   `protobuf:"bytes,3,opt,name=caption,proto3" json:"caption,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -1908,7 +2002,7 @@
 func (m *RelatedMedia) String() string { return proto.CompactTextString(m) }
 func (*RelatedMedia) ProtoMessage()    {}
 func (*RelatedMedia) Descriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{17}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{17}
 }
 func (m *RelatedMedia) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_RelatedMedia.Unmarshal(m, b)
@@ -1954,10 +2048,10 @@
 type ServiceAttributeValueId struct {
 	// ID of an attribute as defined in Merchant.service_attribute, e.g.
 	// "service-type".
-	AttributeId string `protobuf:"bytes,1,opt,name=attribute_id,json=attributeId" json:"attribute_id,omitempty"`
+	AttributeId string `protobuf:"bytes,1,opt,name=attribute_id,json=attributeId,proto3" json:"attribute_id,omitempty"`
 	// ID of the value for this attribute, e.g. "haircut". Must match a value_id
 	// in the service attribute definition.
-	ValueId              string   `protobuf:"bytes,2,opt,name=value_id,json=valueId" json:"value_id,omitempty"`
+	ValueId              string   `protobuf:"bytes,2,opt,name=value_id,json=valueId,proto3" json:"value_id,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
 	XXX_sizecache        int32    `json:"-"`
@@ -1967,7 +2061,7 @@
 func (m *ServiceAttributeValueId) String() string { return proto.CompactTextString(m) }
 func (*ServiceAttributeValueId) ProtoMessage()    {}
 func (*ServiceAttributeValueId) Descriptor() ([]byte, []int) {
-	return fileDescriptor_feeds_0b3f05d3b8d0e7eb, []int{18}
+	return fileDescriptor_feeds_fc30b4ddff65807e, []int{18}
 }
 func (m *ServiceAttributeValueId) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ServiceAttributeValueId.Unmarshal(m, b)
@@ -2033,149 +2127,151 @@
 	proto.RegisterEnum("maps.booking.feeds.RelatedMedia_MediaType", RelatedMedia_MediaType_name, RelatedMedia_MediaType_value)
 }
 
-func init() { proto.RegisterFile("feeds.proto", fileDescriptor_feeds_0b3f05d3b8d0e7eb) }
+func init() { proto.RegisterFile("feeds.proto", fileDescriptor_feeds_fc30b4ddff65807e) }
 
-var fileDescriptor_feeds_0b3f05d3b8d0e7eb = []byte{
-	// 2250 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x4f, 0x73, 0xdb, 0xc6,
-	0x15, 0x0f, 0x48, 0xd1, 0x24, 0x1f, 0x69, 0x19, 0x5c, 0xc9, 0x12, 0x2c, 0xc7, 0xb1, 0x0a, 0x37,
-	0x53, 0x55, 0x4e, 0x99, 0x56, 0x4e, 0x32, 0xc9, 0xc4, 0x4d, 0x42, 0x81, 0x90, 0x85, 0x31, 0x45,
-	0xc0, 0x4b, 0xc8, 0x8e, 0x7b, 0xd9, 0x40, 0xc0, 0x4a, 0xc2, 0x98, 0x04, 0xd8, 0x05, 0xa8, 0x58,
-	0x99, 0xc9, 0xa5, 0xa7, 0x1e, 0x3b, 0xd3, 0x5b, 0x3f, 0x41, 0x3b, 0xf5, 0x07, 0xe8, 0xf4, 0xd6,
-	0x53, 0x3f, 0x4e, 0x3f, 0x40, 0x2f, 0x9d, 0x5d, 0x80, 0x00, 0x28, 0x41, 0x96, 0x3b, 0xed, 0x85,
-	0xc2, 0xbe, 0xf7, 0x7e, 0xfb, 0xe7, 0xbd, 0x7d, 0xbf, 0xf7, 0x56, 0xd0, 0x3a, 0xa6, 0xd4, 0x8b,
-	0xba, 0x53, 0x16, 0xc6, 0x21, 0x42, 0x13, 0x67, 0x1a, 0x75, 0x8f, 0xc2, 0xf0, 0x95, 0x1f, 0x9c,
-	0x74, 0x85, 0x46, 0xfd, 0x57, 0x05, 0xda, 0x7b, 0x94, 0x7a, 0x07, 0x34, 0x76, 0x3c, 0x27, 0x76,
-	0xd0, 0x04, 0xd6, 0xa6, 0x2c, 0x74, 0x69, 0x14, 0xf9, 0xc1, 0x09, 0xf1, 0x83, 0x28, 0x66, 0x33,
-	0x37, 0xf6, 0xc3, 0x40, 0x91, 0x36, 0xa5, 0xad, 0xe5, 0x9d, 0xcf, 0xba, 0x97, 0x67, 0xe9, 0x16,
-	0x67, 0xe8, 0x5a, 0x19, 0xdc, 0xc8, 0xd1, 0xf8, 0xf6, 0xb4, 0x4c, 0x8c, 0x7e, 0x02, 0xed, 0xe8,
-	0xd4, 0x61, 0x1e, 0x09, 0x66, 0x93, 0x23, 0xca, 0x94, 0xca, 0xa6, 0xb4, 0x55, 0xc3, 0x2d, 0x21,
-	0x1b, 0x0a, 0x11, 0x37, 0x89, 0xc3, 0xd8, 0x19, 0x13, 0x21, 0x8c, 0x94, 0x6a, 0x62, 0x22, 0x64,
-	0x23, 0x21, 0x42, 0xab, 0x50, 0x0b, 0xc2, 0xc0, 0xa5, 0x4a, 0x6d, 0x53, 0xda, 0x5a, 0xc2, 0xc9,
-	0x00, 0xfd, 0x0a, 0x56, 0x4f, 0x68, 0x40, 0x99, 0xc3, 0x57, 0x22, 0xb1, 0x3f, 0xa1, 0x51, 0xec,
-	0x4c, 0xa6, 0xca, 0xd2, 0xa6, 0xb4, 0x55, 0xc5, 0x2b, 0xb9, 0xce, 0x9e, 0xab, 0x54, 0x07, 0x6e,
-	0x97, 0x6e, 0x1f, 0xad, 0xc0, 0x2d, 0x0b, 0x9b, 0x9a, 0x3e, 0x1a, 0x91, 0xc3, 0xe1, 0xd3, 0xa1,
-	0xf9, 0x62, 0x28, 0xbf, 0x87, 0xd6, 0x61, 0x65, 0x2e, 0xec, 0x8d, 0x88, 0x66, 0x1e, 0x58, 0x03,
-	0xdd, 0xd6, 0x65, 0x09, 0x6d, 0xc0, 0x5a, 0x41, 0x61, 0x0c, 0x35, 0xac, 0x1f, 0xe8, 0x43, 0xbb,
-	0x37, 0x90, 0x2b, 0xea, 0x1b, 0x09, 0xe4, 0xde, 0x99, 0xe3, 0x8f, 0x9d, 0x23, 0x7f, 0xec, 0xc7,
-	0xe7, 0xdc, 0x77, 0xe8, 0x31, 0x34, 0x26, 0xa9, 0xff, 0x84, 0x9f, 0x5b, 0x3b, 0x9b, 0xd7, 0xf9,
-	0x19, 0x67, 0x08, 0xf4, 0x1b, 0x58, 0x8d, 0x28, 0x3b, 0xf3, 0x5d, 0x4a, 0x9c, 0xc2, 0xcc, 0x4a,
-	0x65, 0xb3, 0xba, 0xd5, 0xda, 0xf9, 0x59, 0xd9, 0x4c, 0xa3, 0xc4, 0xbe, 0xb8, 0x11, 0xbc, 0x12,
-	0x5d, 0x16, 0xaa, 0xff, 0xae, 0xc0, 0x4a, 0x89, 0x31, 0xfa, 0x1c, 0x94, 0x28, 0x76, 0x58, 0x9c,
-	0xfb, 0x95, 0x30, 0x1a, 0xc5, 0xcc, 0x77, 0x63, 0x71, 0x82, 0x2a, 0x5e, 0x13, 0xfa, 0xcc, 0xb7,
-	0x38, 0xd5, 0xa2, 0x4f, 0x60, 0x8d, 0x06, 0x5e, 0x19, 0xae, 0x22, 0x70, 0xab, 0x34, 0xf0, 0x2e,
-	0xa3, 0x7e, 0x09, 0xab, 0x13, 0xca, 0xdc, 0x53, 0x27, 0x88, 0x89, 0xef, 0xe5, 0x18, 0x7e, 0x1b,
-	0x9a, 0x18, 0xcd, 0x75, 0x86, 0x97, 0x21, 0xba, 0x30, 0x3f, 0xd0, 0x02, 0x60, 0x49, 0x00, 0x3a,
-	0xa9, 0xaa, 0x60, 0x3f, 0x00, 0xc4, 0x68, 0x14, 0xce, 0x98, 0x4b, 0xa3, 0xdc, 0xfc, 0x86, 0x88,
-	0xc6, 0xbd, 0x32, 0x1f, 0xe2, 0xb9, 0x35, 0xee, 0x64, 0xc0, 0x6c, 0xb6, 0x3e, 0xb4, 0x17, 0x62,
-	0x51, 0x13, 0xb1, 0x28, 0x8d, 0xea, 0x42, 0x10, 0x16, 0x50, 0xea, 0x3f, 0x6b, 0xd0, 0x5e, 0x70,
-	0xfb, 0x7d, 0x68, 0x15, 0xdc, 0x20, 0x3c, 0xdd, 0xc4, 0x90, 0x9f, 0x1e, 0xdd, 0x03, 0xc8, 0x4f,
-	0x2d, 0x3c, 0xda, 0xc4, 0xcd, 0xec, 0xb0, 0xe8, 0x2e, 0x34, 0x93, 0xb0, 0x45, 0xd4, 0x15, 0xbe,
-	0xab, 0xe2, 0x86, 0x10, 0x8c, 0xa8, 0xcb, 0x33, 0xcd, 0x9b, 0xa5, 0xe9, 0xc2, 0xf5, 0x49, 0xa2,
-	0xb4, 0xe6, 0x32, 0x6e, 0x72, 0x1f, 0x5a, 0xd1, 0x34, 0x8c, 0x23, 0x22, 0xd2, 0x4f, 0xe4, 0x5b,
-	0x15, 0x83, 0x10, 0xd9, 0x5c, 0x22, 0xd6, 0x17, 0x06, 0xe1, 0x94, 0x06, 0xc2, 0x7b, 0x55, 0xdc,
-	0x14, 0x12, 0x73, 0x4a, 0x03, 0xf4, 0x73, 0x90, 0x8b, 0x07, 0x24, 0xb1, 0x73, 0xa2, 0xd4, 0xc5,
-	0x26, 0x6f, 0x15, 0xe5, 0xb6, 0x73, 0x82, 0xbe, 0x84, 0x66, 0xe6, 0x56, 0xa5, 0xf1, 0x2e, 0x61,
-	0xc8, 0xed, 0xd1, 0x36, 0x74, 0xa6, 0xce, 0xf9, 0x84, 0x06, 0x31, 0x09, 0xa7, 0xe2, 0x40, 0xbe,
-	0xa7, 0x34, 0x37, 0xab, 0x7c, 0xa1, 0x54, 0x61, 0x0a, 0xb9, 0xe1, 0xa1, 0xa7, 0x00, 0x8c, 0xba,
-	0x33, 0xc6, 0x28, 0xa7, 0x10, 0x10, 0x2b, 0x3d, 0xbc, 0x2e, 0x50, 0x5d, 0x9c, 0x41, 0x70, 0x01,
-	0x8e, 0x1c, 0x40, 0x91, 0x7b, 0x4a, 0xbd, 0xd9, 0x98, 0x12, 0xfa, 0xda, 0xa5, 0x62, 0x11, 0xa5,
-	0x25, 0xa2, 0xbf, 0x73, 0xed, 0xa4, 0xa3, 0x14, 0xaa, 0xcf, 0x91, 0xb8, 0x13, 0x5d, 0x14, 0x6d,
-	0x7c, 0x07, 0x90, 0x2f, 0x8e, 0xb6, 0x40, 0x66, 0x74, 0x4a, 0x9d, 0x98, 0xcc, 0x82, 0xd8, 0x1f,
-	0x8b, 0xc0, 0x25, 0x09, 0xb8, 0x9c, 0xc8, 0x0f, 0xb9, 0x98, 0xc7, 0x2e, 0xb7, 0xa4, 0x67, 0x94,
-	0x9d, 0x0b, 0xcb, 0x84, 0x6f, 0x53, 0x4b, 0x9d, 0x8b, 0x47, 0xd4, 0xdd, 0x78, 0x06, 0x9d, 0x4b,
-	0x3b, 0x41, 0x8f, 0x01, 0x78, 0xce, 0x12, 0xe6, 0x04, 0x27, 0x34, 0x65, 0xa9, 0xd2, 0x80, 0xf0,
-	0xe4, 0xc5, 0xdc, 0x08, 0x37, 0xe3, 0xf9, 0xa7, 0xfa, 0x27, 0x09, 0x9a, 0x59, 0xa4, 0xd0, 0x1d,
-	0xe0, 0xb7, 0xee, 0xf8, 0x38, 0xbf, 0xc3, 0x75, 0x31, 0x4e, 0x2f, 0xb0, 0x50, 0x05, 0xce, 0x84,
-	0x66, 0x17, 0x98, 0x4b, 0x86, 0xce, 0x84, 0xa2, 0x75, 0xa8, 0xb3, 0x30, 0x9c, 0x70, 0x60, 0x92,
-	0xfa, 0x37, 0xf8, 0x30, 0xb9, 0xd9, 0x42, 0x21, 0x60, 0x49, 0x92, 0x37, 0xb8, 0x40, 0xa0, 0xee,
-	0x01, 0x4c, 0x1d, 0x16, 0x9f, 0x93, 0xc8, 0xff, 0x21, 0xa9, 0x12, 0x35, 0xdc, 0x14, 0x92, 0x91,
-	0xff, 0x03, 0x55, 0x7b, 0xd0, 0xcc, 0x36, 0xcd, 0x27, 0x3a, 0xa2, 0x27, 0x7e, 0x50, 0xf0, 0x64,
-	0x43, 0x08, 0xb8, 0x0f, 0xd7, 0xa1, 0xce, 0xc9, 0x6b, 0xee, 0xba, 0x2a, 0xbe, 0x41, 0x03, 0x6f,
-	0x44, 0x5d, 0xf5, 0x77, 0x12, 0xb4, 0x52, 0x9e, 0xfc, 0x3f, 0x30, 0xfa, 0xa7, 0x50, 0x4f, 0x73,
-	0x36, 0x25, 0xf1, 0xbb, 0x6f, 0x21, 0x71, 0x3c, 0xb7, 0x55, 0xdf, 0x00, 0xd4, 0x53, 0xe1, 0xff,
-	0xcc, 0x14, 0x08, 0x96, 0x84, 0x2b, 0x13, 0x2f, 0x8b, 0x6f, 0xb4, 0x09, 0x2d, 0x8f, 0x46, 0x2e,
-	0xf3, 0x93, 0x5b, 0x9d, 0x78, 0xb9, 0x28, 0x42, 0x1f, 0x43, 0x6d, 0xca, 0xfc, 0xb4, 0x12, 0xb7,
-	0x76, 0xee, 0x94, 0x6d, 0xdb, 0xe2, 0x06, 0x38, 0xb1, 0x43, 0x5f, 0x40, 0x8d, 0xcd, 0xc6, 0x34,
-	0x4a, 0x89, 0xf6, 0x41, 0xe9, 0x39, 0x93, 0xbb, 0xe8, 0x07, 0x27, 0x98, 0x9b, 0xe2, 0x04, 0x81,
-	0xbe, 0x80, 0xa5, 0xe3, 0x90, 0x4d, 0x94, 0xba, 0xf0, 0xd0, 0x87, 0x6f, 0xf1, 0x90, 0x11, 0xc4,
-	0xce, 0x2b, 0xba, 0x17, 0xb2, 0x09, 0x16, 0x10, 0x34, 0x82, 0x5b, 0x53, 0x46, 0xe7, 0x0c, 0x11,
-	0x9f, 0x4f, 0xa9, 0x60, 0x98, 0xe5, 0x9d, 0xed, 0xb7, 0xcc, 0xd2, 0xb5, 0x32, 0x88, 0x7d, 0x3e,
-	0xa5, 0x78, 0x79, 0xba, 0x30, 0x46, 0x9f, 0x41, 0x23, 0x76, 0x5e, 0x13, 0xe6, 0xc4, 0x54, 0x69,
-	0x8a, 0xd3, 0x94, 0x46, 0xcd, 0x76, 0x5e, 0x63, 0x27, 0xa6, 0xb8, 0x1e, 0x27, 0x1f, 0xe5, 0x5c,
-	0x05, 0xe5, 0x5c, 0xf5, 0x29, 0xd4, 0x3d, 0x3a, 0x0d, 0x23, 0x3f, 0x56, 0x5a, 0x57, 0x2f, 0xd1,
-	0x4f, 0x4c, 0xf0, 0xdc, 0x16, 0xfd, 0x1a, 0x5a, 0x41, 0x48, 0xa2, 0xd3, 0xf0, 0x7b, 0x72, 0x4c,
-	0xa9, 0xd2, 0xbe, 0x3a, 0x79, 0x87, 0xe1, 0xe8, 0x34, 0xfc, 0x7e, 0x8f, 0x52, 0xdc, 0x0c, 0xe6,
-	0x9f, 0xe8, 0x10, 0x56, 0x18, 0xfd, 0xed, 0xcc, 0x67, 0x94, 0xb8, 0x8c, 0x7a, 0x7e, 0x4c, 0x5c,
-	0x87, 0x79, 0xca, 0x4d, 0xe1, 0xb2, 0x0f, 0xcb, 0x49, 0x59, 0x98, 0x6b, 0xc2, 0x5a, 0x73, 0x98,
-	0xc7, 0x6b, 0xe4, 0x05, 0x11, 0xfa, 0x1a, 0x5a, 0x8e, 0x68, 0xaf, 0xc8, 0xd8, 0x0f, 0x5e, 0x29,
-	0xcb, 0x22, 0x8e, 0x1f, 0x94, 0x92, 0xa4, 0x30, 0x1b, 0xf8, 0xc1, 0x2b, 0x0c, 0x4e, 0xf6, 0x8d,
-	0xbe, 0x84, 0x25, 0x11, 0xbb, 0x5b, 0x62, 0x23, 0x6f, 0x6b, 0x74, 0xe6, 0x7f, 0x45, 0xe0, 0x04,
-	0x88, 0xaf, 0x1e, 0xfb, 0xee, 0x2b, 0x9a, 0xc6, 0x5f, 0xbe, 0x7a, 0x75, 0x5b, 0x98, 0x09, 0x28,
-	0xc4, 0xd9, 0x37, 0xd2, 0xe1, 0x26, 0xa3, 0x63, 0x27, 0xa6, 0x1e, 0x99, 0x50, 0xcf, 0x77, 0x94,
-	0xce, 0xd5, 0x35, 0x1e, 0x27, 0x86, 0x07, 0xdc, 0x0e, 0xb7, 0x59, 0x61, 0x84, 0x4e, 0x61, 0x23,
-	0xeb, 0xde, 0xe2, 0x98, 0xf9, 0x47, 0xb3, 0x98, 0x92, 0x33, 0x67, 0x3c, 0x13, 0x79, 0x89, 0xc4,
-	0x9c, 0x0f, 0xdf, 0xd6, 0xc3, 0xcd, 0x41, 0xcf, 0x39, 0xc6, 0xf0, 0xf0, 0x7a, 0x54, 0xae, 0x50,
-	0xbf, 0x83, 0xe5, 0xc5, 0x2b, 0x8c, 0xee, 0xc3, 0x5d, 0x0b, 0xeb, 0x56, 0xef, 0x25, 0x6f, 0x4f,
-	0x89, 0xfd, 0xd2, 0xd2, 0xc9, 0xe1, 0x70, 0x64, 0xe9, 0x9a, 0xb1, 0x67, 0xe8, 0x7d, 0xf9, 0x3d,
-	0xd4, 0x86, 0x06, 0xd6, 0x9f, 0x1d, 0x1a, 0x58, 0xef, 0xcb, 0x12, 0x1f, 0x99, 0x96, 0x6d, 0x98,
-	0x43, 0xde, 0xc9, 0xa2, 0x0e, 0xdc, 0x1c, 0x9a, 0x36, 0x19, 0x1d, 0x5a, 0x96, 0x89, 0x6d, 0xbd,
-	0x2f, 0x57, 0xd5, 0xbf, 0xe6, 0x2c, 0x28, 0xe6, 0x7f, 0x1f, 0x94, 0x91, 0x8e, 0x9f, 0x1b, 0x9a,
-	0x5e, 0x36, 0xf9, 0x03, 0xb8, 0xbf, 0xa0, 0xed, 0x1b, 0x43, 0x63, 0xf8, 0x84, 0x60, 0x9d, 0x4b,
-	0x7b, 0x7c, 0x1d, 0x59, 0x42, 0x1f, 0xc0, 0xc6, 0x82, 0xd1, 0x9e, 0x69, 0xf6, 0x89, 0x89, 0xfb,
-	0x3a, 0x36, 0x86, 0x4f, 0xe4, 0x0a, 0xba, 0x07, 0x77, 0x16, 0xf4, 0xfa, 0x73, 0x71, 0x14, 0x43,
-	0x7b, 0xaa, 0xdb, 0x72, 0x95, 0xb7, 0xe2, 0x0b, 0x6a, 0x1b, 0x1b, 0x16, 0xb1, 0xcd, 0x43, 0x2c,
-	0x2f, 0xa9, 0x3f, 0x42, 0x4d, 0x70, 0x11, 0x6f, 0x7c, 0x04, 0x1b, 0x91, 0x89, 0xef, 0xb2, 0x30,
-	0x4a, 0x59, 0xbf, 0x25, 0x64, 0x07, 0x42, 0x84, 0x1e, 0xc0, 0xcd, 0xb4, 0xe4, 0x9e, 0x13, 0x37,
-	0xf4, 0xe6, 0x95, 0xa9, 0x3d, 0x17, 0x6a, 0xa1, 0x47, 0xd1, 0x47, 0x80, 0x38, 0x86, 0xbf, 0x9c,
-	0xd2, 0x4c, 0xe6, 0xfd, 0x4d, 0xc2, 0xa0, 0x72, 0xaa, 0x49, 0x52, 0xd9, 0x76, 0x4e, 0xd4, 0x3f,
-	0x56, 0xe0, 0xd6, 0x05, 0x6a, 0xe3, 0x4d, 0xeb, 0xc4, 0x0f, 0x88, 0xe3, 0x9d, 0x39, 0x81, 0x4b,
-	0x49, 0x1a, 0xf0, 0x74, 0x43, 0x9d, 0x89, 0x1f, 0xf4, 0x12, 0xcd, 0x6e, 0xa2, 0x40, 0x5f, 0xc3,
-	0xfb, 0x45, 0xfb, 0x30, 0x18, 0xfb, 0x01, 0x25, 0x2e, 0x1f, 0xf0, 0x49, 0xd3, 0x22, 0x75, 0x27,
-	0x07, 0x9a, 0xc2, 0x42, 0x9b, 0x1b, 0xa0, 0x67, 0x70, 0x9b, 0xdf, 0xc5, 0x14, 0x32, 0x4e, 0x9a,
-	0x3f, 0xce, 0x11, 0xd5, 0x6b, 0x08, 0x7c, 0xb7, 0xa2, 0x48, 0x78, 0x85, 0x63, 0xb5, 0x02, 0x94,
-	0xb3, 0xc5, 0x63, 0x80, 0x20, 0xcc, 0xb8, 0x66, 0xe9, 0x5d, 0xe6, 0x69, 0x26, 0x80, 0x3d, 0x4a,
-	0xd5, 0x2e, 0xd4, 0x53, 0x86, 0xe4, 0x3e, 0x17, 0x01, 0x21, 0x53, 0xca, 0x5c, 0x1a, 0x24, 0x0f,
-	0x8b, 0x1a, 0x6e, 0x0b, 0xa1, 0x95, 0xc8, 0xd4, 0xbf, 0x57, 0x60, 0xed, 0x12, 0xcd, 0xef, 0xf9,
-	0x74, 0xec, 0xa1, 0xfd, 0x94, 0x1e, 0x92, 0x97, 0xeb, 0x27, 0xef, 0x54, 0x20, 0x04, 0xb2, 0x2b,
-	0x7e, 0x0b, 0x5c, 0xb1, 0x0a, 0xb5, 0xb1, 0x73, 0x44, 0xc7, 0x69, 0xd4, 0x93, 0x01, 0x97, 0x8a,
-	0x3c, 0x55, 0xaa, 0x82, 0xac, 0x93, 0x01, 0x2f, 0xbc, 0x3e, 0x7f, 0x40, 0x08, 0xb6, 0xf3, 0xc4,
-	0xf9, 0x1b, 0x18, 0xfc, 0x28, 0xa5, 0x44, 0x4f, 0xfd, 0xbd, 0x04, 0xcd, 0x6c, 0x01, 0x7e, 0x41,
-	0xf7, 0x0c, 0x7d, 0xd0, 0x2f, 0x4b, 0x10, 0x19, 0xda, 0xa3, 0x7d, 0x13, 0xdb, 0xa4, 0x37, 0x1c,
-	0xbd, 0xd0, 0xb1, 0x2c, 0xa1, 0x9b, 0xd0, 0xb4, 0x7a, 0xb8, 0xf7, 0x04, 0xf7, 0xac, 0x7d, 0xb9,
-	0xc2, 0x9f, 0xa5, 0x07, 0x87, 0x03, 0xdb, 0xb0, 0x06, 0x3a, 0xd1, 0xf6, 0x4d, 0x43, 0xd3, 0xe5,
-	0x2a, 0x5a, 0x06, 0xd0, 0xf6, 0x75, 0xed, 0xe9, 0xae, 0xf9, 0xad, 0x3e, 0x92, 0x97, 0x78, 0xd6,
-	0xf6, 0xb1, 0x69, 0xf5, 0xf9, 0xa3, 0xb5, 0x86, 0x5a, 0x50, 0xdf, 0x35, 0xcd, 0x81, 0xde, 0x1b,
-	0xca, 0x37, 0xd4, 0xbf, 0x49, 0xd0, 0xb9, 0xe4, 0x02, 0xf4, 0x0d, 0xd4, 0x8e, 0xf9, 0xfe, 0x14,
-	0x49, 0x90, 0xcf, 0xf6, 0xbb, 0x3b, 0x0e, 0x27, 0x40, 0xfe, 0x5a, 0x3b, 0xf6, 0x59, 0x94, 0xbc,
-	0x0e, 0x89, 0x3b, 0x8b, 0xe2, 0x70, 0x42, 0x59, 0x24, 0xdc, 0xd7, 0xc0, 0x48, 0xe8, 0x78, 0xc7,
-	0xa5, 0xcd, 0x35, 0xe8, 0x63, 0x5e, 0x62, 0xe2, 0x19, 0x0b, 0x78, 0xf2, 0xe4, 0x80, 0x6a, 0x02,
-	0xc8, 0x54, 0x19, 0x40, 0xfd, 0x87, 0x04, 0xf5, 0xb4, 0xce, 0xa1, 0x47, 0x79, 0x55, 0x94, 0xae,
-	0xeb, 0x3b, 0xb2, 0x9a, 0x78, 0x21, 0x75, 0x16, 0x12, 0x20, 0xef, 0xef, 0x0a, 0xa9, 0x53, 0xbc,
-	0xe7, 0xbc, 0x17, 0xfc, 0x06, 0xda, 0xe9, 0x5c, 0x49, 0x05, 0xa9, 0x8a, 0x6b, 0x76, 0xef, 0xca,
-	0xa5, 0xc5, 0x7d, 0x6a, 0xa5, 0x10, 0x3e, 0x50, 0x19, 0x34, 0xb3, 0x7a, 0x8b, 0x1e, 0x42, 0x95,
-	0xe7, 0xcb, 0xb5, 0x07, 0xe0, 0x56, 0xe8, 0x73, 0x68, 0x1c, 0x53, 0xfa, 0x5f, 0xac, 0x5b, 0x3f,
-	0xa6, 0xe2, 0x43, 0xfd, 0x8b, 0x04, 0x90, 0x97, 0x53, 0x24, 0x43, 0x75, 0xc6, 0xc6, 0x69, 0x7b,
-	0xc8, 0x3f, 0xd1, 0x06, 0x34, 0xc6, 0x4e, 0x70, 0x32, 0x73, 0x4e, 0xe6, 0x24, 0x97, 0x8d, 0xd1,
-	0x2f, 0xc4, 0x1b, 0x59, 0xbc, 0x70, 0xa9, 0x47, 0xdc, 0x70, 0x16, 0xc4, 0xec, 0x3c, 0xbd, 0xfe,
-	0x9d, 0x5c, 0xa3, 0x25, 0x0a, 0xf4, 0x15, 0x34, 0xa6, 0x63, 0x27, 0x16, 0x5d, 0xda, 0x92, 0xd8,
-	0xa5, 0x7a, 0x75, 0x75, 0xb7, 0x52, 0x4b, 0x9c, 0x61, 0xd4, 0x3f, 0x48, 0x00, 0x79, 0xf1, 0x45,
-	0x3f, 0x85, 0xe5, 0x42, 0xc5, 0xce, 0xbb, 0xda, 0x76, 0x5e, 0x94, 0x0d, 0x0f, 0x3d, 0x84, 0x4e,
-	0x74, 0x1a, 0xb2, 0x98, 0x14, 0x5b, 0xd5, 0xe4, 0x20, 0xb2, 0x50, 0xf4, 0xcb, 0xfa, 0xd5, 0xea,
-	0xbb, 0xf5, 0xab, 0xea, 0x9f, 0x25, 0x68, 0x17, 0x8b, 0x79, 0x89, 0x03, 0xbf, 0x4a, 0x69, 0xa7,
-	0x72, 0x75, 0x47, 0x59, 0x9c, 0xa1, 0x2b, 0x7e, 0x0b, 0x64, 0xa3, 0x40, 0xdd, 0x75, 0x92, 0x6d,
-	0x27, 0xa5, 0x63, 0x3e, 0x54, 0x3f, 0x82, 0x66, 0x66, 0x8c, 0x56, 0x41, 0x2e, 0xa1, 0x8c, 0x26,
-	0xd4, 0xac, 0x7d, 0xd3, 0x36, 0x65, 0x49, 0x7d, 0x01, 0xeb, 0x57, 0xb4, 0x08, 0xbc, 0xe0, 0xe5,
-	0xbd, 0x46, 0xe6, 0xc7, 0x56, 0x26, 0x33, 0x3c, 0xfe, 0x44, 0xcb, 0x9a, 0x90, 0xc4, 0x7b, 0xf5,
-	0xb3, 0x04, 0xbd, 0xfd, 0x08, 0x9a, 0xd9, 0xc5, 0x42, 0x6b, 0x80, 0xf6, 0x8c, 0x6f, 0xf5, 0x3e,
-	0xc1, 0x3d, 0x5b, 0x27, 0x7d, 0x7d, 0xaf, 0x77, 0x38, 0xb0, 0xe5, 0xf7, 0x38, 0x0b, 0x59, 0x3a,
-	0x26, 0x96, 0x8e, 0x47, 0xbc, 0x8e, 0x6f, 0xff, 0x08, 0x9d, 0x4b, 0x4d, 0x21, 0xef, 0x00, 0xd2,
-	0xf6, 0x82, 0x68, 0x58, 0xef, 0x1b, 0x36, 0xd1, 0x7a, 0xb8, 0x7f, 0xb9, 0x4d, 0x28, 0x33, 0xd2,
-	0xcc, 0x61, 0xdf, 0x48, 0x9b, 0x11, 0xd1, 0x26, 0x94, 0x19, 0xf5, 0x06, 0x2f, 0x7a, 0x2f, 0x47,
-	0x72, 0x65, 0xfb, 0x8d, 0x04, 0xcb, 0x8b, 0xf7, 0x8c, 0x37, 0x3f, 0x3d, 0x8d, 0x4f, 0x40, 0xac,
-	0x41, 0xcf, 0xde, 0x33, 0xf1, 0xc1, 0xe5, 0x85, 0x2f, 0x1a, 0xbc, 0xd0, 0x77, 0x49, 0xcf, 0xb2,
-	0x06, 0x86, 0x56, 0xe8, 0x4f, 0x2e, 0x1a, 0x1d, 0x98, 0xbb, 0xc6, 0x40, 0xe7, 0xb6, 0x72, 0x05,
-	0xdd, 0x85, 0xf5, 0x8b, 0xfa, 0xde, 0xb0, 0x8f, 0x4d, 0xa3, 0x2f, 0x57, 0xd1, 0x3a, 0xac, 0x5c,
-	0x54, 0x1a, 0xe6, 0x48, 0x5e, 0x3a, 0xba, 0x21, 0xfe, 0x65, 0xfb, 0xe8, 0x3f, 0x01, 0x00, 0x00,
-	0xff, 0xff, 0xcc, 0x96, 0x13, 0xc4, 0xc1, 0x15, 0x00, 0x00,
+var fileDescriptor_feeds_fc30b4ddff65807e = []byte{
+	// 2281 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xdf, 0x72, 0xdb, 0xc6,
+	0xd5, 0x0f, 0x48, 0xd1, 0x24, 0x0f, 0x29, 0x09, 0x5c, 0x29, 0x12, 0x2c, 0xc7, 0xb1, 0x3e, 0xf8,
+	0xcb, 0x54, 0x95, 0x53, 0xa6, 0x95, 0x93, 0x4c, 0x32, 0x71, 0x93, 0x50, 0x20, 0x64, 0x61, 0x4c,
+	0x11, 0xf0, 0x12, 0xb2, 0xe3, 0xde, 0x6c, 0x20, 0x60, 0x45, 0x61, 0x4c, 0x02, 0xec, 0x02, 0x54,
+	0xac, 0xcc, 0xe4, 0xa6, 0x57, 0xbd, 0xec, 0x4c, 0xef, 0xfa, 0x04, 0xed, 0xd4, 0x0f, 0xd0, 0xc9,
+	0x5d, 0x9f, 0xa8, 0x0f, 0xd0, 0x9b, 0xce, 0x2e, 0x40, 0x10, 0x94, 0x20, 0xcb, 0x6d, 0x72, 0x23,
+	0x61, 0xcf, 0x39, 0xbf, 0xfd, 0x73, 0xce, 0x9e, 0xdf, 0x39, 0x4b, 0x68, 0x9c, 0x52, 0xea, 0x45,
+	0xed, 0x09, 0x0b, 0xe3, 0x10, 0xa1, 0xb1, 0x33, 0x89, 0xda, 0x27, 0x61, 0xf8, 0xd2, 0x0f, 0x86,
+	0x6d, 0xa1, 0x51, 0xff, 0x55, 0x82, 0xe6, 0x01, 0xa5, 0xde, 0x11, 0x8d, 0x1d, 0xcf, 0x89, 0x1d,
+	0x34, 0x86, 0x8d, 0x09, 0x0b, 0x5d, 0x1a, 0x45, 0x7e, 0x30, 0x24, 0x7e, 0x10, 0xc5, 0x6c, 0xea,
+	0xc6, 0x7e, 0x18, 0x28, 0xd2, 0xb6, 0xb4, 0xb3, 0xb2, 0xf7, 0x69, 0xfb, 0xea, 0x2c, 0xed, 0xfc,
+	0x0c, 0x6d, 0x2b, 0x83, 0x1b, 0x73, 0x34, 0x7e, 0x77, 0x52, 0x24, 0x46, 0xff, 0x07, 0xcd, 0xe8,
+	0xcc, 0x61, 0x1e, 0x09, 0xa6, 0xe3, 0x13, 0xca, 0x94, 0xd2, 0xb6, 0xb4, 0x53, 0xc1, 0x0d, 0x21,
+	0xeb, 0x0b, 0x11, 0x37, 0x89, 0xc3, 0xd8, 0x19, 0x11, 0x21, 0x8c, 0x94, 0x72, 0x62, 0x22, 0x64,
+	0x03, 0x21, 0x42, 0xeb, 0x50, 0x09, 0xc2, 0xc0, 0xa5, 0x4a, 0x65, 0x5b, 0xda, 0x59, 0xc2, 0xc9,
+	0x00, 0xfd, 0x06, 0xd6, 0x87, 0x34, 0xa0, 0xcc, 0xe1, 0x2b, 0x91, 0xd8, 0x1f, 0xd3, 0x28, 0x76,
+	0xc6, 0x13, 0x65, 0x69, 0x5b, 0xda, 0x29, 0xe3, 0xb5, 0xb9, 0xce, 0x9e, 0xa9, 0x54, 0x07, 0xde,
+	0x2d, 0xdc, 0x3e, 0x5a, 0x83, 0x55, 0x0b, 0x9b, 0x9a, 0x3e, 0x18, 0x90, 0xe3, 0xfe, 0x93, 0xbe,
+	0xf9, 0xbc, 0x2f, 0xbf, 0x83, 0x36, 0x61, 0x6d, 0x26, 0xec, 0x0c, 0x88, 0x66, 0x1e, 0x59, 0x3d,
+	0xdd, 0xd6, 0x65, 0x09, 0x6d, 0xc1, 0x46, 0x4e, 0x61, 0xf4, 0x35, 0xac, 0x1f, 0xe9, 0x7d, 0xbb,
+	0xd3, 0x93, 0x4b, 0xea, 0x6b, 0x09, 0xe4, 0xce, 0xb9, 0xe3, 0x8f, 0x9c, 0x13, 0x7f, 0xe4, 0xc7,
+	0x17, 0xdc, 0x77, 0xe8, 0x11, 0xd4, 0xc6, 0xa9, 0xff, 0x84, 0x9f, 0x1b, 0x7b, 0xdb, 0x37, 0xf9,
+	0x19, 0x67, 0x08, 0xf4, 0x3b, 0x58, 0x8f, 0x28, 0x3b, 0xf7, 0x5d, 0x4a, 0x9c, 0xdc, 0xcc, 0x4a,
+	0x69, 0xbb, 0xbc, 0xd3, 0xd8, 0xfb, 0x45, 0xd1, 0x4c, 0x83, 0xc4, 0x3e, 0xbf, 0x11, 0xbc, 0x16,
+	0x5d, 0x15, 0xaa, 0xff, 0x2e, 0xc1, 0x5a, 0x81, 0x31, 0xfa, 0x0c, 0x94, 0x28, 0x76, 0x58, 0x3c,
+	0xf7, 0x2b, 0x61, 0x34, 0x8a, 0x99, 0xef, 0xc6, 0xe2, 0x04, 0x65, 0xbc, 0x21, 0xf4, 0x99, 0x6f,
+	0x71, 0xaa, 0x45, 0x1f, 0xc3, 0x06, 0x0d, 0xbc, 0x22, 0x5c, 0x49, 0xe0, 0xd6, 0x69, 0xe0, 0x5d,
+	0x45, 0xfd, 0x1a, 0xd6, 0xc7, 0x94, 0xb9, 0x67, 0x4e, 0x10, 0x13, 0xdf, 0x9b, 0x63, 0xf8, 0x6d,
+	0xa8, 0x63, 0x34, 0xd3, 0x19, 0x5e, 0x86, 0x68, 0xc3, 0xec, 0x40, 0x0b, 0x80, 0x25, 0x01, 0x68,
+	0xa5, 0xaa, 0x9c, 0x7d, 0x0f, 0x10, 0xa3, 0x51, 0x38, 0x65, 0x2e, 0x8d, 0xe6, 0xe6, 0xb7, 0x44,
+	0x34, 0xee, 0x16, 0xf9, 0x10, 0xcf, 0xac, 0x71, 0x2b, 0x03, 0x66, 0xb3, 0x75, 0xa1, 0xb9, 0x10,
+	0x8b, 0x8a, 0x88, 0x45, 0x61, 0x54, 0x17, 0x82, 0xb0, 0x80, 0x52, 0x7f, 0xac, 0x42, 0x73, 0xc1,
+	0xed, 0xf7, 0xa0, 0x91, 0x73, 0x83, 0xf0, 0x74, 0x1d, 0xc3, 0xfc, 0xf4, 0xe8, 0x2e, 0xc0, 0xfc,
+	0xd4, 0xc2, 0xa3, 0x75, 0x5c, 0xcf, 0x0e, 0x8b, 0xee, 0x40, 0x3d, 0x09, 0x5b, 0x44, 0x5d, 0xe1,
+	0xbb, 0x32, 0xae, 0x09, 0xc1, 0x80, 0xba, 0x3c, 0xd3, 0xbc, 0x69, 0x9a, 0x2e, 0x5c, 0x9f, 0x24,
+	0x4a, 0x63, 0x26, 0xe3, 0x26, 0xf7, 0xa0, 0x11, 0x4d, 0xc2, 0x38, 0x22, 0x22, 0xfd, 0x44, 0xbe,
+	0x95, 0x31, 0x08, 0x91, 0xcd, 0x25, 0x62, 0x7d, 0x61, 0x10, 0x4e, 0x68, 0x20, 0xbc, 0x57, 0xc6,
+	0x75, 0x21, 0x31, 0x27, 0x34, 0x40, 0xbf, 0x04, 0x39, 0x7f, 0x40, 0x12, 0x3b, 0x43, 0xa5, 0x2a,
+	0x36, 0xb9, 0x9a, 0x97, 0xdb, 0xce, 0x10, 0x7d, 0x01, 0xf5, 0xcc, 0xad, 0x4a, 0xed, 0x6d, 0xc2,
+	0x30, 0xb7, 0x47, 0xbb, 0xd0, 0x9a, 0x38, 0x17, 0x63, 0x1a, 0xc4, 0x24, 0x9c, 0x88, 0x03, 0xf9,
+	0x9e, 0x52, 0xdf, 0x2e, 0xf3, 0x85, 0x52, 0x85, 0x29, 0xe4, 0x86, 0x87, 0x9e, 0x00, 0x30, 0xea,
+	0x4e, 0x19, 0xa3, 0x9c, 0x42, 0x40, 0xac, 0xf4, 0xe0, 0xa6, 0x40, 0xb5, 0x71, 0x06, 0xc1, 0x39,
+	0x38, 0x72, 0x00, 0x45, 0xee, 0x19, 0xf5, 0xa6, 0x23, 0x4a, 0xe8, 0x2b, 0x97, 0x8a, 0x45, 0x94,
+	0x86, 0x88, 0xfe, 0xde, 0x8d, 0x93, 0x0e, 0x52, 0xa8, 0x3e, 0x43, 0xe2, 0x56, 0x74, 0x59, 0x84,
+	0x3e, 0x81, 0xaa, 0x47, 0x27, 0x61, 0xe4, 0xc7, 0x4a, 0x53, 0x6c, 0xf6, 0x4e, 0xd1, 0xbc, 0xdd,
+	0xc4, 0x04, 0xcf, 0x6c, 0xd1, 0x6f, 0xa1, 0x11, 0x84, 0x24, 0x3a, 0x0b, 0xbf, 0x23, 0xa7, 0x94,
+	0x2a, 0xcb, 0xd7, 0x7b, 0xb4, 0x1f, 0x0e, 0xce, 0xc2, 0xef, 0x0e, 0x28, 0xc5, 0xf5, 0x60, 0xf6,
+	0x89, 0x8e, 0x61, 0x8d, 0xd1, 0xdf, 0x4f, 0x7d, 0x46, 0x89, 0xcb, 0xa8, 0xe7, 0xc7, 0xc4, 0x75,
+	0x98, 0xa7, 0xac, 0x88, 0xaa, 0xf0, 0x41, 0x71, 0x60, 0x84, 0xb9, 0x26, 0xac, 0x35, 0x87, 0x79,
+	0x3c, 0x4f, 0x2e, 0x89, 0xd0, 0xff, 0xc3, 0x4a, 0xec, 0xbb, 0x2f, 0x69, 0x4c, 0xe2, 0x8b, 0x89,
+	0xb8, 0xb3, 0xab, 0x22, 0x4a, 0xcd, 0x44, 0x6a, 0x5f, 0x4c, 0xa8, 0xe1, 0x6d, 0x7d, 0x0b, 0x30,
+	0xf7, 0x37, 0xda, 0x01, 0x99, 0xd1, 0x09, 0x75, 0x62, 0x32, 0x0d, 0x62, 0x7f, 0x24, 0xee, 0x6a,
+	0xc2, 0x39, 0x2b, 0x89, 0xfc, 0x98, 0x8b, 0xf9, 0x75, 0x9d, 0x5b, 0xd2, 0x73, 0xca, 0x2e, 0x84,
+	0x65, 0x52, 0x62, 0x52, 0x4b, 0x9d, 0x8b, 0x07, 0xd4, 0xdd, 0x7a, 0x0a, 0xad, 0x2b, 0xce, 0x47,
+	0x8f, 0x00, 0x38, 0x4d, 0x11, 0xe6, 0x04, 0x43, 0x9a, 0x12, 0x73, 0xa1, 0xc7, 0x38, 0x5f, 0x61,
+	0x6e, 0x84, 0xeb, 0xf1, 0xec, 0x53, 0xfd, 0x8b, 0x04, 0xf5, 0xec, 0x72, 0xa2, 0xdb, 0xc0, 0x13,
+	0xed, 0xf4, 0x74, 0x9e, 0xb6, 0x55, 0x31, 0x4e, 0x73, 0x56, 0xa8, 0x02, 0x67, 0x4c, 0xb3, 0x9c,
+	0xe5, 0x92, 0xbe, 0x33, 0xa6, 0x68, 0x13, 0xaa, 0x2c, 0x0c, 0xc7, 0x1c, 0x98, 0xb0, 0xdd, 0x2d,
+	0x3e, 0x4c, 0x92, 0x59, 0x28, 0x04, 0x2c, 0xe1, 0xb5, 0x1a, 0x17, 0x08, 0xd4, 0x5d, 0x80, 0x89,
+	0xc3, 0xe2, 0x0b, 0x12, 0xf9, 0xdf, 0x27, 0x85, 0xb1, 0x82, 0xeb, 0x42, 0x32, 0xf0, 0xbf, 0xa7,
+	0x6a, 0x07, 0xea, 0xd9, 0xa6, 0xf9, 0x44, 0x27, 0x74, 0xe8, 0x07, 0x39, 0x4f, 0xd6, 0x84, 0x80,
+	0xfb, 0x70, 0x13, 0xaa, 0x9c, 0xaf, 0x67, 0xae, 0x2b, 0xe3, 0x5b, 0x34, 0xf0, 0x06, 0xd4, 0x55,
+	0xff, 0x20, 0x41, 0x23, 0x2d, 0x0d, 0x3f, 0x43, 0x11, 0xfb, 0x04, 0xaa, 0x29, 0x4d, 0xa5, 0x75,
+	0xeb, 0xce, 0x1b, 0xea, 0x16, 0x9e, 0xd9, 0xaa, 0xaf, 0x01, 0xaa, 0xa9, 0xf0, 0x27, 0x93, 0x23,
+	0x82, 0x25, 0xe1, 0xca, 0xc4, 0xcb, 0xe2, 0x1b, 0x6d, 0x43, 0xc3, 0xa3, 0x91, 0xcb, 0xfc, 0x24,
+	0x91, 0x13, 0x2f, 0xe7, 0x45, 0xe8, 0x23, 0xa8, 0x4c, 0x98, 0x9f, 0x36, 0x1f, 0x8d, 0xbd, 0xdb,
+	0x45, 0xdb, 0xb6, 0xb8, 0x01, 0x4e, 0xec, 0xd0, 0xe7, 0x50, 0x61, 0xd3, 0x11, 0x8d, 0xd2, 0xda,
+	0x72, 0xbf, 0xf0, 0x9c, 0xc9, 0x5d, 0xf4, 0x83, 0x21, 0xe6, 0xa6, 0x38, 0x41, 0xa0, 0xcf, 0x61,
+	0xe9, 0x34, 0x64, 0x63, 0xa5, 0x2a, 0x3c, 0xf4, 0xc1, 0x1b, 0x3c, 0x64, 0x04, 0xb1, 0xf3, 0x92,
+	0x1e, 0x84, 0x6c, 0x8c, 0x05, 0x04, 0x0d, 0x60, 0x75, 0xc2, 0xe8, 0x8c, 0x14, 0x79, 0xb2, 0x09,
+	0x52, 0x5d, 0xd9, 0xdb, 0x7d, 0xc3, 0x2c, 0x6d, 0x2b, 0x83, 0xf0, 0x4c, 0xc4, 0x2b, 0x93, 0x85,
+	0x31, 0xfa, 0x14, 0x6a, 0xb1, 0xf3, 0x8a, 0x30, 0x27, 0xa6, 0x4a, 0xfd, 0x7a, 0x2e, 0xb2, 0x9d,
+	0x57, 0xd8, 0x89, 0x29, 0xae, 0xc6, 0xc9, 0x47, 0x31, 0x3d, 0x43, 0x31, 0x3d, 0xe7, 0xe8, 0xae,
+	0xf1, 0xbf, 0xd3, 0x5d, 0xf3, 0xe7, 0xa1, 0xbb, 0xe5, 0x9f, 0x48, 0x77, 0x5f, 0x41, 0xc3, 0x11,
+	0x1d, 0x25, 0x19, 0xf9, 0xc1, 0x4b, 0x65, 0x45, 0xc4, 0xf1, 0xfd, 0xc2, 0xba, 0x20, 0xcc, 0x7a,
+	0x7e, 0xf0, 0x12, 0x83, 0x93, 0x7d, 0xa3, 0x2f, 0x60, 0x49, 0xc4, 0x6e, 0x55, 0x6c, 0xe4, 0x4d,
+	0xbd, 0xdd, 0xec, 0xbf, 0x08, 0x9c, 0x00, 0xf1, 0xd5, 0x73, 0x64, 0xab, 0xc8, 0xd7, 0xaf, 0x6e,
+	0x67, 0xec, 0x8b, 0x61, 0xce, 0xc4, 0x48, 0x87, 0x65, 0x46, 0x47, 0x4e, 0x4c, 0x3d, 0x32, 0xa6,
+	0x9e, 0xef, 0x28, 0xad, 0xeb, 0xdb, 0x1a, 0x9c, 0x18, 0x1e, 0x71, 0x3b, 0xdc, 0x64, 0xb9, 0x11,
+	0x3a, 0x83, 0xad, 0xac, 0x61, 0x8d, 0x63, 0xe6, 0x9f, 0x4c, 0x63, 0x4a, 0xce, 0x9d, 0xd1, 0x54,
+	0xe4, 0x25, 0x12, 0x73, 0x3e, 0x78, 0x53, 0xdb, 0x3a, 0x03, 0x3d, 0xe3, 0x18, 0xc3, 0xc3, 0x9b,
+	0x51, 0xb1, 0x42, 0xfd, 0x16, 0x56, 0x16, 0xaf, 0x30, 0xba, 0x07, 0x77, 0x2c, 0xac, 0x5b, 0x9d,
+	0x17, 0xbc, 0x23, 0x27, 0xf6, 0x0b, 0x4b, 0x27, 0xc7, 0xfd, 0x81, 0xa5, 0x6b, 0xc6, 0x81, 0xa1,
+	0x77, 0xe5, 0x77, 0x50, 0x13, 0x6a, 0x58, 0x7f, 0x7a, 0x6c, 0x60, 0xbd, 0x2b, 0x4b, 0x7c, 0x64,
+	0x5a, 0xb6, 0x61, 0xf6, 0x79, 0xf3, 0x8e, 0x5a, 0xb0, 0xdc, 0x37, 0x6d, 0x32, 0x38, 0xb6, 0x2c,
+	0x13, 0xdb, 0x7a, 0x57, 0x2e, 0xab, 0x7f, 0x9f, 0xb3, 0xa0, 0x98, 0xff, 0x3d, 0x50, 0x06, 0x3a,
+	0x7e, 0x66, 0x68, 0x7a, 0xd1, 0xe4, 0xf7, 0xe1, 0xde, 0x82, 0xb6, 0x6b, 0xf4, 0x8d, 0xfe, 0x63,
+	0x82, 0x75, 0x2e, 0xed, 0xf0, 0x75, 0x64, 0x09, 0xbd, 0x0f, 0x5b, 0x0b, 0x46, 0x07, 0xa6, 0xd9,
+	0x25, 0x26, 0xee, 0xea, 0xd8, 0xe8, 0x3f, 0x96, 0x4b, 0xe8, 0x2e, 0xdc, 0x5e, 0xd0, 0xeb, 0xcf,
+	0xc4, 0x51, 0x0c, 0xed, 0x89, 0x6e, 0xcb, 0x65, 0xfe, 0xfa, 0x58, 0x50, 0xdb, 0xd8, 0xb0, 0x88,
+	0x6d, 0x1e, 0x63, 0x79, 0x49, 0xfd, 0x01, 0x2a, 0x82, 0x8b, 0x78, 0xaf, 0x27, 0xd8, 0x88, 0x8c,
+	0x7d, 0x97, 0x85, 0x51, 0xca, 0xfa, 0x0d, 0x21, 0x3b, 0x12, 0x22, 0x74, 0x1f, 0x96, 0xd3, 0x92,
+	0x7b, 0x41, 0xdc, 0xd0, 0x9b, 0x55, 0xa6, 0xe6, 0x4c, 0xa8, 0x85, 0x1e, 0x45, 0x1f, 0x02, 0xe2,
+	0x18, 0xfe, 0x58, 0x4c, 0x33, 0x99, 0xb7, 0x74, 0x09, 0x83, 0xca, 0xa9, 0x26, 0x49, 0x65, 0xdb,
+	0x19, 0xaa, 0x7f, 0x2e, 0xc1, 0xea, 0x25, 0x6a, 0xe3, 0x7d, 0xfa, 0xd8, 0x0f, 0x88, 0xe3, 0x9d,
+	0x3b, 0x81, 0x4b, 0x49, 0x1a, 0xf0, 0x74, 0x43, 0xad, 0xb1, 0x1f, 0x74, 0x12, 0xcd, 0x7e, 0xa2,
+	0x40, 0x5f, 0xc1, 0x7b, 0x79, 0xfb, 0x30, 0x18, 0xf9, 0x01, 0x25, 0x2e, 0x1f, 0xf0, 0x49, 0xd3,
+	0x22, 0x75, 0x7b, 0x0e, 0x34, 0x85, 0x85, 0x36, 0x33, 0x40, 0x4f, 0xe1, 0x5d, 0x7e, 0x17, 0x53,
+	0xc8, 0x28, 0xe9, 0x77, 0x39, 0x47, 0x94, 0x6f, 0x20, 0xf0, 0xfd, 0x92, 0x22, 0xe1, 0x35, 0x8e,
+	0xd5, 0x72, 0x50, 0xce, 0x16, 0x8f, 0x00, 0x82, 0x30, 0xe3, 0x9a, 0xa5, 0xb7, 0x99, 0xa7, 0x9e,
+	0x00, 0x0e, 0x28, 0x55, 0xdb, 0x50, 0x4d, 0x19, 0x92, 0xfb, 0x5c, 0x04, 0x84, 0x4c, 0x28, 0x73,
+	0x69, 0x90, 0xbc, 0xa5, 0x2a, 0xb8, 0x29, 0x84, 0x56, 0x22, 0x53, 0x7f, 0x2c, 0xc1, 0xc6, 0x15,
+	0x9a, 0x3f, 0xf0, 0xe9, 0xc8, 0x43, 0x87, 0x29, 0x3d, 0x24, 0x8f, 0xf5, 0x8f, 0xdf, 0xaa, 0x40,
+	0x08, 0x64, 0x5b, 0xfc, 0xcd, 0x71, 0xc5, 0x3a, 0x54, 0x46, 0xce, 0x09, 0x1d, 0xa5, 0x51, 0x4f,
+	0x06, 0x5c, 0x2a, 0xf2, 0x54, 0x29, 0x0b, 0xb2, 0x4e, 0x06, 0xbc, 0xf0, 0xfa, 0xfc, 0xcd, 0x24,
+	0xd8, 0xce, 0x13, 0xe7, 0xaf, 0x61, 0xf0, 0xa3, 0x94, 0x12, 0x3d, 0xf5, 0x8f, 0x12, 0xd4, 0xb3,
+	0x05, 0xf8, 0x05, 0x3d, 0x30, 0xf4, 0x5e, 0xb7, 0x28, 0x41, 0x64, 0x68, 0x0e, 0x0e, 0x4d, 0x6c,
+	0x93, 0x4e, 0x7f, 0xf0, 0x5c, 0xc7, 0xb2, 0x84, 0x96, 0xa1, 0x6e, 0x75, 0x70, 0xe7, 0x31, 0xee,
+	0x58, 0x87, 0x72, 0x89, 0xbf, 0xc4, 0x8f, 0x8e, 0x7b, 0xb6, 0x61, 0xf5, 0x74, 0xa2, 0x1d, 0x9a,
+	0x86, 0xa6, 0xcb, 0x65, 0xb4, 0x02, 0xa0, 0x1d, 0xea, 0xda, 0x93, 0x7d, 0xf3, 0x1b, 0x7d, 0x20,
+	0x2f, 0xf1, 0xac, 0xed, 0x62, 0xd3, 0xea, 0xf2, 0x77, 0x7a, 0x05, 0x35, 0xa0, 0xba, 0x6f, 0x9a,
+	0x3d, 0xbd, 0xd3, 0x97, 0x6f, 0xa9, 0xff, 0x90, 0xa0, 0x75, 0xc5, 0x05, 0xe8, 0x6b, 0xa8, 0x9c,
+	0xf2, 0xfd, 0x29, 0x92, 0x20, 0x9f, 0xdd, 0xb7, 0x77, 0x1c, 0x4e, 0x80, 0xfc, 0x81, 0x7a, 0xea,
+	0xb3, 0x28, 0x79, 0x10, 0x13, 0x77, 0x1a, 0xc5, 0xe1, 0x98, 0xb2, 0x48, 0xb8, 0xaf, 0x86, 0x91,
+	0xd0, 0xf1, 0x8e, 0x4b, 0x9b, 0x69, 0xd0, 0x47, 0xbc, 0xc4, 0xc4, 0x53, 0x16, 0xf0, 0xe4, 0x99,
+	0x03, 0xca, 0x09, 0x20, 0x53, 0x65, 0x00, 0xf5, 0x9f, 0x12, 0x54, 0xd3, 0x3a, 0x87, 0x1e, 0xce,
+	0xab, 0xa2, 0x74, 0x53, 0xdf, 0x91, 0xd5, 0xc4, 0x4b, 0xa9, 0xb3, 0x90, 0x00, 0xf3, 0xfe, 0x2e,
+	0x97, 0x3a, 0xf9, 0x7b, 0xce, 0x7b, 0xc1, 0xaf, 0xa1, 0x99, 0xce, 0x95, 0x54, 0x90, 0xb2, 0xb8,
+	0x66, 0x77, 0xaf, 0x5d, 0x5a, 0xdc, 0xa7, 0x46, 0x0a, 0xe1, 0x03, 0x95, 0x41, 0x3d, 0xab, 0xb7,
+	0xe8, 0x01, 0x94, 0x79, 0xbe, 0xdc, 0x78, 0x00, 0x6e, 0x85, 0x3e, 0x83, 0xda, 0x29, 0xa5, 0xff,
+	0xc5, 0xba, 0xd5, 0x53, 0x2a, 0x3e, 0xd4, 0xbf, 0x49, 0x00, 0xf3, 0x72, 0x8a, 0x64, 0x28, 0x4f,
+	0xd9, 0x28, 0x6d, 0x0f, 0xf9, 0x27, 0xda, 0x82, 0xda, 0xc8, 0x09, 0x86, 0x53, 0x67, 0x38, 0x23,
+	0xb9, 0x6c, 0x8c, 0x7e, 0x25, 0x7e, 0x16, 0x10, 0x8f, 0x7a, 0xea, 0x11, 0x37, 0x9c, 0x06, 0x31,
+	0xbb, 0x48, 0xaf, 0x7f, 0x6b, 0xae, 0xd1, 0x12, 0x05, 0xfa, 0x12, 0x6a, 0x93, 0x91, 0x13, 0x8b,
+	0x2e, 0x6d, 0x49, 0xec, 0x52, 0xbd, 0xbe, 0xba, 0x5b, 0xa9, 0x25, 0xce, 0x30, 0xea, 0x9f, 0x24,
+	0x80, 0x79, 0xf1, 0x2d, 0x78, 0x1e, 0x25, 0xdb, 0x5e, 0x78, 0x1e, 0xa1, 0x07, 0xd0, 0x8a, 0xce,
+	0x42, 0x16, 0x93, 0x7c, 0xab, 0x9a, 0x1c, 0x44, 0x16, 0x8a, 0x6e, 0x51, 0xbf, 0x5a, 0x7e, 0xbb,
+	0x7e, 0x55, 0xfd, 0xab, 0x04, 0xcd, 0x7c, 0x31, 0x2f, 0x70, 0xe0, 0x97, 0x29, 0xed, 0x94, 0xae,
+	0xef, 0x28, 0xf3, 0x33, 0xb4, 0xc5, 0xdf, 0x1c, 0xd9, 0x28, 0x50, 0x75, 0x9d, 0x64, 0xdb, 0x49,
+	0xe9, 0x98, 0x0d, 0xd5, 0x0f, 0xa1, 0x9e, 0x19, 0xa3, 0x75, 0x90, 0x0b, 0x28, 0xa3, 0x0e, 0x15,
+	0xeb, 0xd0, 0xb4, 0x4d, 0x59, 0x52, 0x9f, 0xc3, 0xe6, 0x35, 0x2d, 0x02, 0x2f, 0x78, 0xf3, 0x5e,
+	0x23, 0xf3, 0x63, 0x23, 0x93, 0x19, 0x1e, 0x7f, 0xa2, 0x65, 0x4d, 0x48, 0xe2, 0xbd, 0xea, 0x79,
+	0x82, 0xde, 0x7d, 0x08, 0xf5, 0xec, 0x62, 0xa1, 0x0d, 0x40, 0x07, 0xc6, 0x37, 0x7a, 0x97, 0xe0,
+	0x8e, 0xad, 0x93, 0xae, 0x7e, 0xd0, 0x39, 0xee, 0xd9, 0xf2, 0x3b, 0x9c, 0x85, 0x2c, 0x1d, 0x13,
+	0x4b, 0xc7, 0x03, 0x5e, 0xc7, 0x77, 0x7f, 0x80, 0xd6, 0x95, 0xa6, 0x90, 0x77, 0x00, 0x69, 0x7b,
+	0x41, 0x34, 0xac, 0x77, 0x0d, 0x9b, 0x68, 0x1d, 0xdc, 0xbd, 0xda, 0x26, 0x14, 0x19, 0x69, 0x66,
+	0xbf, 0x6b, 0xa4, 0xcd, 0x88, 0x68, 0x13, 0x8a, 0x8c, 0x3a, 0xbd, 0xe7, 0x9d, 0x17, 0x03, 0xb9,
+	0xb4, 0xfb, 0x5a, 0x82, 0x95, 0xc5, 0x7b, 0xc6, 0x9b, 0x9f, 0x8e, 0xc6, 0x27, 0x20, 0x56, 0xaf,
+	0x63, 0x1f, 0x98, 0xf8, 0xe8, 0xea, 0xc2, 0x97, 0x0d, 0x9e, 0xeb, 0xfb, 0xa4, 0x63, 0x59, 0x3d,
+	0x43, 0xcb, 0xf5, 0x27, 0x97, 0x8d, 0x8e, 0xcc, 0x7d, 0xa3, 0xa7, 0x73, 0x5b, 0xb9, 0x84, 0xee,
+	0xc0, 0xe6, 0x65, 0x7d, 0xa7, 0xdf, 0xc5, 0xa6, 0xd1, 0x95, 0xcb, 0x68, 0x13, 0xd6, 0x2e, 0x2b,
+	0x0d, 0x73, 0x20, 0x2f, 0x9d, 0xdc, 0x12, 0xbf, 0x52, 0x3f, 0xfc, 0x4f, 0x00, 0x00, 0x00, 0xff,
+	0xff, 0x1b, 0x9f, 0x88, 0x50, 0xb4, 0x16, 0x00, 0x00,
 }
diff --git a/feeds/feeds.proto b/feeds/feeds.proto
index 55e946e..d714f46 100644
--- a/feeds/feeds.proto
+++ b/feeds/feeds.proto
@@ -117,14 +117,16 @@
 //   availability {start_sec: 9am, duration: 180 minutes, ...}
 //
 message Availability {
-  // An opaque string from an aggregator to identify a merchant.
+  // An opaque string from an aggregator to identify a merchant. (required)
   string merchant_id = 1;
   // An opaque string from aggregator to identify a service of the
-  // merchant.
+  // merchant. (required)
   string service_id = 2;
-  // Start time of this availability, using epoch time in seconds.
+  // Start time of this availability, using epoch time in seconds in UTC.
+  //(required)
   int64 start_sec = 3;
   // Duration of the service in seconds, e.g. 30 minutes for a chair massage.
+  // (required)
   int64 duration_sec = 4;
   // Number of total spots and open spots of this availability.
   // E.g. a Yoga class of 10 spots with 3 booked.
@@ -136,10 +138,12 @@
   //       below, these two fields will be inferred. A Recurrence
   //       implies spots_total=1 and spots_open=1. A ScheduleException implies
   //       spots_total=1 and spots_open=0.
+  // (both required if recurrence not set)
   int64 spots_total = 5;
   int64 spots_open = 6;
   // An optional opaque string to identify this availability slot. If set, it
   // will be included in the requests that book/update/cancel appointments.
+  // (optional)
   string availability_tag = 7;
 
   // Optional resources used to disambiguate this availability slot from
@@ -151,9 +155,10 @@
   //                 spots_total: 10 spots_open: 7 }
   //  availability { resources { staff_id: "2" staff_name: "John" }
   //                 spots_total: 5 spots_open: 2 }
+  // (optional)
   Resources resources = 8;
 
-  // A list of ids referencing the payment options which can be used to pay
+  // A list of IDs referencing the payment options which can be used to pay
   // for this slot. The actual payment options are defined at the Merchant
   // level, and can also be shared among multiple Merchants.
   //
@@ -161,6 +166,10 @@
   // message. Similarly payment_option_ids specified here do NOT have to be
   // present in the service message, though must be defined at the
   // Merchant level.
+  // Our current implementation limits the number of entries in this array to
+  // one element. Multiple payment_option_id are still allowed at the Service
+  // level, but an override at the availability slot level, is limited to a
+  // single payment_option_id. (optional)
   repeated string payment_option_id = 9;
 
   // Recurrence messages are optional, but allow for a more compact
@@ -179,30 +188,91 @@
   //      merchants/services with regularly scheduled classes.
   message Recurrence {
     // The inclusive maximum UTC timestamp the availability repeats until.
+    // (required)
     int64 repeat_until_sec = 1;
     // Defines the time between successive availability slots.
     //
-    // E.g. An availability with a duration of 20 min, a repeat_every_sec of
+    // Example: An availability with a duration of 20 min, a repeat_every_sec of
     // 30 min, a start_sec of 9:00am, and a repeat_until_sec of 11:00am will
     // yield slots at 9-9:20am, 9:30-9:50am, 10-10:20am, 10:30-10:50am,
-    // 11-11:20am.
+    // 11-11:20am. (required)
     int32 repeat_every_sec = 2;
   }
   // The recurrence information for the availability, representing more than one
   // start time. A recurrence should contain appointments for one working day.
+  // (optional)
   Recurrence recurrence = 10;
 
-  // ScheduleException messages are used to represent booked/unavailable time
-  // ranges within the work day. As time slots are booked, the list of
-  // exceptions should grow to reflect the newly unavailable time ranges.
-  // The recurrence itself shouldn't be modified.
+  // ScheduleException messages represent booked/unavailable time ranges within
+  // the workday, which are exceptions to the recurrence described above. As
+  // time slots are booked, the list of exceptions should be updated to reflect
+  // the newly unavailable time ranges. The recurrence itself shouldn't be
+  // modified.
   message ScheduleException {
-    // The time range of the exception.
+    // The time range of the exception. Any slots described by the recurrence
+    // which overlap this closed-open time range will be considered unavailable.
+    //
+    // Example: If the recurrence specifies a duration of 20 min, a
+    // repeat_every_sec of 30 min, a start_time of 9:00am, and a
+    // repeat_until_sec of 11:00am, then a ScheduleException with a time_range
+    // of 9:45am-11:00am would make unavailable the slots at 9:30-9:50am,
+    // 10-10:20am, and 10:30-10:50am.
+    //
+    // Note that because the time range is closed-open, the slot beginning at
+    // 11am slot would not be impacted.
     TimeRange time_range = 1;
   }
-  // When this service cannot be scheduled. To limit the number of
-  // schedule_exception messages consider joining adjacent exceptions.
+  // Times when this service cannot be scheduled. To limit the number of
+  // schedule_exception messages, consider joining adjacent exceptions.
+  // (optional)
   repeated ScheduleException schedule_exception = 11;
+
+  // Defines how a deposit may be charged to the user. Overrides the service
+  // deposit if one was specified. Setting this to an empty Deposit message
+  // removes any service-level deposit. (optional)
+  Deposit deposit = 12;
+
+  // Defines a no show fee that may be charged to the user. Overrides the
+  // service no show fee if one was specified. Setting this to an empty
+  // NoShowFee message removes any service-level no show fee. (optional)
+  NoShowFee no_show_fee = 13;
+
+  // Indicates whether the user must provide a credit card in order to book this
+  // availability slot.
+  // If the value is not set, it is inherited from the service level if it's set
+  // there. (optional)
+  RequireCreditCard require_credit_card = 14;
+
+  // Indicates a list of supported ticket types for this availability slot. If
+  // unset, all ticket types in the parent service are available for this slot.
+  // Note that the values of this field must be defined in the parent service.
+  // Examples:
+  //
+  // * Service with four ticket types:
+  // TicketType {ticket_type_id: "adult_1" short_description: "Adult weekdays"}
+  // TicketType {ticket_type_id: "adult_2" short_description: "Adult weekends"}
+  // TicketType {ticket_type_id: "youth_1" short_description: "Youth weekdays"}
+  // TicketType {ticket_type_id: "youth_2" short_description: "Youth weekends"}
+  //
+  // To represent the inventory during the weekdays:
+  //   `availability {ticket_type_id: "adult_1" ticket_type_id: "youth_1"...}`.
+  // To represent the inventory during the holidays:
+  //   `availability {ticket_type_id: "adult_2" ticket_type_id: "youth_2"...}`.
+  //
+  // * Service with three ticket types:
+  // TicketType {ticket_type_id: "adult" short_description: "Adult"}
+  // TicketType {ticket_type_id: "youth" short_description: "Youth"}
+  // TicketType {ticket_type_id: "senior" short_description: "Senior"}
+  //
+  // To indicate that all three ticket types are available for this time
+  // slot, use either
+  //   `availability {ticket_type_id: "adult" ticket_type_id: "youth"
+  //   ticket_type_id: "senior" ...}`
+  // or
+  //   `availability {...}' (do not set ticket_type_id in this slot).
+  //
+  //  (optional)
+  repeated string ticket_type_id = 15;
 }
 
 // A resource is used to disambiguate availability slots from one another when
diff --git a/utils/utils.go b/utils/utils.go
index 6e4d65d..c95e198 100644
--- a/utils/utils.go
+++ b/utils/utils.go
@@ -77,30 +77,57 @@
 }
 
 func buildLineItem(availability *fpb.Availability, tickets []*fpb.TicketType) *mpb.LineItem {
+	// If no ticket types return nil as there is nothing to build.
+	if len(tickets) == 0 {
+		return nil
+	}
+
+	// Treated as a set.
+	ticketMap := make(map[string]*fpb.TicketType)
+	for _, ticketType := range tickets {
+		if _, ok := ticketMap[ticketType.GetTicketTypeId()]; !ok {
+			// Ticket type ids should be unique to a merchant service pair.
+			// If they're not unique they will get dropped silently here.
+			// We enforce minimal feed validation in the test client so it's
+			// up to you to ensure UIDs.
+			ticketMap[ticketType.GetTicketTypeId()] = ticketType
+		}
+	}
+
+	filteredTickets := tickets
+	if len(availability.GetTicketTypeId()) != 0 {
+		// Clear slice but preserve allocated memory.
+		filteredTickets = filteredTickets[:0]
+		for _, ticketTypeID := range availability.GetTicketTypeId() {
+			if ticketType, ok := ticketMap[ticketTypeID]; ok {
+				filteredTickets = append(filteredTickets, ticketType)
+			}
+		}
+	}
+
+	// If no ticket types return nil as there is nothing to build.
+	if len(filteredTickets) == 0 {
+		return nil
+	}
+
 	lineItem := &mpb.LineItem{
 		ServiceId:   availability.GetServiceId(),
 		StartSec:    availability.GetStartSec(),
 		DurationSec: availability.GetDurationSec(),
 		Price:       &mpb.Price{},
 	}
-
-	// If not ticket types return nil as there is nothing to build.
-	if len(tickets) == 0 {
-		return nil
-	}
-
 	for i := 0; i < int(availability.GetSpotsOpen()); i++ {
 		// This is deterministic which is fine given that we just want to get a mix of ticket types.
-		ticketTypeIndex := rand.Intn(len(tickets))
+		ticketTypeIndex := rand.Intn(len(filteredTickets))
 		// Calculate price of line item.
-		if lineItem.GetPrice().GetCurrencyCode() == "" && tickets[ticketTypeIndex].GetPrice().GetCurrencyCode() != "" {
-			lineItem.Price.CurrencyCode = tickets[ticketTypeIndex].GetPrice().GetCurrencyCode()
+		if lineItem.GetPrice().GetCurrencyCode() == "" && filteredTickets[ticketTypeIndex].GetPrice().GetCurrencyCode() != "" {
+			lineItem.Price.CurrencyCode = filteredTickets[ticketTypeIndex].GetPrice().GetCurrencyCode()
 		}
-		lineItem.Price.PriceMicros += tickets[ticketTypeIndex].GetPrice().GetPriceMicros()
+		lineItem.Price.PriceMicros += filteredTickets[ticketTypeIndex].GetPrice().GetPriceMicros()
 
 		// Add ticket to line item.
 		lineItem.Tickets = append(lineItem.Tickets, &mpb.LineItem_OrderedTickets{
-			TicketId: tickets[ticketTypeIndex].GetTicketTypeId(),
+			TicketId: filteredTickets[ticketTypeIndex].GetTicketTypeId(),
 			Count:    1,
 		})
 	}
