1// Copyright 2020 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15// Code generated by protoc-gen-go. DO NOT EDIT.
16// versions:
17// 	protoc-gen-go v1.26.0
18// 	protoc        v3.12.2
19// source: google/cloud/talent/v4beta1/filters.proto
20
21package talent
22
23import (
24	reflect "reflect"
25	sync "sync"
26
27	_ "google.golang.org/genproto/googleapis/api/annotations"
28	date "google.golang.org/genproto/googleapis/type/date"
29	latlng "google.golang.org/genproto/googleapis/type/latlng"
30	timeofday "google.golang.org/genproto/googleapis/type/timeofday"
31	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
32	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
33	durationpb "google.golang.org/protobuf/types/known/durationpb"
34	_ "google.golang.org/protobuf/types/known/fieldmaskpb"
35	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
36	wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
37)
38
39const (
40	// Verify that this generated code is sufficiently up-to-date.
41	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
42	// Verify that runtime/protoimpl is sufficiently up-to-date.
43	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
44)
45
46// Specify whether to include telecommute jobs.
47type LocationFilter_TelecommutePreference int32
48
49const (
50	// Default value if the telecommute preference isn't specified.
51	LocationFilter_TELECOMMUTE_PREFERENCE_UNSPECIFIED LocationFilter_TelecommutePreference = 0
52	// Exclude telecommute jobs.
53	LocationFilter_TELECOMMUTE_EXCLUDED LocationFilter_TelecommutePreference = 1
54	// Allow telecommute jobs.
55	LocationFilter_TELECOMMUTE_ALLOWED LocationFilter_TelecommutePreference = 2
56)
57
58// Enum value maps for LocationFilter_TelecommutePreference.
59var (
60	LocationFilter_TelecommutePreference_name = map[int32]string{
61		0: "TELECOMMUTE_PREFERENCE_UNSPECIFIED",
62		1: "TELECOMMUTE_EXCLUDED",
63		2: "TELECOMMUTE_ALLOWED",
64	}
65	LocationFilter_TelecommutePreference_value = map[string]int32{
66		"TELECOMMUTE_PREFERENCE_UNSPECIFIED": 0,
67		"TELECOMMUTE_EXCLUDED":               1,
68		"TELECOMMUTE_ALLOWED":                2,
69	}
70)
71
72func (x LocationFilter_TelecommutePreference) Enum() *LocationFilter_TelecommutePreference {
73	p := new(LocationFilter_TelecommutePreference)
74	*p = x
75	return p
76}
77
78func (x LocationFilter_TelecommutePreference) String() string {
79	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
80}
81
82func (LocationFilter_TelecommutePreference) Descriptor() protoreflect.EnumDescriptor {
83	return file_google_cloud_talent_v4beta1_filters_proto_enumTypes[0].Descriptor()
84}
85
86func (LocationFilter_TelecommutePreference) Type() protoreflect.EnumType {
87	return &file_google_cloud_talent_v4beta1_filters_proto_enumTypes[0]
88}
89
90func (x LocationFilter_TelecommutePreference) Number() protoreflect.EnumNumber {
91	return protoreflect.EnumNumber(x)
92}
93
94// Deprecated: Use LocationFilter_TelecommutePreference.Descriptor instead.
95func (LocationFilter_TelecommutePreference) EnumDescriptor() ([]byte, []int) {
96	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{2, 0}
97}
98
99// Specify the type of filtering.
100type CompensationFilter_FilterType int32
101
102const (
103	// Filter type unspecified. Position holder, INVALID, should never be used.
104	CompensationFilter_FILTER_TYPE_UNSPECIFIED CompensationFilter_FilterType = 0
105	// Filter by `base compensation entry's` unit. A job is a match if and
106	// only if the job contains a base CompensationEntry and the base
107	// CompensationEntry's unit matches provided [units][google.cloud.talent.v4beta1.CompensationFilter.units].
108	// Populate one or more [units][google.cloud.talent.v4beta1.CompensationFilter.units].
109	//
110	// See [CompensationInfo.CompensationEntry][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry] for definition of
111	// base compensation entry.
112	CompensationFilter_UNIT_ONLY CompensationFilter_FilterType = 1
113	// Filter by `base compensation entry's` unit and amount / range. A job
114	// is a match if and only if the job contains a base CompensationEntry, and
115	// the base entry's unit matches provided
116	// [CompensationUnit][google.cloud.talent.v4beta1.CompensationInfo.CompensationUnit] and
117	// amount or range overlaps with provided
118	// [CompensationRange][google.cloud.talent.v4beta1.CompensationInfo.CompensationRange].
119	//
120	// See [CompensationInfo.CompensationEntry][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry] for definition of
121	// base compensation entry.
122	//
123	// Set exactly one [units][google.cloud.talent.v4beta1.CompensationFilter.units] and populate [range][google.cloud.talent.v4beta1.CompensationFilter.range].
124	CompensationFilter_UNIT_AND_AMOUNT CompensationFilter_FilterType = 2
125	// Filter by annualized base compensation amount and `base compensation
126	// entry's` unit. Populate [range][google.cloud.talent.v4beta1.CompensationFilter.range] and zero or more [units][google.cloud.talent.v4beta1.CompensationFilter.units].
127	CompensationFilter_ANNUALIZED_BASE_AMOUNT CompensationFilter_FilterType = 3
128	// Filter by annualized total compensation amount and `base compensation
129	// entry's` unit . Populate [range][google.cloud.talent.v4beta1.CompensationFilter.range] and zero or more [units][google.cloud.talent.v4beta1.CompensationFilter.units].
130	CompensationFilter_ANNUALIZED_TOTAL_AMOUNT CompensationFilter_FilterType = 4
131)
132
133// Enum value maps for CompensationFilter_FilterType.
134var (
135	CompensationFilter_FilterType_name = map[int32]string{
136		0: "FILTER_TYPE_UNSPECIFIED",
137		1: "UNIT_ONLY",
138		2: "UNIT_AND_AMOUNT",
139		3: "ANNUALIZED_BASE_AMOUNT",
140		4: "ANNUALIZED_TOTAL_AMOUNT",
141	}
142	CompensationFilter_FilterType_value = map[string]int32{
143		"FILTER_TYPE_UNSPECIFIED": 0,
144		"UNIT_ONLY":               1,
145		"UNIT_AND_AMOUNT":         2,
146		"ANNUALIZED_BASE_AMOUNT":  3,
147		"ANNUALIZED_TOTAL_AMOUNT": 4,
148	}
149)
150
151func (x CompensationFilter_FilterType) Enum() *CompensationFilter_FilterType {
152	p := new(CompensationFilter_FilterType)
153	*p = x
154	return p
155}
156
157func (x CompensationFilter_FilterType) String() string {
158	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
159}
160
161func (CompensationFilter_FilterType) Descriptor() protoreflect.EnumDescriptor {
162	return file_google_cloud_talent_v4beta1_filters_proto_enumTypes[1].Descriptor()
163}
164
165func (CompensationFilter_FilterType) Type() protoreflect.EnumType {
166	return &file_google_cloud_talent_v4beta1_filters_proto_enumTypes[1]
167}
168
169func (x CompensationFilter_FilterType) Number() protoreflect.EnumNumber {
170	return protoreflect.EnumNumber(x)
171}
172
173// Deprecated: Use CompensationFilter_FilterType.Descriptor instead.
174func (CompensationFilter_FilterType) EnumDescriptor() ([]byte, []int) {
175	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{3, 0}
176}
177
178// The traffic density to use when calculating commute time.
179type CommuteFilter_RoadTraffic int32
180
181const (
182	// Road traffic situation isn't specified.
183	CommuteFilter_ROAD_TRAFFIC_UNSPECIFIED CommuteFilter_RoadTraffic = 0
184	// Optimal commute time without considering any traffic impact.
185	CommuteFilter_TRAFFIC_FREE CommuteFilter_RoadTraffic = 1
186	// Commute time calculation takes in account the peak traffic impact.
187	CommuteFilter_BUSY_HOUR CommuteFilter_RoadTraffic = 2
188)
189
190// Enum value maps for CommuteFilter_RoadTraffic.
191var (
192	CommuteFilter_RoadTraffic_name = map[int32]string{
193		0: "ROAD_TRAFFIC_UNSPECIFIED",
194		1: "TRAFFIC_FREE",
195		2: "BUSY_HOUR",
196	}
197	CommuteFilter_RoadTraffic_value = map[string]int32{
198		"ROAD_TRAFFIC_UNSPECIFIED": 0,
199		"TRAFFIC_FREE":             1,
200		"BUSY_HOUR":                2,
201	}
202)
203
204func (x CommuteFilter_RoadTraffic) Enum() *CommuteFilter_RoadTraffic {
205	p := new(CommuteFilter_RoadTraffic)
206	*p = x
207	return p
208}
209
210func (x CommuteFilter_RoadTraffic) String() string {
211	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
212}
213
214func (CommuteFilter_RoadTraffic) Descriptor() protoreflect.EnumDescriptor {
215	return file_google_cloud_talent_v4beta1_filters_proto_enumTypes[2].Descriptor()
216}
217
218func (CommuteFilter_RoadTraffic) Type() protoreflect.EnumType {
219	return &file_google_cloud_talent_v4beta1_filters_proto_enumTypes[2]
220}
221
222func (x CommuteFilter_RoadTraffic) Number() protoreflect.EnumNumber {
223	return protoreflect.EnumNumber(x)
224}
225
226// Deprecated: Use CommuteFilter_RoadTraffic.Descriptor instead.
227func (CommuteFilter_RoadTraffic) EnumDescriptor() ([]byte, []int) {
228	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{4, 0}
229}
230
231// Enum indicating which set of [Profile.employment_records][google.cloud.talent.v4beta1.Profile.employment_records] to search
232// against.
233type EmployerFilter_EmployerFilterMode int32
234
235const (
236	// Default value.
237	EmployerFilter_EMPLOYER_FILTER_MODE_UNSPECIFIED EmployerFilter_EmployerFilterMode = 0
238	// Apply to all employers in [Profile.employment_records][google.cloud.talent.v4beta1.Profile.employment_records].
239	EmployerFilter_ALL_EMPLOYMENT_RECORDS EmployerFilter_EmployerFilterMode = 1
240	// Apply only to current employer in [Profile.employment_records][google.cloud.talent.v4beta1.Profile.employment_records].
241	EmployerFilter_CURRENT_EMPLOYMENT_RECORDS_ONLY EmployerFilter_EmployerFilterMode = 2
242	// Apply only to past (not current) employers in
243	// [Profile.employment_records][google.cloud.talent.v4beta1.Profile.employment_records].
244	EmployerFilter_PAST_EMPLOYMENT_RECORDS_ONLY EmployerFilter_EmployerFilterMode = 3
245)
246
247// Enum value maps for EmployerFilter_EmployerFilterMode.
248var (
249	EmployerFilter_EmployerFilterMode_name = map[int32]string{
250		0: "EMPLOYER_FILTER_MODE_UNSPECIFIED",
251		1: "ALL_EMPLOYMENT_RECORDS",
252		2: "CURRENT_EMPLOYMENT_RECORDS_ONLY",
253		3: "PAST_EMPLOYMENT_RECORDS_ONLY",
254	}
255	EmployerFilter_EmployerFilterMode_value = map[string]int32{
256		"EMPLOYER_FILTER_MODE_UNSPECIFIED": 0,
257		"ALL_EMPLOYMENT_RECORDS":           1,
258		"CURRENT_EMPLOYMENT_RECORDS_ONLY":  2,
259		"PAST_EMPLOYMENT_RECORDS_ONLY":     3,
260	}
261)
262
263func (x EmployerFilter_EmployerFilterMode) Enum() *EmployerFilter_EmployerFilterMode {
264	p := new(EmployerFilter_EmployerFilterMode)
265	*p = x
266	return p
267}
268
269func (x EmployerFilter_EmployerFilterMode) String() string {
270	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
271}
272
273func (EmployerFilter_EmployerFilterMode) Descriptor() protoreflect.EnumDescriptor {
274	return file_google_cloud_talent_v4beta1_filters_proto_enumTypes[3].Descriptor()
275}
276
277func (EmployerFilter_EmployerFilterMode) Type() protoreflect.EnumType {
278	return &file_google_cloud_talent_v4beta1_filters_proto_enumTypes[3]
279}
280
281func (x EmployerFilter_EmployerFilterMode) Number() protoreflect.EnumNumber {
282	return protoreflect.EnumNumber(x)
283}
284
285// Deprecated: Use EmployerFilter_EmployerFilterMode.Descriptor instead.
286func (EmployerFilter_EmployerFilterMode) EnumDescriptor() ([]byte, []int) {
287	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{7, 0}
288}
289
290// Time fields can be used in TimeFilter.
291type TimeFilter_TimeField int32
292
293const (
294	// Default value.
295	TimeFilter_TIME_FIELD_UNSPECIFIED TimeFilter_TimeField = 0
296	// Earliest profile create time.
297	TimeFilter_CREATE_TIME TimeFilter_TimeField = 1
298	// Latest profile update time.
299	TimeFilter_UPDATE_TIME TimeFilter_TimeField = 2
300)
301
302// Enum value maps for TimeFilter_TimeField.
303var (
304	TimeFilter_TimeField_name = map[int32]string{
305		0: "TIME_FIELD_UNSPECIFIED",
306		1: "CREATE_TIME",
307		2: "UPDATE_TIME",
308	}
309	TimeFilter_TimeField_value = map[string]int32{
310		"TIME_FIELD_UNSPECIFIED": 0,
311		"CREATE_TIME":            1,
312		"UPDATE_TIME":            2,
313	}
314)
315
316func (x TimeFilter_TimeField) Enum() *TimeFilter_TimeField {
317	p := new(TimeFilter_TimeField)
318	*p = x
319	return p
320}
321
322func (x TimeFilter_TimeField) String() string {
323	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
324}
325
326func (TimeFilter_TimeField) Descriptor() protoreflect.EnumDescriptor {
327	return file_google_cloud_talent_v4beta1_filters_proto_enumTypes[4].Descriptor()
328}
329
330func (TimeFilter_TimeField) Type() protoreflect.EnumType {
331	return &file_google_cloud_talent_v4beta1_filters_proto_enumTypes[4]
332}
333
334func (x TimeFilter_TimeField) Number() protoreflect.EnumNumber {
335	return protoreflect.EnumNumber(x)
336}
337
338// Deprecated: Use TimeFilter_TimeField.Descriptor instead.
339func (TimeFilter_TimeField) EnumDescriptor() ([]byte, []int) {
340	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{13, 0}
341}
342
343// The query required to perform a search query.
344type JobQuery struct {
345	state         protoimpl.MessageState
346	sizeCache     protoimpl.SizeCache
347	unknownFields protoimpl.UnknownFields
348
349	// The query string that matches against the job title, description, and
350	// location fields.
351	//
352	// The maximum number of allowed characters is 255.
353	Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"`
354	// The language code of [query][google.cloud.talent.v4beta1.JobQuery.query]. For example, "en-US". This field helps to
355	// better interpret the query.
356	//
357	// If a value isn't specified, the query language code is automatically
358	// detected, which may not be accurate.
359	//
360	// Language code should be in BCP-47 format, such as "en-US" or "sr-Latn".
361	// For more information, see
362	// [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47).
363	QueryLanguageCode string `protobuf:"bytes,14,opt,name=query_language_code,json=queryLanguageCode,proto3" json:"query_language_code,omitempty"`
364	// This filter specifies the company entities to search against.
365	//
366	// If a value isn't specified, jobs are searched for against all
367	// companies.
368	//
369	// If multiple values are specified, jobs are searched against the
370	// companies specified.
371	//
372	// The format is
373	// "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}". For
374	// example, "projects/foo/tenants/bar/companies/baz".
375	//
376	// If tenant id is unspecified, the default tenant is used. For
377	// example, "projects/foo/companies/bar".
378	//
379	// At most 20 company filters are allowed.
380	Companies []string `protobuf:"bytes,2,rep,name=companies,proto3" json:"companies,omitempty"`
381	// The location filter specifies geo-regions containing the jobs to
382	// search against. See [LocationFilter][google.cloud.talent.v4beta1.LocationFilter] for more information.
383	//
384	// If a location value isn't specified, jobs fitting the other search
385	// criteria are retrieved regardless of where they're located.
386	//
387	// If multiple values are specified, jobs are retrieved from any of the
388	// specified locations. If different values are specified for the
389	// [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] parameter, the maximum provided
390	// distance is used for all locations.
391	//
392	// At most 5 location filters are allowed.
393	LocationFilters []*LocationFilter `protobuf:"bytes,3,rep,name=location_filters,json=locationFilters,proto3" json:"location_filters,omitempty"`
394	// The category filter specifies the categories of jobs to search against.
395	// See [JobCategory][google.cloud.talent.v4beta1.JobCategory] for more information.
396	//
397	// If a value isn't specified, jobs from any category are searched against.
398	//
399	// If multiple values are specified, jobs from any of the specified
400	// categories are searched against.
401	JobCategories []JobCategory `protobuf:"varint,4,rep,packed,name=job_categories,json=jobCategories,proto3,enum=google.cloud.talent.v4beta1.JobCategory" json:"job_categories,omitempty"`
402	// Allows filtering jobs by commute time with different travel methods (for
403	//  example, driving or public transit).
404	//
405	// Note: This only works when you specify a [CommuteMethod][google.cloud.talent.v4beta1.CommuteMethod]. In this case,
406	// [location_filters][google.cloud.talent.v4beta1.JobQuery.location_filters] is ignored.
407	//
408	//  Currently we don't support sorting by commute time.
409	CommuteFilter *CommuteFilter `protobuf:"bytes,5,opt,name=commute_filter,json=commuteFilter,proto3" json:"commute_filter,omitempty"`
410	// This filter specifies the exact company [Company.display_name][google.cloud.talent.v4beta1.Company.display_name]
411	// of the jobs to search against.
412	//
413	// If a value isn't specified, jobs within the search results are
414	// associated with any company.
415	//
416	// If multiple values are specified, jobs within the search results may be
417	// associated with any of the specified companies.
418	//
419	// At most 20 company display name filters are allowed.
420	CompanyDisplayNames []string `protobuf:"bytes,6,rep,name=company_display_names,json=companyDisplayNames,proto3" json:"company_display_names,omitempty"`
421	// This search filter is applied only to
422	// [Job.compensation_info][google.cloud.talent.v4beta1.Job.compensation_info]. For example, if the filter is specified
423	// as "Hourly job with per-hour compensation > $15", only jobs meeting
424	// these criteria are searched. If a filter isn't defined, all open jobs
425	// are searched.
426	CompensationFilter *CompensationFilter `protobuf:"bytes,7,opt,name=compensation_filter,json=compensationFilter,proto3" json:"compensation_filter,omitempty"`
427	// This filter specifies a structured syntax to match against the
428	// [Job.custom_attributes][google.cloud.talent.v4beta1.Job.custom_attributes] marked as `filterable`.
429	//
430	// The syntax for this expression is a subset of SQL syntax.
431	//
432	// Supported operators are: `=`, `!=`, `<`, `<=`, `>`, and `>=` where the
433	// left of the operator is a custom field key and the right of the operator
434	// is a number or a quoted string. You must escape backslash (\\) and
435	// quote (\") characters.
436	//
437	// Supported functions are `LOWER([field_name])` to
438	// perform a case insensitive match and `EMPTY([field_name])` to filter on the
439	// existence of a key.
440	//
441	// Boolean expressions (AND/OR/NOT) are supported up to 3 levels of
442	// nesting (for example, "((A AND B AND C) OR NOT D) AND E"), a maximum of 100
443	// comparisons or functions are allowed in the expression. The expression
444	// must be < 6000 bytes in length.
445	//
446	// Sample Query:
447	// `(LOWER(driving_license)="class \"a\"" OR EMPTY(driving_license)) AND
448	// driving_years > 10`
449	CustomAttributeFilter string `protobuf:"bytes,8,opt,name=custom_attribute_filter,json=customAttributeFilter,proto3" json:"custom_attribute_filter,omitempty"`
450	// This flag controls the spell-check feature. If false, the
451	// service attempts to correct a misspelled query,
452	// for example, "enginee" is corrected to "engineer".
453	//
454	// Defaults to false: a spell check is performed.
455	DisableSpellCheck bool `protobuf:"varint,9,opt,name=disable_spell_check,json=disableSpellCheck,proto3" json:"disable_spell_check,omitempty"`
456	// The employment type filter specifies the employment type of jobs to
457	// search against, such as [EmploymentType.FULL_TIME][google.cloud.talent.v4beta1.EmploymentType.FULL_TIME].
458	//
459	// If a value isn't specified, jobs in the search results includes any
460	// employment type.
461	//
462	// If multiple values are specified, jobs in the search results include
463	// any of the specified employment types.
464	EmploymentTypes []EmploymentType `protobuf:"varint,10,rep,packed,name=employment_types,json=employmentTypes,proto3,enum=google.cloud.talent.v4beta1.EmploymentType" json:"employment_types,omitempty"`
465	// This filter specifies the locale of jobs to search against,
466	// for example, "en-US".
467	//
468	// If a value isn't specified, the search results can contain jobs in any
469	// locale.
470	//
471	//
472	// Language codes should be in BCP-47 format, such as "en-US" or "sr-Latn".
473	// For more information, see
474	// [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47).
475	//
476	// At most 10 language code filters are allowed.
477	LanguageCodes []string `protobuf:"bytes,11,rep,name=language_codes,json=languageCodes,proto3" json:"language_codes,omitempty"`
478	// Jobs published within a range specified by this filter are searched
479	// against.
480	PublishTimeRange *TimestampRange `protobuf:"bytes,12,opt,name=publish_time_range,json=publishTimeRange,proto3" json:"publish_time_range,omitempty"`
481	// This filter specifies a list of job names to be excluded during search.
482	//
483	// At most 400 excluded job names are allowed.
484	ExcludedJobs []string `protobuf:"bytes,13,rep,name=excluded_jobs,json=excludedJobs,proto3" json:"excluded_jobs,omitempty"`
485}
486
487func (x *JobQuery) Reset() {
488	*x = JobQuery{}
489	if protoimpl.UnsafeEnabled {
490		mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[0]
491		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
492		ms.StoreMessageInfo(mi)
493	}
494}
495
496func (x *JobQuery) String() string {
497	return protoimpl.X.MessageStringOf(x)
498}
499
500func (*JobQuery) ProtoMessage() {}
501
502func (x *JobQuery) ProtoReflect() protoreflect.Message {
503	mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[0]
504	if protoimpl.UnsafeEnabled && x != nil {
505		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
506		if ms.LoadMessageInfo() == nil {
507			ms.StoreMessageInfo(mi)
508		}
509		return ms
510	}
511	return mi.MessageOf(x)
512}
513
514// Deprecated: Use JobQuery.ProtoReflect.Descriptor instead.
515func (*JobQuery) Descriptor() ([]byte, []int) {
516	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{0}
517}
518
519func (x *JobQuery) GetQuery() string {
520	if x != nil {
521		return x.Query
522	}
523	return ""
524}
525
526func (x *JobQuery) GetQueryLanguageCode() string {
527	if x != nil {
528		return x.QueryLanguageCode
529	}
530	return ""
531}
532
533func (x *JobQuery) GetCompanies() []string {
534	if x != nil {
535		return x.Companies
536	}
537	return nil
538}
539
540func (x *JobQuery) GetLocationFilters() []*LocationFilter {
541	if x != nil {
542		return x.LocationFilters
543	}
544	return nil
545}
546
547func (x *JobQuery) GetJobCategories() []JobCategory {
548	if x != nil {
549		return x.JobCategories
550	}
551	return nil
552}
553
554func (x *JobQuery) GetCommuteFilter() *CommuteFilter {
555	if x != nil {
556		return x.CommuteFilter
557	}
558	return nil
559}
560
561func (x *JobQuery) GetCompanyDisplayNames() []string {
562	if x != nil {
563		return x.CompanyDisplayNames
564	}
565	return nil
566}
567
568func (x *JobQuery) GetCompensationFilter() *CompensationFilter {
569	if x != nil {
570		return x.CompensationFilter
571	}
572	return nil
573}
574
575func (x *JobQuery) GetCustomAttributeFilter() string {
576	if x != nil {
577		return x.CustomAttributeFilter
578	}
579	return ""
580}
581
582func (x *JobQuery) GetDisableSpellCheck() bool {
583	if x != nil {
584		return x.DisableSpellCheck
585	}
586	return false
587}
588
589func (x *JobQuery) GetEmploymentTypes() []EmploymentType {
590	if x != nil {
591		return x.EmploymentTypes
592	}
593	return nil
594}
595
596func (x *JobQuery) GetLanguageCodes() []string {
597	if x != nil {
598		return x.LanguageCodes
599	}
600	return nil
601}
602
603func (x *JobQuery) GetPublishTimeRange() *TimestampRange {
604	if x != nil {
605		return x.PublishTimeRange
606	}
607	return nil
608}
609
610func (x *JobQuery) GetExcludedJobs() []string {
611	if x != nil {
612		return x.ExcludedJobs
613	}
614	return nil
615}
616
617// Filters to apply when performing the search query.
618type ProfileQuery struct {
619	state         protoimpl.MessageState
620	sizeCache     protoimpl.SizeCache
621	unknownFields protoimpl.UnknownFields
622
623	// Keywords to match any text fields of profiles.
624	//
625	// For example, "software engineer in Palo Alto".
626	Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"`
627	// The location filter specifies geo-regions containing the profiles to
628	// search against.
629	//
630	// One of [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address] or [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng] must be
631	// provided or an error is thrown. If both [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address] and
632	// [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng] are provided, an error is thrown.
633	//
634	// The following logic is used to determine which locations in
635	// the profile to filter against:
636	//
637	// 1. All of the profile's geocoded [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
638	// [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
639	//
640	// 2. If the above set of locations is empty, all of the profile's geocoded
641	// [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
642	// CONTACT_INFO_USAGE_UNSPECIFIED and [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
643	//
644	// 3. If the above set of locations is empty, all of the profile's geocoded
645	// [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
646	// CONTACT_INFO_USAGE_UNSPECIFIED and [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
647	//
648	// This means that any profiles without any [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that match
649	// any of the above criteria will not be included in a search with location
650	// filter. Furthermore, any [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
651	// WORK or SCHOOL or where [Address.current][google.cloud.talent.v4beta1.Address.current] is false are not considered for
652	// location filter.
653	//
654	// If a location filter isn't specified, profiles fitting the other search
655	// criteria are retrieved regardless of where they're located.
656	//
657	// If [LocationFilter.negated][google.cloud.talent.v4beta1.LocationFilter.negated] is specified, the result doesn't contain
658	// profiles from that location.
659	//
660	// If [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address] is provided, the
661	// [LocationType][google.cloud.talent.v4beta1.Location.LocationType], center
662	// point (latitude and longitude), and radius are automatically detected by
663	// the Google Maps Geocoding API and included as well. If
664	// [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address] cannot be geocoded, the filter
665	// falls back to keyword search.
666	//
667	// If the detected
668	// [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
669	// [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
670	// [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
671	// or
672	// [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
673	// the filter is performed against the detected location name (using exact
674	// text matching). Otherwise, the filter is performed against the detected
675	// center point and a radius of detected location radius +
676	// [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
677	//
678	// If [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address] is provided,
679	// [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] is the additional radius on top of the
680	// radius of the location geocoded from [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]. If
681	// [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng] is provided,
682	// [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] is the only radius that is used.
683	//
684	// [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] is 10 by default. Note that the value
685	// of [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] is 0 if it is unset, so the server
686	// does not differentiate [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] that is
687	// explicitly set to 0 and [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] that is not
688	// set. Which means that if [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] is explicitly
689	// set to 0, the server will use the default value of
690	// [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] which is 10. To work around this and
691	// effectively set [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] to 0, we recommend
692	// setting [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] to a very small decimal number
693	// (such as 0.00001).
694	//
695	// If [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] is negative, an error is thrown.
696	LocationFilters []*LocationFilter `protobuf:"bytes,2,rep,name=location_filters,json=locationFilters,proto3" json:"location_filters,omitempty"`
697	// Job title filter specifies job titles of profiles to match on.
698	//
699	// If a job title isn't specified, profiles with any titles are retrieved.
700	//
701	// If multiple values are specified, profiles are retrieved with any of the
702	// specified job titles.
703	//
704	// If [JobTitleFilter.negated][google.cloud.talent.v4beta1.JobTitleFilter.negated] is specified, the result won't contain
705	// profiles with the job titles.
706	//
707	// For example, search for profiles with a job title "Product Manager".
708	JobTitleFilters []*JobTitleFilter `protobuf:"bytes,3,rep,name=job_title_filters,json=jobTitleFilters,proto3" json:"job_title_filters,omitempty"`
709	// Employer filter specifies employers of profiles to match on.
710	//
711	// If an employer filter isn't specified, profiles with any employers are
712	// retrieved.
713	//
714	// If multiple employer filters are specified, profiles with any matching
715	// employers are retrieved.
716	//
717	// If [EmployerFilter.negated][google.cloud.talent.v4beta1.EmployerFilter.negated] is specified, the result won't contain
718	// profiles that match the employers.
719	//
720	// For example, search for profiles that have working experience at "Google
721	// LLC".
722	EmployerFilters []*EmployerFilter `protobuf:"bytes,4,rep,name=employer_filters,json=employerFilters,proto3" json:"employer_filters,omitempty"`
723	// Education filter specifies education of profiles to match on.
724	//
725	// If an education filter isn't specified, profiles with any education are
726	// retrieved.
727	//
728	// If multiple education filters are specified, profiles that match any
729	// education filters are retrieved.
730	//
731	// If [EducationFilter.negated][google.cloud.talent.v4beta1.EducationFilter.negated] is specified, the result won't contain
732	// profiles that match the educations.
733	//
734	// For example, search for profiles with a master degree.
735	EducationFilters []*EducationFilter `protobuf:"bytes,5,rep,name=education_filters,json=educationFilters,proto3" json:"education_filters,omitempty"`
736	// Skill filter specifies skill of profiles to match on.
737	//
738	// If a skill filter isn't specified, profiles with any skills are retrieved.
739	//
740	// If multiple skill filters are specified, profiles that match any skill
741	// filters are retrieved.
742	//
743	// If [SkillFilter.negated][google.cloud.talent.v4beta1.SkillFilter.negated] is specified, the result won't contain profiles
744	// that match the skills.
745	//
746	// For example, search for profiles that have "Java" and "Python" in skill
747	// list.
748	SkillFilters []*SkillFilter `protobuf:"bytes,6,rep,name=skill_filters,json=skillFilters,proto3" json:"skill_filters,omitempty"`
749	// Work experience filter specifies the total working experience of profiles
750	// to match on.
751	//
752	// If a work experience filter isn't specified, profiles with any
753	// professional experience are retrieved.
754	//
755	// If multiple work experience filters are specified, profiles that match any
756	// work experience filters are retrieved.
757	//
758	// For example, search for profiles with 10 years of work experience.
759	WorkExperienceFilter []*WorkExperienceFilter `protobuf:"bytes,7,rep,name=work_experience_filter,json=workExperienceFilter,proto3" json:"work_experience_filter,omitempty"`
760	// Time filter specifies the create/update timestamp of the profiles to match
761	// on.
762	//
763	// For example, search for profiles created since "2018-1-1".
764	TimeFilters []*TimeFilter `protobuf:"bytes,8,rep,name=time_filters,json=timeFilters,proto3" json:"time_filters,omitempty"`
765	// The hirable filter specifies the profile's hirable status to match on.
766	HirableFilter *wrapperspb.BoolValue `protobuf:"bytes,9,opt,name=hirable_filter,json=hirableFilter,proto3" json:"hirable_filter,omitempty"`
767	// The application date filters specify application date ranges to match on.
768	ApplicationDateFilters []*ApplicationDateFilter `protobuf:"bytes,10,rep,name=application_date_filters,json=applicationDateFilters,proto3" json:"application_date_filters,omitempty"`
769	// The application outcome notes filters specify the notes for the outcome of
770	// the job application.
771	ApplicationOutcomeNotesFilters []*ApplicationOutcomeNotesFilter `protobuf:"bytes,11,rep,name=application_outcome_notes_filters,json=applicationOutcomeNotesFilters,proto3" json:"application_outcome_notes_filters,omitempty"`
772	// The application job filters specify the job applied for in the application.
773	ApplicationJobFilters []*ApplicationJobFilter `protobuf:"bytes,13,rep,name=application_job_filters,json=applicationJobFilters,proto3" json:"application_job_filters,omitempty"`
774	// This filter specifies a structured syntax to match against the
775	// [Profile.custom_attributes][google.cloud.talent.v4beta1.Profile.custom_attributes] that are marked as `filterable`.
776	//
777	// The syntax for this expression is a subset of Google SQL syntax.
778	//
779	// String custom attributes: supported operators are =, != where the left of
780	// the operator is a custom field key and the right of the operator is a
781	// string (surrounded by quotes) value.
782	//
783	// Numeric custom attributes: Supported operators are '>', '<' or '='
784	// operators where the left of the operator is a custom field key and the
785	// right of the operator is a numeric value.
786	//
787	// Supported functions are LOWER(<field_name>) to
788	// perform case insensitive match and EMPTY(<field_name>) to filter on the
789	// existence of a key.
790	//
791	// Boolean expressions (AND/OR/NOT) are supported up to 3 levels of
792	// nesting (for example "((A AND B AND C) OR NOT D) AND E"), and there can be
793	// a maximum of 50 comparisons/functions in the expression. The expression
794	// must be < 2000 characters in length.
795	//
796	// Sample Query:
797	// (key1 = "TEST" OR LOWER(key1)="test" OR NOT EMPTY(key1))
798	CustomAttributeFilter string `protobuf:"bytes,15,opt,name=custom_attribute_filter,json=customAttributeFilter,proto3" json:"custom_attribute_filter,omitempty"`
799	// Deprecated. Use availability_filters instead.
800	//
801	// The candidate availability filter which filters based on availability
802	// signals.
803	//
804	// Signal 1: Number of days since most recent job application.  See
805	// [Availability.JobApplicationAvailabilitySignal][google.cloud.talent.v4beta1.Availability.JobApplicationAvailabilitySignal] for the details of this
806	// signal.
807	//
808	// Signal 2: Number of days since last profile update. See
809	// [Availability.ProfileUpdateAvailabilitySignal][google.cloud.talent.v4beta1.Availability.ProfileUpdateAvailabilitySignal]
810	// for the details of this signal.
811	//
812	// The candidate availability filter helps a recruiter understand if a
813	// specific candidate is likely to be actively seeking new job opportunities
814	// based on an aggregated set of signals.  Specifically, the intent is NOT to
815	// indicate the candidate's potential qualification / interest / close ability
816	// for a specific job.
817	//
818	// Deprecated: Do not use.
819	CandidateAvailabilityFilter *CandidateAvailabilityFilter `protobuf:"bytes,16,opt,name=candidate_availability_filter,json=candidateAvailabilityFilter,proto3" json:"candidate_availability_filter,omitempty"`
820	// The availability filter which filters based on
821	// [Profile.availability_signals][google.cloud.talent.v4beta1.Profile.availability_signals].
822	//
823	// The availability filter helps a recruiter understand if a
824	// specific candidate is likely to be actively seeking new job opportunities
825	// based on an aggregated set of signals.  Specifically, the intent is NOT to
826	// indicate the candidate's potential qualification / interest / close ability
827	// for a specific job.
828	//
829	// There can be at most one [AvailabilityFilter][google.cloud.talent.v4beta1.AvailabilityFilter] per
830	// [signal_type][google.cloud.talent.v4beta1.AvailabilityFilter.signal_type]. If there are multiple
831	// [AvailabilityFilter][google.cloud.talent.v4beta1.AvailabilityFilter] for a [signal_type][google.cloud.talent.v4beta1.AvailabilityFilter.signal_type],
832	// an error is thrown.
833	AvailabilityFilters []*AvailabilityFilter `protobuf:"bytes,18,rep,name=availability_filters,json=availabilityFilters,proto3" json:"availability_filters,omitempty"`
834	// Person name filter specifies person name of profiles to match on.
835	//
836	// If multiple person name filters are specified, profiles that match any
837	// person name filters are retrieved.
838	//
839	// For example, search for profiles of candidates with name "John Smith".
840	PersonNameFilters []*PersonNameFilter `protobuf:"bytes,17,rep,name=person_name_filters,json=personNameFilters,proto3" json:"person_name_filters,omitempty"`
841}
842
843func (x *ProfileQuery) Reset() {
844	*x = ProfileQuery{}
845	if protoimpl.UnsafeEnabled {
846		mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[1]
847		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
848		ms.StoreMessageInfo(mi)
849	}
850}
851
852func (x *ProfileQuery) String() string {
853	return protoimpl.X.MessageStringOf(x)
854}
855
856func (*ProfileQuery) ProtoMessage() {}
857
858func (x *ProfileQuery) ProtoReflect() protoreflect.Message {
859	mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[1]
860	if protoimpl.UnsafeEnabled && x != nil {
861		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
862		if ms.LoadMessageInfo() == nil {
863			ms.StoreMessageInfo(mi)
864		}
865		return ms
866	}
867	return mi.MessageOf(x)
868}
869
870// Deprecated: Use ProfileQuery.ProtoReflect.Descriptor instead.
871func (*ProfileQuery) Descriptor() ([]byte, []int) {
872	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{1}
873}
874
875func (x *ProfileQuery) GetQuery() string {
876	if x != nil {
877		return x.Query
878	}
879	return ""
880}
881
882func (x *ProfileQuery) GetLocationFilters() []*LocationFilter {
883	if x != nil {
884		return x.LocationFilters
885	}
886	return nil
887}
888
889func (x *ProfileQuery) GetJobTitleFilters() []*JobTitleFilter {
890	if x != nil {
891		return x.JobTitleFilters
892	}
893	return nil
894}
895
896func (x *ProfileQuery) GetEmployerFilters() []*EmployerFilter {
897	if x != nil {
898		return x.EmployerFilters
899	}
900	return nil
901}
902
903func (x *ProfileQuery) GetEducationFilters() []*EducationFilter {
904	if x != nil {
905		return x.EducationFilters
906	}
907	return nil
908}
909
910func (x *ProfileQuery) GetSkillFilters() []*SkillFilter {
911	if x != nil {
912		return x.SkillFilters
913	}
914	return nil
915}
916
917func (x *ProfileQuery) GetWorkExperienceFilter() []*WorkExperienceFilter {
918	if x != nil {
919		return x.WorkExperienceFilter
920	}
921	return nil
922}
923
924func (x *ProfileQuery) GetTimeFilters() []*TimeFilter {
925	if x != nil {
926		return x.TimeFilters
927	}
928	return nil
929}
930
931func (x *ProfileQuery) GetHirableFilter() *wrapperspb.BoolValue {
932	if x != nil {
933		return x.HirableFilter
934	}
935	return nil
936}
937
938func (x *ProfileQuery) GetApplicationDateFilters() []*ApplicationDateFilter {
939	if x != nil {
940		return x.ApplicationDateFilters
941	}
942	return nil
943}
944
945func (x *ProfileQuery) GetApplicationOutcomeNotesFilters() []*ApplicationOutcomeNotesFilter {
946	if x != nil {
947		return x.ApplicationOutcomeNotesFilters
948	}
949	return nil
950}
951
952func (x *ProfileQuery) GetApplicationJobFilters() []*ApplicationJobFilter {
953	if x != nil {
954		return x.ApplicationJobFilters
955	}
956	return nil
957}
958
959func (x *ProfileQuery) GetCustomAttributeFilter() string {
960	if x != nil {
961		return x.CustomAttributeFilter
962	}
963	return ""
964}
965
966// Deprecated: Do not use.
967func (x *ProfileQuery) GetCandidateAvailabilityFilter() *CandidateAvailabilityFilter {
968	if x != nil {
969		return x.CandidateAvailabilityFilter
970	}
971	return nil
972}
973
974func (x *ProfileQuery) GetAvailabilityFilters() []*AvailabilityFilter {
975	if x != nil {
976		return x.AvailabilityFilters
977	}
978	return nil
979}
980
981func (x *ProfileQuery) GetPersonNameFilters() []*PersonNameFilter {
982	if x != nil {
983		return x.PersonNameFilters
984	}
985	return nil
986}
987
988// Geographic region of the search.
989type LocationFilter struct {
990	state         protoimpl.MessageState
991	sizeCache     protoimpl.SizeCache
992	unknownFields protoimpl.UnknownFields
993
994	// The address name, such as "Mountain View" or "Bay Area".
995	Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
996	// CLDR region code of the country/region of the address. This is used
997	// to address ambiguity of the user-input location, for example, "Liverpool"
998	// against "Liverpool, NY, US" or "Liverpool, UK".
999	//
1000	// Set this field to bias location resolution toward a specific country
1001	// or territory. If this field is not set, application behavior is biased
1002	// toward the United States by default.
1003	//
1004	// See
1005	// https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html
1006	// for details. Example: "CH" for Switzerland.
1007	// Note that this filter is not applicable for Profile Search related queries.
1008	RegionCode string `protobuf:"bytes,2,opt,name=region_code,json=regionCode,proto3" json:"region_code,omitempty"`
1009	// The latitude and longitude of the geographic center to search from. This
1010	// field is ignored if `address` is provided.
1011	LatLng *latlng.LatLng `protobuf:"bytes,3,opt,name=lat_lng,json=latLng,proto3" json:"lat_lng,omitempty"`
1012	// The distance_in_miles is applied when the location being searched for is
1013	// identified as a city or smaller. This field is ignored if the location
1014	// being searched for is a state or larger.
1015	DistanceInMiles float64 `protobuf:"fixed64,4,opt,name=distance_in_miles,json=distanceInMiles,proto3" json:"distance_in_miles,omitempty"`
1016	// Allows the client to return jobs without a
1017	// set location, specifically, telecommuting jobs (telecommuting is considered
1018	// by the service as a special location.
1019	// [Job.posting_region][google.cloud.talent.v4beta1.Job.posting_region] indicates if a job permits telecommuting.
1020	// If this field is set to [TelecommutePreference.TELECOMMUTE_ALLOWED][google.cloud.talent.v4beta1.LocationFilter.TelecommutePreference.TELECOMMUTE_ALLOWED],
1021	// telecommuting jobs are searched, and [address][google.cloud.talent.v4beta1.LocationFilter.address] and [lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng] are
1022	// ignored. If not set or set to
1023	// [TelecommutePreference.TELECOMMUTE_EXCLUDED][google.cloud.talent.v4beta1.LocationFilter.TelecommutePreference.TELECOMMUTE_EXCLUDED], telecommute job are not
1024	// searched.
1025	//
1026	// This filter can be used by itself to search exclusively for telecommuting
1027	// jobs, or it can be combined with another location
1028	// filter to search for a combination of job locations,
1029	// such as "Mountain View" or "telecommuting" jobs. However, when used in
1030	// combination with other location filters, telecommuting jobs can be
1031	// treated as less relevant than other jobs in the search response.
1032	//
1033	// This field is only used for job search requests.
1034	TelecommutePreference LocationFilter_TelecommutePreference `protobuf:"varint,5,opt,name=telecommute_preference,json=telecommutePreference,proto3,enum=google.cloud.talent.v4beta1.LocationFilter_TelecommutePreference" json:"telecommute_preference,omitempty"`
1035	// Whether to apply negation to the filter so profiles matching the filter
1036	// are excluded.
1037	//
1038	// Currently only supported in profile search.
1039	Negated bool `protobuf:"varint,6,opt,name=negated,proto3" json:"negated,omitempty"`
1040}
1041
1042func (x *LocationFilter) Reset() {
1043	*x = LocationFilter{}
1044	if protoimpl.UnsafeEnabled {
1045		mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[2]
1046		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1047		ms.StoreMessageInfo(mi)
1048	}
1049}
1050
1051func (x *LocationFilter) String() string {
1052	return protoimpl.X.MessageStringOf(x)
1053}
1054
1055func (*LocationFilter) ProtoMessage() {}
1056
1057func (x *LocationFilter) ProtoReflect() protoreflect.Message {
1058	mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[2]
1059	if protoimpl.UnsafeEnabled && x != nil {
1060		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1061		if ms.LoadMessageInfo() == nil {
1062			ms.StoreMessageInfo(mi)
1063		}
1064		return ms
1065	}
1066	return mi.MessageOf(x)
1067}
1068
1069// Deprecated: Use LocationFilter.ProtoReflect.Descriptor instead.
1070func (*LocationFilter) Descriptor() ([]byte, []int) {
1071	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{2}
1072}
1073
1074func (x *LocationFilter) GetAddress() string {
1075	if x != nil {
1076		return x.Address
1077	}
1078	return ""
1079}
1080
1081func (x *LocationFilter) GetRegionCode() string {
1082	if x != nil {
1083		return x.RegionCode
1084	}
1085	return ""
1086}
1087
1088func (x *LocationFilter) GetLatLng() *latlng.LatLng {
1089	if x != nil {
1090		return x.LatLng
1091	}
1092	return nil
1093}
1094
1095func (x *LocationFilter) GetDistanceInMiles() float64 {
1096	if x != nil {
1097		return x.DistanceInMiles
1098	}
1099	return 0
1100}
1101
1102func (x *LocationFilter) GetTelecommutePreference() LocationFilter_TelecommutePreference {
1103	if x != nil {
1104		return x.TelecommutePreference
1105	}
1106	return LocationFilter_TELECOMMUTE_PREFERENCE_UNSPECIFIED
1107}
1108
1109func (x *LocationFilter) GetNegated() bool {
1110	if x != nil {
1111		return x.Negated
1112	}
1113	return false
1114}
1115
1116// Filter on job compensation type and amount.
1117type CompensationFilter struct {
1118	state         protoimpl.MessageState
1119	sizeCache     protoimpl.SizeCache
1120	unknownFields protoimpl.UnknownFields
1121
1122	// Required. Type of filter.
1123	Type CompensationFilter_FilterType `protobuf:"varint,1,opt,name=type,proto3,enum=google.cloud.talent.v4beta1.CompensationFilter_FilterType" json:"type,omitempty"`
1124	// Required. Specify desired `base compensation entry's`
1125	// [CompensationInfo.CompensationUnit][google.cloud.talent.v4beta1.CompensationInfo.CompensationUnit].
1126	Units []CompensationInfo_CompensationUnit `protobuf:"varint,2,rep,packed,name=units,proto3,enum=google.cloud.talent.v4beta1.CompensationInfo_CompensationUnit" json:"units,omitempty"`
1127	// Compensation range.
1128	Range *CompensationInfo_CompensationRange `protobuf:"bytes,3,opt,name=range,proto3" json:"range,omitempty"`
1129	// If set to true, jobs with unspecified compensation range fields are
1130	// included.
1131	IncludeJobsWithUnspecifiedCompensationRange bool `protobuf:"varint,4,opt,name=include_jobs_with_unspecified_compensation_range,json=includeJobsWithUnspecifiedCompensationRange,proto3" json:"include_jobs_with_unspecified_compensation_range,omitempty"`
1132}
1133
1134func (x *CompensationFilter) Reset() {
1135	*x = CompensationFilter{}
1136	if protoimpl.UnsafeEnabled {
1137		mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[3]
1138		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1139		ms.StoreMessageInfo(mi)
1140	}
1141}
1142
1143func (x *CompensationFilter) String() string {
1144	return protoimpl.X.MessageStringOf(x)
1145}
1146
1147func (*CompensationFilter) ProtoMessage() {}
1148
1149func (x *CompensationFilter) ProtoReflect() protoreflect.Message {
1150	mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[3]
1151	if protoimpl.UnsafeEnabled && x != nil {
1152		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1153		if ms.LoadMessageInfo() == nil {
1154			ms.StoreMessageInfo(mi)
1155		}
1156		return ms
1157	}
1158	return mi.MessageOf(x)
1159}
1160
1161// Deprecated: Use CompensationFilter.ProtoReflect.Descriptor instead.
1162func (*CompensationFilter) Descriptor() ([]byte, []int) {
1163	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{3}
1164}
1165
1166func (x *CompensationFilter) GetType() CompensationFilter_FilterType {
1167	if x != nil {
1168		return x.Type
1169	}
1170	return CompensationFilter_FILTER_TYPE_UNSPECIFIED
1171}
1172
1173func (x *CompensationFilter) GetUnits() []CompensationInfo_CompensationUnit {
1174	if x != nil {
1175		return x.Units
1176	}
1177	return nil
1178}
1179
1180func (x *CompensationFilter) GetRange() *CompensationInfo_CompensationRange {
1181	if x != nil {
1182		return x.Range
1183	}
1184	return nil
1185}
1186
1187func (x *CompensationFilter) GetIncludeJobsWithUnspecifiedCompensationRange() bool {
1188	if x != nil {
1189		return x.IncludeJobsWithUnspecifiedCompensationRange
1190	}
1191	return false
1192}
1193
1194// Parameters needed for commute search.
1195type CommuteFilter struct {
1196	state         protoimpl.MessageState
1197	sizeCache     protoimpl.SizeCache
1198	unknownFields protoimpl.UnknownFields
1199
1200	// Required. The method of transportation to calculate the commute time for.
1201	CommuteMethod CommuteMethod `protobuf:"varint,1,opt,name=commute_method,json=commuteMethod,proto3,enum=google.cloud.talent.v4beta1.CommuteMethod" json:"commute_method,omitempty"`
1202	// Required. The latitude and longitude of the location to calculate the
1203	// commute time from.
1204	StartCoordinates *latlng.LatLng `protobuf:"bytes,2,opt,name=start_coordinates,json=startCoordinates,proto3" json:"start_coordinates,omitempty"`
1205	// Required. The maximum travel time in seconds. The maximum allowed value is `3600s`
1206	// (one hour). Format is `123s`.
1207	TravelDuration *durationpb.Duration `protobuf:"bytes,3,opt,name=travel_duration,json=travelDuration,proto3" json:"travel_duration,omitempty"`
1208	// If `true`, jobs without street level addresses may also be returned.
1209	// For city level addresses, the city center is used. For state and coarser
1210	// level addresses, text matching is used.
1211	// If this field is set to `false` or isn't specified, only jobs that include
1212	// street level addresses will be returned by commute search.
1213	AllowImpreciseAddresses bool `protobuf:"varint,4,opt,name=allow_imprecise_addresses,json=allowImpreciseAddresses,proto3" json:"allow_imprecise_addresses,omitempty"`
1214	// Traffic factor to take into account while searching by commute.
1215	//
1216	// Types that are assignable to TrafficOption:
1217	//	*CommuteFilter_RoadTraffic_
1218	//	*CommuteFilter_DepartureTime
1219	TrafficOption isCommuteFilter_TrafficOption `protobuf_oneof:"traffic_option"`
1220}
1221
1222func (x *CommuteFilter) Reset() {
1223	*x = CommuteFilter{}
1224	if protoimpl.UnsafeEnabled {
1225		mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[4]
1226		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1227		ms.StoreMessageInfo(mi)
1228	}
1229}
1230
1231func (x *CommuteFilter) String() string {
1232	return protoimpl.X.MessageStringOf(x)
1233}
1234
1235func (*CommuteFilter) ProtoMessage() {}
1236
1237func (x *CommuteFilter) ProtoReflect() protoreflect.Message {
1238	mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[4]
1239	if protoimpl.UnsafeEnabled && x != nil {
1240		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1241		if ms.LoadMessageInfo() == nil {
1242			ms.StoreMessageInfo(mi)
1243		}
1244		return ms
1245	}
1246	return mi.MessageOf(x)
1247}
1248
1249// Deprecated: Use CommuteFilter.ProtoReflect.Descriptor instead.
1250func (*CommuteFilter) Descriptor() ([]byte, []int) {
1251	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{4}
1252}
1253
1254func (x *CommuteFilter) GetCommuteMethod() CommuteMethod {
1255	if x != nil {
1256		return x.CommuteMethod
1257	}
1258	return CommuteMethod_COMMUTE_METHOD_UNSPECIFIED
1259}
1260
1261func (x *CommuteFilter) GetStartCoordinates() *latlng.LatLng {
1262	if x != nil {
1263		return x.StartCoordinates
1264	}
1265	return nil
1266}
1267
1268func (x *CommuteFilter) GetTravelDuration() *durationpb.Duration {
1269	if x != nil {
1270		return x.TravelDuration
1271	}
1272	return nil
1273}
1274
1275func (x *CommuteFilter) GetAllowImpreciseAddresses() bool {
1276	if x != nil {
1277		return x.AllowImpreciseAddresses
1278	}
1279	return false
1280}
1281
1282func (m *CommuteFilter) GetTrafficOption() isCommuteFilter_TrafficOption {
1283	if m != nil {
1284		return m.TrafficOption
1285	}
1286	return nil
1287}
1288
1289func (x *CommuteFilter) GetRoadTraffic() CommuteFilter_RoadTraffic {
1290	if x, ok := x.GetTrafficOption().(*CommuteFilter_RoadTraffic_); ok {
1291		return x.RoadTraffic
1292	}
1293	return CommuteFilter_ROAD_TRAFFIC_UNSPECIFIED
1294}
1295
1296func (x *CommuteFilter) GetDepartureTime() *timeofday.TimeOfDay {
1297	if x, ok := x.GetTrafficOption().(*CommuteFilter_DepartureTime); ok {
1298		return x.DepartureTime
1299	}
1300	return nil
1301}
1302
1303type isCommuteFilter_TrafficOption interface {
1304	isCommuteFilter_TrafficOption()
1305}
1306
1307type CommuteFilter_RoadTraffic_ struct {
1308	// Specifies the traffic density to use when calculating commute time.
1309	RoadTraffic CommuteFilter_RoadTraffic `protobuf:"varint,5,opt,name=road_traffic,json=roadTraffic,proto3,enum=google.cloud.talent.v4beta1.CommuteFilter_RoadTraffic,oneof"`
1310}
1311
1312type CommuteFilter_DepartureTime struct {
1313	// The departure time used to calculate traffic impact, represented as
1314	// [google.type.TimeOfDay][google.type.TimeOfDay] in local time zone.
1315	//
1316	// Currently traffic model is restricted to hour level resolution.
1317	DepartureTime *timeofday.TimeOfDay `protobuf:"bytes,6,opt,name=departure_time,json=departureTime,proto3,oneof"`
1318}
1319
1320func (*CommuteFilter_RoadTraffic_) isCommuteFilter_TrafficOption() {}
1321
1322func (*CommuteFilter_DepartureTime) isCommuteFilter_TrafficOption() {}
1323
1324// Job title of the search.
1325type JobTitleFilter struct {
1326	state         protoimpl.MessageState
1327	sizeCache     protoimpl.SizeCache
1328	unknownFields protoimpl.UnknownFields
1329
1330	// Required. The job title. For example, "Software engineer", or "Product manager".
1331	JobTitle string `protobuf:"bytes,1,opt,name=job_title,json=jobTitle,proto3" json:"job_title,omitempty"`
1332	// Whether to apply negation to the filter so profiles matching the filter
1333	// are excluded.
1334	Negated bool `protobuf:"varint,2,opt,name=negated,proto3" json:"negated,omitempty"`
1335}
1336
1337func (x *JobTitleFilter) Reset() {
1338	*x = JobTitleFilter{}
1339	if protoimpl.UnsafeEnabled {
1340		mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[5]
1341		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1342		ms.StoreMessageInfo(mi)
1343	}
1344}
1345
1346func (x *JobTitleFilter) String() string {
1347	return protoimpl.X.MessageStringOf(x)
1348}
1349
1350func (*JobTitleFilter) ProtoMessage() {}
1351
1352func (x *JobTitleFilter) ProtoReflect() protoreflect.Message {
1353	mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[5]
1354	if protoimpl.UnsafeEnabled && x != nil {
1355		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1356		if ms.LoadMessageInfo() == nil {
1357			ms.StoreMessageInfo(mi)
1358		}
1359		return ms
1360	}
1361	return mi.MessageOf(x)
1362}
1363
1364// Deprecated: Use JobTitleFilter.ProtoReflect.Descriptor instead.
1365func (*JobTitleFilter) Descriptor() ([]byte, []int) {
1366	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{5}
1367}
1368
1369func (x *JobTitleFilter) GetJobTitle() string {
1370	if x != nil {
1371		return x.JobTitle
1372	}
1373	return ""
1374}
1375
1376func (x *JobTitleFilter) GetNegated() bool {
1377	if x != nil {
1378		return x.Negated
1379	}
1380	return false
1381}
1382
1383// Skill filter of the search.
1384type SkillFilter struct {
1385	state         protoimpl.MessageState
1386	sizeCache     protoimpl.SizeCache
1387	unknownFields protoimpl.UnknownFields
1388
1389	// Required. The skill name. For example, "java", "j2ee", and so on.
1390	Skill string `protobuf:"bytes,1,opt,name=skill,proto3" json:"skill,omitempty"`
1391	// Whether to apply negation to the filter so profiles matching the filter
1392	// are excluded.
1393	Negated bool `protobuf:"varint,2,opt,name=negated,proto3" json:"negated,omitempty"`
1394}
1395
1396func (x *SkillFilter) Reset() {
1397	*x = SkillFilter{}
1398	if protoimpl.UnsafeEnabled {
1399		mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[6]
1400		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1401		ms.StoreMessageInfo(mi)
1402	}
1403}
1404
1405func (x *SkillFilter) String() string {
1406	return protoimpl.X.MessageStringOf(x)
1407}
1408
1409func (*SkillFilter) ProtoMessage() {}
1410
1411func (x *SkillFilter) ProtoReflect() protoreflect.Message {
1412	mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[6]
1413	if protoimpl.UnsafeEnabled && x != nil {
1414		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1415		if ms.LoadMessageInfo() == nil {
1416			ms.StoreMessageInfo(mi)
1417		}
1418		return ms
1419	}
1420	return mi.MessageOf(x)
1421}
1422
1423// Deprecated: Use SkillFilter.ProtoReflect.Descriptor instead.
1424func (*SkillFilter) Descriptor() ([]byte, []int) {
1425	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{6}
1426}
1427
1428func (x *SkillFilter) GetSkill() string {
1429	if x != nil {
1430		return x.Skill
1431	}
1432	return ""
1433}
1434
1435func (x *SkillFilter) GetNegated() bool {
1436	if x != nil {
1437		return x.Negated
1438	}
1439	return false
1440}
1441
1442// Employer filter of the search.
1443type EmployerFilter struct {
1444	state         protoimpl.MessageState
1445	sizeCache     protoimpl.SizeCache
1446	unknownFields protoimpl.UnknownFields
1447
1448	// Required. The name of the employer, for example "Google", "Alphabet".
1449	Employer string `protobuf:"bytes,1,opt,name=employer,proto3" json:"employer,omitempty"`
1450	// Define set of [EmploymentRecord][google.cloud.talent.v4beta1.EmploymentRecord]s to search against.
1451	//
1452	// Defaults to [EmployerFilterMode.ALL_EMPLOYMENT_RECORDS][google.cloud.talent.v4beta1.EmployerFilter.EmployerFilterMode.ALL_EMPLOYMENT_RECORDS].
1453	Mode EmployerFilter_EmployerFilterMode `protobuf:"varint,2,opt,name=mode,proto3,enum=google.cloud.talent.v4beta1.EmployerFilter_EmployerFilterMode" json:"mode,omitempty"`
1454	// Whether to apply negation to the filter so profiles matching the filter
1455	// is excluded.
1456	Negated bool `protobuf:"varint,3,opt,name=negated,proto3" json:"negated,omitempty"`
1457}
1458
1459func (x *EmployerFilter) Reset() {
1460	*x = EmployerFilter{}
1461	if protoimpl.UnsafeEnabled {
1462		mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[7]
1463		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1464		ms.StoreMessageInfo(mi)
1465	}
1466}
1467
1468func (x *EmployerFilter) String() string {
1469	return protoimpl.X.MessageStringOf(x)
1470}
1471
1472func (*EmployerFilter) ProtoMessage() {}
1473
1474func (x *EmployerFilter) ProtoReflect() protoreflect.Message {
1475	mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[7]
1476	if protoimpl.UnsafeEnabled && x != nil {
1477		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1478		if ms.LoadMessageInfo() == nil {
1479			ms.StoreMessageInfo(mi)
1480		}
1481		return ms
1482	}
1483	return mi.MessageOf(x)
1484}
1485
1486// Deprecated: Use EmployerFilter.ProtoReflect.Descriptor instead.
1487func (*EmployerFilter) Descriptor() ([]byte, []int) {
1488	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{7}
1489}
1490
1491func (x *EmployerFilter) GetEmployer() string {
1492	if x != nil {
1493		return x.Employer
1494	}
1495	return ""
1496}
1497
1498func (x *EmployerFilter) GetMode() EmployerFilter_EmployerFilterMode {
1499	if x != nil {
1500		return x.Mode
1501	}
1502	return EmployerFilter_EMPLOYER_FILTER_MODE_UNSPECIFIED
1503}
1504
1505func (x *EmployerFilter) GetNegated() bool {
1506	if x != nil {
1507		return x.Negated
1508	}
1509	return false
1510}
1511
1512// Education filter of the search.
1513type EducationFilter struct {
1514	state         protoimpl.MessageState
1515	sizeCache     protoimpl.SizeCache
1516	unknownFields protoimpl.UnknownFields
1517
1518	// The school name. For example "MIT", "University of California, Berkeley".
1519	School string `protobuf:"bytes,1,opt,name=school,proto3" json:"school,omitempty"`
1520	// The field of study. This is to search against value provided in
1521	// [Degree.fields_of_study][google.cloud.talent.v4beta1.Degree.fields_of_study].
1522	// For example "Computer Science", "Mathematics".
1523	FieldOfStudy string `protobuf:"bytes,2,opt,name=field_of_study,json=fieldOfStudy,proto3" json:"field_of_study,omitempty"`
1524	// Education degree in ISCED code. Each value in degree covers a specific
1525	// level of education, without any expansion to upper nor lower levels of
1526	// education degree.
1527	DegreeType DegreeType `protobuf:"varint,3,opt,name=degree_type,json=degreeType,proto3,enum=google.cloud.talent.v4beta1.DegreeType" json:"degree_type,omitempty"`
1528	// Whether to apply negation to the filter so profiles matching the filter
1529	// is excluded.
1530	Negated bool `protobuf:"varint,6,opt,name=negated,proto3" json:"negated,omitempty"`
1531}
1532
1533func (x *EducationFilter) Reset() {
1534	*x = EducationFilter{}
1535	if protoimpl.UnsafeEnabled {
1536		mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[8]
1537		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1538		ms.StoreMessageInfo(mi)
1539	}
1540}
1541
1542func (x *EducationFilter) String() string {
1543	return protoimpl.X.MessageStringOf(x)
1544}
1545
1546func (*EducationFilter) ProtoMessage() {}
1547
1548func (x *EducationFilter) ProtoReflect() protoreflect.Message {
1549	mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[8]
1550	if protoimpl.UnsafeEnabled && x != nil {
1551		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1552		if ms.LoadMessageInfo() == nil {
1553			ms.StoreMessageInfo(mi)
1554		}
1555		return ms
1556	}
1557	return mi.MessageOf(x)
1558}
1559
1560// Deprecated: Use EducationFilter.ProtoReflect.Descriptor instead.
1561func (*EducationFilter) Descriptor() ([]byte, []int) {
1562	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{8}
1563}
1564
1565func (x *EducationFilter) GetSchool() string {
1566	if x != nil {
1567		return x.School
1568	}
1569	return ""
1570}
1571
1572func (x *EducationFilter) GetFieldOfStudy() string {
1573	if x != nil {
1574		return x.FieldOfStudy
1575	}
1576	return ""
1577}
1578
1579func (x *EducationFilter) GetDegreeType() DegreeType {
1580	if x != nil {
1581		return x.DegreeType
1582	}
1583	return DegreeType_DEGREE_TYPE_UNSPECIFIED
1584}
1585
1586func (x *EducationFilter) GetNegated() bool {
1587	if x != nil {
1588		return x.Negated
1589	}
1590	return false
1591}
1592
1593// Work experience filter.
1594//
1595// This filter is used to search for profiles with working experience length
1596// between [min_experience][google.cloud.talent.v4beta1.WorkExperienceFilter.min_experience] and [max_experience][google.cloud.talent.v4beta1.WorkExperienceFilter.max_experience].
1597type WorkExperienceFilter struct {
1598	state         protoimpl.MessageState
1599	sizeCache     protoimpl.SizeCache
1600	unknownFields protoimpl.UnknownFields
1601
1602	// The minimum duration of the work experience (inclusive).
1603	MinExperience *durationpb.Duration `protobuf:"bytes,1,opt,name=min_experience,json=minExperience,proto3" json:"min_experience,omitempty"`
1604	// The maximum duration of the work experience (exclusive).
1605	MaxExperience *durationpb.Duration `protobuf:"bytes,2,opt,name=max_experience,json=maxExperience,proto3" json:"max_experience,omitempty"`
1606}
1607
1608func (x *WorkExperienceFilter) Reset() {
1609	*x = WorkExperienceFilter{}
1610	if protoimpl.UnsafeEnabled {
1611		mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[9]
1612		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1613		ms.StoreMessageInfo(mi)
1614	}
1615}
1616
1617func (x *WorkExperienceFilter) String() string {
1618	return protoimpl.X.MessageStringOf(x)
1619}
1620
1621func (*WorkExperienceFilter) ProtoMessage() {}
1622
1623func (x *WorkExperienceFilter) ProtoReflect() protoreflect.Message {
1624	mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[9]
1625	if protoimpl.UnsafeEnabled && x != nil {
1626		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1627		if ms.LoadMessageInfo() == nil {
1628			ms.StoreMessageInfo(mi)
1629		}
1630		return ms
1631	}
1632	return mi.MessageOf(x)
1633}
1634
1635// Deprecated: Use WorkExperienceFilter.ProtoReflect.Descriptor instead.
1636func (*WorkExperienceFilter) Descriptor() ([]byte, []int) {
1637	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{9}
1638}
1639
1640func (x *WorkExperienceFilter) GetMinExperience() *durationpb.Duration {
1641	if x != nil {
1642		return x.MinExperience
1643	}
1644	return nil
1645}
1646
1647func (x *WorkExperienceFilter) GetMaxExperience() *durationpb.Duration {
1648	if x != nil {
1649		return x.MaxExperience
1650	}
1651	return nil
1652}
1653
1654// Application Date Range Filter.
1655//
1656// The API matches profiles with [Application.application_date][google.cloud.talent.v4beta1.Application.application_date] between
1657// start date and end date (both boundaries are inclusive). The filter is
1658// ignored if both [start_date][google.cloud.talent.v4beta1.ApplicationDateFilter.start_date] and [end_date][google.cloud.talent.v4beta1.ApplicationDateFilter.end_date] are missing.
1659type ApplicationDateFilter struct {
1660	state         protoimpl.MessageState
1661	sizeCache     protoimpl.SizeCache
1662	unknownFields protoimpl.UnknownFields
1663
1664	// Start date. If it's missing, The API matches profiles with application date
1665	// not after the end date.
1666	StartDate *date.Date `protobuf:"bytes,1,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"`
1667	// End date. If it's missing, The API matches profiles with application date
1668	// not before the start date.
1669	EndDate *date.Date `protobuf:"bytes,2,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"`
1670}
1671
1672func (x *ApplicationDateFilter) Reset() {
1673	*x = ApplicationDateFilter{}
1674	if protoimpl.UnsafeEnabled {
1675		mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[10]
1676		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1677		ms.StoreMessageInfo(mi)
1678	}
1679}
1680
1681func (x *ApplicationDateFilter) String() string {
1682	return protoimpl.X.MessageStringOf(x)
1683}
1684
1685func (*ApplicationDateFilter) ProtoMessage() {}
1686
1687func (x *ApplicationDateFilter) ProtoReflect() protoreflect.Message {
1688	mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[10]
1689	if protoimpl.UnsafeEnabled && x != nil {
1690		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1691		if ms.LoadMessageInfo() == nil {
1692			ms.StoreMessageInfo(mi)
1693		}
1694		return ms
1695	}
1696	return mi.MessageOf(x)
1697}
1698
1699// Deprecated: Use ApplicationDateFilter.ProtoReflect.Descriptor instead.
1700func (*ApplicationDateFilter) Descriptor() ([]byte, []int) {
1701	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{10}
1702}
1703
1704func (x *ApplicationDateFilter) GetStartDate() *date.Date {
1705	if x != nil {
1706		return x.StartDate
1707	}
1708	return nil
1709}
1710
1711func (x *ApplicationDateFilter) GetEndDate() *date.Date {
1712	if x != nil {
1713		return x.EndDate
1714	}
1715	return nil
1716}
1717
1718// Outcome Notes Filter.
1719type ApplicationOutcomeNotesFilter struct {
1720	state         protoimpl.MessageState
1721	sizeCache     protoimpl.SizeCache
1722	unknownFields protoimpl.UnknownFields
1723
1724	// Required. User entered or selected outcome reason. The API does an exact match on the
1725	// [Application.outcome_notes][google.cloud.talent.v4beta1.Application.outcome_notes] in profiles.
1726	OutcomeNotes string `protobuf:"bytes,1,opt,name=outcome_notes,json=outcomeNotes,proto3" json:"outcome_notes,omitempty"`
1727	// If true, The API excludes all candidates with any
1728	// [Application.outcome_notes][google.cloud.talent.v4beta1.Application.outcome_notes] matching the outcome reason specified in
1729	// the filter.
1730	Negated bool `protobuf:"varint,2,opt,name=negated,proto3" json:"negated,omitempty"`
1731}
1732
1733func (x *ApplicationOutcomeNotesFilter) Reset() {
1734	*x = ApplicationOutcomeNotesFilter{}
1735	if protoimpl.UnsafeEnabled {
1736		mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[11]
1737		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1738		ms.StoreMessageInfo(mi)
1739	}
1740}
1741
1742func (x *ApplicationOutcomeNotesFilter) String() string {
1743	return protoimpl.X.MessageStringOf(x)
1744}
1745
1746func (*ApplicationOutcomeNotesFilter) ProtoMessage() {}
1747
1748func (x *ApplicationOutcomeNotesFilter) ProtoReflect() protoreflect.Message {
1749	mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[11]
1750	if protoimpl.UnsafeEnabled && x != nil {
1751		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1752		if ms.LoadMessageInfo() == nil {
1753			ms.StoreMessageInfo(mi)
1754		}
1755		return ms
1756	}
1757	return mi.MessageOf(x)
1758}
1759
1760// Deprecated: Use ApplicationOutcomeNotesFilter.ProtoReflect.Descriptor instead.
1761func (*ApplicationOutcomeNotesFilter) Descriptor() ([]byte, []int) {
1762	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{11}
1763}
1764
1765func (x *ApplicationOutcomeNotesFilter) GetOutcomeNotes() string {
1766	if x != nil {
1767		return x.OutcomeNotes
1768	}
1769	return ""
1770}
1771
1772func (x *ApplicationOutcomeNotesFilter) GetNegated() bool {
1773	if x != nil {
1774		return x.Negated
1775	}
1776	return false
1777}
1778
1779// Filter on the job information of Application.
1780type ApplicationJobFilter struct {
1781	state         protoimpl.MessageState
1782	sizeCache     protoimpl.SizeCache
1783	unknownFields protoimpl.UnknownFields
1784
1785	// The job requisition id in the application. The API does an exact match on
1786	// the [Job.requisition_id][google.cloud.talent.v4beta1.Job.requisition_id] of [Application.job][google.cloud.talent.v4beta1.Application.job] in profiles.
1787	JobRequisitionId string `protobuf:"bytes,2,opt,name=job_requisition_id,json=jobRequisitionId,proto3" json:"job_requisition_id,omitempty"`
1788	// The job title in the application. The API does an exact match on the
1789	// [Job.title][google.cloud.talent.v4beta1.Job.title] of [Application.job][google.cloud.talent.v4beta1.Application.job] in profiles.
1790	JobTitle string `protobuf:"bytes,3,opt,name=job_title,json=jobTitle,proto3" json:"job_title,omitempty"`
1791	// If true, the API excludes all profiles with any [Application.job][google.cloud.talent.v4beta1.Application.job]
1792	// matching the filters.
1793	Negated bool `protobuf:"varint,4,opt,name=negated,proto3" json:"negated,omitempty"`
1794}
1795
1796func (x *ApplicationJobFilter) Reset() {
1797	*x = ApplicationJobFilter{}
1798	if protoimpl.UnsafeEnabled {
1799		mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[12]
1800		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1801		ms.StoreMessageInfo(mi)
1802	}
1803}
1804
1805func (x *ApplicationJobFilter) String() string {
1806	return protoimpl.X.MessageStringOf(x)
1807}
1808
1809func (*ApplicationJobFilter) ProtoMessage() {}
1810
1811func (x *ApplicationJobFilter) ProtoReflect() protoreflect.Message {
1812	mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[12]
1813	if protoimpl.UnsafeEnabled && x != nil {
1814		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1815		if ms.LoadMessageInfo() == nil {
1816			ms.StoreMessageInfo(mi)
1817		}
1818		return ms
1819	}
1820	return mi.MessageOf(x)
1821}
1822
1823// Deprecated: Use ApplicationJobFilter.ProtoReflect.Descriptor instead.
1824func (*ApplicationJobFilter) Descriptor() ([]byte, []int) {
1825	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{12}
1826}
1827
1828func (x *ApplicationJobFilter) GetJobRequisitionId() string {
1829	if x != nil {
1830		return x.JobRequisitionId
1831	}
1832	return ""
1833}
1834
1835func (x *ApplicationJobFilter) GetJobTitle() string {
1836	if x != nil {
1837		return x.JobTitle
1838	}
1839	return ""
1840}
1841
1842func (x *ApplicationJobFilter) GetNegated() bool {
1843	if x != nil {
1844		return x.Negated
1845	}
1846	return false
1847}
1848
1849// Filter on create timestamp or update timestamp of profiles.
1850type TimeFilter struct {
1851	state         protoimpl.MessageState
1852	sizeCache     protoimpl.SizeCache
1853	unknownFields protoimpl.UnknownFields
1854
1855	// Start timestamp, matching profiles with the start time. If this field
1856	// missing, The API matches profiles with create / update timestamp before the
1857	// end timestamp.
1858	StartTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
1859	// End timestamp, matching profiles with the end time. If this field
1860	// missing, The API matches profiles with create / update timestamp after the
1861	// start timestamp.
1862	EndTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
1863	// Specifies which time field to filter profiles.
1864	//
1865	// Defaults to [TimeField.CREATE_TIME][google.cloud.talent.v4beta1.TimeFilter.TimeField.CREATE_TIME].
1866	TimeField TimeFilter_TimeField `protobuf:"varint,3,opt,name=time_field,json=timeField,proto3,enum=google.cloud.talent.v4beta1.TimeFilter_TimeField" json:"time_field,omitempty"`
1867}
1868
1869func (x *TimeFilter) Reset() {
1870	*x = TimeFilter{}
1871	if protoimpl.UnsafeEnabled {
1872		mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[13]
1873		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1874		ms.StoreMessageInfo(mi)
1875	}
1876}
1877
1878func (x *TimeFilter) String() string {
1879	return protoimpl.X.MessageStringOf(x)
1880}
1881
1882func (*TimeFilter) ProtoMessage() {}
1883
1884func (x *TimeFilter) ProtoReflect() protoreflect.Message {
1885	mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[13]
1886	if protoimpl.UnsafeEnabled && x != nil {
1887		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1888		if ms.LoadMessageInfo() == nil {
1889			ms.StoreMessageInfo(mi)
1890		}
1891		return ms
1892	}
1893	return mi.MessageOf(x)
1894}
1895
1896// Deprecated: Use TimeFilter.ProtoReflect.Descriptor instead.
1897func (*TimeFilter) Descriptor() ([]byte, []int) {
1898	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{13}
1899}
1900
1901func (x *TimeFilter) GetStartTime() *timestamppb.Timestamp {
1902	if x != nil {
1903		return x.StartTime
1904	}
1905	return nil
1906}
1907
1908func (x *TimeFilter) GetEndTime() *timestamppb.Timestamp {
1909	if x != nil {
1910		return x.EndTime
1911	}
1912	return nil
1913}
1914
1915func (x *TimeFilter) GetTimeField() TimeFilter_TimeField {
1916	if x != nil {
1917		return x.TimeField
1918	}
1919	return TimeFilter_TIME_FIELD_UNSPECIFIED
1920}
1921
1922// Deprecated. Use AvailabilityFilter instead.
1923//
1924// Filter on availability signals.
1925//
1926// Deprecated: Do not use.
1927type CandidateAvailabilityFilter struct {
1928	state         protoimpl.MessageState
1929	sizeCache     protoimpl.SizeCache
1930	unknownFields protoimpl.UnknownFields
1931
1932	// It is false by default. If true, API excludes all the potential available
1933	// profiles.
1934	Negated bool `protobuf:"varint,1,opt,name=negated,proto3" json:"negated,omitempty"`
1935}
1936
1937func (x *CandidateAvailabilityFilter) Reset() {
1938	*x = CandidateAvailabilityFilter{}
1939	if protoimpl.UnsafeEnabled {
1940		mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[14]
1941		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1942		ms.StoreMessageInfo(mi)
1943	}
1944}
1945
1946func (x *CandidateAvailabilityFilter) String() string {
1947	return protoimpl.X.MessageStringOf(x)
1948}
1949
1950func (*CandidateAvailabilityFilter) ProtoMessage() {}
1951
1952func (x *CandidateAvailabilityFilter) ProtoReflect() protoreflect.Message {
1953	mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[14]
1954	if protoimpl.UnsafeEnabled && x != nil {
1955		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1956		if ms.LoadMessageInfo() == nil {
1957			ms.StoreMessageInfo(mi)
1958		}
1959		return ms
1960	}
1961	return mi.MessageOf(x)
1962}
1963
1964// Deprecated: Use CandidateAvailabilityFilter.ProtoReflect.Descriptor instead.
1965func (*CandidateAvailabilityFilter) Descriptor() ([]byte, []int) {
1966	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{14}
1967}
1968
1969func (x *CandidateAvailabilityFilter) GetNegated() bool {
1970	if x != nil {
1971		return x.Negated
1972	}
1973	return false
1974}
1975
1976// Filter on availability signals.
1977type AvailabilityFilter struct {
1978	state         protoimpl.MessageState
1979	sizeCache     protoimpl.SizeCache
1980	unknownFields protoimpl.UnknownFields
1981
1982	// Required. Type of signal to apply filter on.
1983	SignalType AvailabilitySignalType `protobuf:"varint,1,opt,name=signal_type,json=signalType,proto3,enum=google.cloud.talent.v4beta1.AvailabilitySignalType" json:"signal_type,omitempty"`
1984	// Required. Range of times to filter candidate signals by.
1985	Range *TimestampRange `protobuf:"bytes,2,opt,name=range,proto3" json:"range,omitempty"`
1986	// If multiple [AvailabilityFilter][google.cloud.talent.v4beta1.AvailabilityFilter] are provided, the default
1987	// behavior is to OR all filters, but if this field is set to true, this
1988	// particular [AvailabilityFilter][google.cloud.talent.v4beta1.AvailabilityFilter] will be AND'ed against other
1989	// [AvailabilityFilter][google.cloud.talent.v4beta1.AvailabilityFilter].
1990	Required bool `protobuf:"varint,3,opt,name=required,proto3" json:"required,omitempty"`
1991}
1992
1993func (x *AvailabilityFilter) Reset() {
1994	*x = AvailabilityFilter{}
1995	if protoimpl.UnsafeEnabled {
1996		mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[15]
1997		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1998		ms.StoreMessageInfo(mi)
1999	}
2000}
2001
2002func (x *AvailabilityFilter) String() string {
2003	return protoimpl.X.MessageStringOf(x)
2004}
2005
2006func (*AvailabilityFilter) ProtoMessage() {}
2007
2008func (x *AvailabilityFilter) ProtoReflect() protoreflect.Message {
2009	mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[15]
2010	if protoimpl.UnsafeEnabled && x != nil {
2011		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2012		if ms.LoadMessageInfo() == nil {
2013			ms.StoreMessageInfo(mi)
2014		}
2015		return ms
2016	}
2017	return mi.MessageOf(x)
2018}
2019
2020// Deprecated: Use AvailabilityFilter.ProtoReflect.Descriptor instead.
2021func (*AvailabilityFilter) Descriptor() ([]byte, []int) {
2022	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{15}
2023}
2024
2025func (x *AvailabilityFilter) GetSignalType() AvailabilitySignalType {
2026	if x != nil {
2027		return x.SignalType
2028	}
2029	return AvailabilitySignalType_AVAILABILITY_SIGNAL_TYPE_UNSPECIFIED
2030}
2031
2032func (x *AvailabilityFilter) GetRange() *TimestampRange {
2033	if x != nil {
2034		return x.Range
2035	}
2036	return nil
2037}
2038
2039func (x *AvailabilityFilter) GetRequired() bool {
2040	if x != nil {
2041		return x.Required
2042	}
2043	return false
2044}
2045
2046// Filter on person name.
2047type PersonNameFilter struct {
2048	state         protoimpl.MessageState
2049	sizeCache     protoimpl.SizeCache
2050	unknownFields protoimpl.UnknownFields
2051
2052	// Required. The person name. For example, "John Smith".
2053	//
2054	// Can be any combination of [PersonName.structured_name.given_name][],
2055	// [PersonName.structured_name.middle_initial][],
2056	// [PersonName.structured_name.family_name][], and
2057	// [PersonName.formatted_name][google.cloud.talent.v4beta1.PersonName.formatted_name].
2058	PersonName string `protobuf:"bytes,1,opt,name=person_name,json=personName,proto3" json:"person_name,omitempty"`
2059}
2060
2061func (x *PersonNameFilter) Reset() {
2062	*x = PersonNameFilter{}
2063	if protoimpl.UnsafeEnabled {
2064		mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[16]
2065		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2066		ms.StoreMessageInfo(mi)
2067	}
2068}
2069
2070func (x *PersonNameFilter) String() string {
2071	return protoimpl.X.MessageStringOf(x)
2072}
2073
2074func (*PersonNameFilter) ProtoMessage() {}
2075
2076func (x *PersonNameFilter) ProtoReflect() protoreflect.Message {
2077	mi := &file_google_cloud_talent_v4beta1_filters_proto_msgTypes[16]
2078	if protoimpl.UnsafeEnabled && x != nil {
2079		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2080		if ms.LoadMessageInfo() == nil {
2081			ms.StoreMessageInfo(mi)
2082		}
2083		return ms
2084	}
2085	return mi.MessageOf(x)
2086}
2087
2088// Deprecated: Use PersonNameFilter.ProtoReflect.Descriptor instead.
2089func (*PersonNameFilter) Descriptor() ([]byte, []int) {
2090	return file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP(), []int{16}
2091}
2092
2093func (x *PersonNameFilter) GetPersonName() string {
2094	if x != nil {
2095		return x.PersonName
2096	}
2097	return ""
2098}
2099
2100var File_google_cloud_talent_v4beta1_filters_proto protoreflect.FileDescriptor
2101
2102var file_google_cloud_talent_v4beta1_filters_proto_rawDesc = []byte{
2103	0x0a, 0x29, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x74,
2104	0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x66, 0x69,
2105	0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1b, 0x67, 0x6f, 0x6f,
2106	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74,
2107	0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
2108	0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76,
2109	0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
2110	0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2f, 0x76,
2111	0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72,
2112	0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
2113	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72,
2114	0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
2115	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e,
2116	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
2117	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
2118	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
2119	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73,
2120	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74,
2121	0x79, 0x70, 0x65, 0x2f, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18,
2122	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6c, 0x61, 0x74, 0x6c,
2123	0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
2124	0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x66, 0x64, 0x61, 0x79, 0x2e,
2125	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70,
2126	0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72,
2127	0x6f, 0x74, 0x6f, 0x22, 0xe7, 0x06, 0x0a, 0x08, 0x4a, 0x6f, 0x62, 0x51, 0x75, 0x65, 0x72, 0x79,
2128	0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
2129	0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f,
2130	0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20,
2131	0x01, 0x28, 0x09, 0x52, 0x11, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61,
2132	0x67, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e,
2133	0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x61,
2134	0x6e, 0x69, 0x65, 0x73, 0x12, 0x56, 0x0a, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
2135	0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b,
2136	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61,
2137	0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63,
2138	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x0f, 0x6c, 0x6f, 0x63,
2139	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4f, 0x0a, 0x0e,
2140	0x6a, 0x6f, 0x62, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04,
2141	0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
2142	0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74,
2143	0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x0d,
2144	0x6a, 0x6f, 0x62, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x51, 0x0a,
2145	0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18,
2146	0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
2147	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65,
2148	0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65,
2149	0x72, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
2150	0x12, 0x32, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x5f, 0x64, 0x69, 0x73, 0x70,
2151	0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52,
2152	0x13, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x79, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e,
2153	0x61, 0x6d, 0x65, 0x73, 0x12, 0x60, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61,
2154	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28,
2155	0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
2156	0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
2157	0x43, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74,
2158	0x65, 0x72, 0x52, 0x12, 0x63, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e,
2159	0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d,
2160	0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65,
2161	0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41,
2162	0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2e,
2163	0x0a, 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x6c, 0x6c, 0x5f,
2164	0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x64, 0x69, 0x73,
2165	0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x6c, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x56,
2166	0x0a, 0x10, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70,
2167	0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
2168	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76,
2169	0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e,
2170	0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e,
2171	0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61,
2172	0x67, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d,
2173	0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x59, 0x0a,
2174	0x12, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61,
2175	0x6e, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
2176	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e,
2177	0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
2178	0x70, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54,
2179	0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x63, 0x6c,
2180	0x75, 0x64, 0x65, 0x64, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52,
2181	0x0c, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x4a, 0x6f, 0x62, 0x73, 0x22, 0xae, 0x0b,
2182	0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x14,
2183	0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71,
2184	0x75, 0x65, 0x72, 0x79, 0x12, 0x56, 0x0a, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
2185	0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b,
2186	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61,
2187	0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63,
2188	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x0f, 0x6c, 0x6f, 0x63,
2189	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x57, 0x0a, 0x11,
2190	0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72,
2191	0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
2192	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34,
2193	0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x46, 0x69,
2194	0x6c, 0x74, 0x65, 0x72, 0x52, 0x0f, 0x6a, 0x6f, 0x62, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x46, 0x69,
2195	0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x56, 0x0a, 0x10, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65,
2196	0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
2197	0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74,
2198	0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x6d,
2199	0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x0f, 0x65, 0x6d,
2200	0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x59, 0x0a,
2201	0x11, 0x65, 0x64, 0x75, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65,
2202	0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
2203	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76,
2204	0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x64, 0x75, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
2205	0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x10, 0x65, 0x64, 0x75, 0x63, 0x61, 0x74, 0x69, 0x6f,
2206	0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4d, 0x0a, 0x0d, 0x73, 0x6b, 0x69, 0x6c,
2207	0x6c, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32,
2208	0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74,
2209	0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x6b,
2210	0x69, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x0c, 0x73, 0x6b, 0x69, 0x6c, 0x6c,
2211	0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x67, 0x0a, 0x16, 0x77, 0x6f, 0x72, 0x6b, 0x5f,
2212	0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65,
2213	0x72, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
2214	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34,
2215	0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69,
2216	0x65, 0x6e, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x14, 0x77, 0x6f, 0x72, 0x6b,
2217	0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
2218	0x12, 0x4a, 0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73,
2219	0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
2220	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62,
2221	0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52,
2222	0x0b, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x41, 0x0a, 0x0e,
2223	0x68, 0x69, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x09,
2224	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
2225	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65,
2226	0x52, 0x0d, 0x68, 0x69, 0x72, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12,
2227	0x6c, 0x0a, 0x18, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64,
2228	0x61, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28,
2229	0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
2230	0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e,
2231	0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x46,
2232	0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x16, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
2233	0x6f, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x85, 0x01,
2234	0x0a, 0x21, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x75,
2235	0x74, 0x63, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74,
2236	0x65, 0x72, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
2237	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e,
2238	0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
2239	0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x63, 0x6f, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x46,
2240	0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x1e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
2241	0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x63, 0x6f, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x46, 0x69,
2242	0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x69, 0x0a, 0x17, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
2243	0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73,
2244	0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
2245	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62,
2246	0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
2247	0x4a, 0x6f, 0x62, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x15, 0x61, 0x70, 0x70, 0x6c, 0x69,
2248	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73,
2249	0x12, 0x36, 0x0a, 0x17, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69,
2250	0x62, 0x75, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x0f, 0x20, 0x01, 0x28,
2251	0x09, 0x52, 0x15, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
2252	0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x80, 0x01, 0x0a, 0x1d, 0x63, 0x61, 0x6e,
2253	0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c,
2254	0x69, 0x74, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b,
2255	0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
2256	0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43,
2257	0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69,
2258	0x6c, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x02, 0x18, 0x01, 0x52, 0x1b,
2259	0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62,
2260	0x69, 0x6c, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x62, 0x0a, 0x14, 0x61,
2261	0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x69, 0x6c, 0x74,
2262	0x65, 0x72, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
2263	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e,
2264	0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69,
2265	0x6c, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x13, 0x61, 0x76, 0x61, 0x69,
2266	0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12,
2267	0x5d, 0x0a, 0x13, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x66,
2268	0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67,
2269	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65,
2270	0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f,
2271	0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x11, 0x70, 0x65, 0x72,
2272	0x73, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x22, 0xad,
2273	0x03, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65,
2274	0x72, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01,
2275	0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x72,
2276	0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
2277	0x52, 0x0a, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2c, 0x0a, 0x07,
2278	0x6c, 0x61, 0x74, 0x5f, 0x6c, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e,
2279	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x4c, 0x61, 0x74, 0x4c,
2280	0x6e, 0x67, 0x52, 0x06, 0x6c, 0x61, 0x74, 0x4c, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x11, 0x64, 0x69,
2281	0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x6d, 0x69, 0x6c, 0x65, 0x73, 0x18,
2282	0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49,
2283	0x6e, 0x4d, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x78, 0x0a, 0x16, 0x74, 0x65, 0x6c, 0x65, 0x63, 0x6f,
2284	0x6d, 0x6d, 0x75, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
2285	0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
2286	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62,
2287	0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c,
2288	0x74, 0x65, 0x72, 0x2e, 0x54, 0x65, 0x6c, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65, 0x50,
2289	0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x15, 0x74, 0x65, 0x6c, 0x65, 0x63,
2290	0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
2291	0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28,
2292	0x08, 0x52, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x22, 0x72, 0x0a, 0x15, 0x54, 0x65,
2293	0x6c, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
2294	0x6e, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x45, 0x4c, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x55,
2295	0x54, 0x45, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x55, 0x4e,
2296	0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x54,
2297	0x45, 0x4c, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x55, 0x54, 0x45, 0x5f, 0x45, 0x58, 0x43, 0x4c, 0x55,
2298	0x44, 0x45, 0x44, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x45, 0x4c, 0x45, 0x43, 0x4f, 0x4d,
2299	0x4d, 0x55, 0x54, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x10, 0x02, 0x22, 0x8b,
2300	0x04, 0x0a, 0x12, 0x43, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46,
2301	0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x53, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
2302	0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
2303	0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61,
2304	0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69,
2305	0x6c, 0x74, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42,
2306	0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x59, 0x0a, 0x05, 0x75, 0x6e,
2307	0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
2308	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e,
2309	0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61,
2310	0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73,
2311	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x6e, 0x69, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05,
2312	0x75, 0x6e, 0x69, 0x74, 0x73, 0x12, 0x55, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03,
2313	0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
2314	0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74,
2315	0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49,
2316	0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e,
2317	0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x65, 0x0a, 0x30,
2318	0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x5f, 0x77, 0x69, 0x74,
2319	0x68, 0x5f, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x63, 0x6f,
2320	0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65,
2321	0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x2b, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x4a,
2322	0x6f, 0x62, 0x73, 0x57, 0x69, 0x74, 0x68, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69,
2323	0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61,
2324	0x6e, 0x67, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x0a, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x79,
2325	0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50,
2326	0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
2327	0x0d, 0x0a, 0x09, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x13,
2328	0x0a, 0x0f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x41, 0x4d, 0x4f, 0x55, 0x4e,
2329	0x54, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x4e, 0x4e, 0x55, 0x41, 0x4c, 0x49, 0x5a, 0x45,
2330	0x44, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x41, 0x4d, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x03, 0x12,
2331	0x1b, 0x0a, 0x17, 0x41, 0x4e, 0x4e, 0x55, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x44, 0x5f, 0x54, 0x4f,
2332	0x54, 0x41, 0x4c, 0x5f, 0x41, 0x4d, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x04, 0x22, 0xb1, 0x04, 0x0a,
2333	0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x56,
2334	0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64,
2335	0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
2336	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62,
2337	0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x68,
2338	0x6f, 0x64, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65,
2339	0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x45, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f,
2340	0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
2341	0x0b, 0x32, 0x13, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e,
2342	0x4c, 0x61, 0x74, 0x4c, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x10, 0x73, 0x74, 0x61,
2343	0x72, 0x74, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x73, 0x12, 0x47, 0x0a,
2344	0x0f, 0x74, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
2345	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
2346	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
2347	0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x76, 0x65, 0x6c, 0x44, 0x75,
2348	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x19, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f,
2349	0x69, 0x6d, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,
2350	0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x61, 0x6c, 0x6c, 0x6f, 0x77,
2351	0x49, 0x6d, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
2352	0x65, 0x73, 0x12, 0x5b, 0x0a, 0x0c, 0x72, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x66, 0x66,
2353	0x69, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
2354	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76,
2355	0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x74, 0x65, 0x46, 0x69,
2356	0x6c, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x6f, 0x61, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63,
2357	0x48, 0x00, 0x52, 0x0b, 0x72, 0x6f, 0x61, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x12,
2358	0x3f, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d,
2359	0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
2360	0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x66, 0x44, 0x61, 0x79, 0x48,
2361	0x00, 0x52, 0x0d, 0x64, 0x65, 0x70, 0x61, 0x72, 0x74, 0x75, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65,
2362	0x22, 0x4c, 0x0a, 0x0b, 0x52, 0x6f, 0x61, 0x64, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x12,
2363	0x1c, 0x0a, 0x18, 0x52, 0x4f, 0x41, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x5f,
2364	0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a,
2365	0x0c, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x5f, 0x46, 0x52, 0x45, 0x45, 0x10, 0x01, 0x12,
2366	0x0d, 0x0a, 0x09, 0x42, 0x55, 0x53, 0x59, 0x5f, 0x48, 0x4f, 0x55, 0x52, 0x10, 0x02, 0x42, 0x10,
2367	0x0a, 0x0e, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
2368	0x22, 0x4c, 0x0a, 0x0e, 0x4a, 0x6f, 0x62, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74,
2369	0x65, 0x72, 0x12, 0x20, 0x0a, 0x09, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18,
2370	0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x6a, 0x6f, 0x62, 0x54,
2371	0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x18,
2372	0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x22, 0x42,
2373	0x0a, 0x0b, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a,
2374	0x05, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
2375	0x02, 0x52, 0x05, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x67, 0x61,
2376	0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74,
2377	0x65, 0x64, 0x22, 0xbf, 0x02, 0x0a, 0x0e, 0x45, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x46,
2378	0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x08, 0x65, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65,
2379	0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x65, 0x6d,
2380	0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02,
2381	0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
2382	0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74,
2383	0x61, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65,
2384	0x72, 0x2e, 0x45, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
2385	0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65,
2386	0x67, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6e, 0x65, 0x67,
2387	0x61, 0x74, 0x65, 0x64, 0x22, 0x9d, 0x01, 0x0a, 0x12, 0x45, 0x6d, 0x70, 0x6c, 0x6f, 0x79, 0x65,
2388	0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x45,
2389	0x4d, 0x50, 0x4c, 0x4f, 0x59, 0x45, 0x52, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x4d,
2390	0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
2391	0x00, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x4c, 0x4c, 0x5f, 0x45, 0x4d, 0x50, 0x4c, 0x4f, 0x59, 0x4d,
2392	0x45, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x53, 0x10, 0x01, 0x12, 0x23, 0x0a,
2393	0x1f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x45, 0x4d, 0x50, 0x4c, 0x4f, 0x59, 0x4d,
2394	0x45, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x53, 0x5f, 0x4f, 0x4e, 0x4c, 0x59,
2395	0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x41, 0x53, 0x54, 0x5f, 0x45, 0x4d, 0x50, 0x4c, 0x4f,
2396	0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x52, 0x44, 0x53, 0x5f, 0x4f, 0x4e,
2397	0x4c, 0x59, 0x10, 0x03, 0x22, 0xb3, 0x01, 0x0a, 0x0f, 0x45, 0x64, 0x75, 0x63, 0x61, 0x74, 0x69,
2398	0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x6f,
2399	0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c,
2400	0x12, 0x24, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x74, 0x75,
2401	0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4f,
2402	0x66, 0x53, 0x74, 0x75, 0x64, 0x79, 0x12, 0x48, 0x0a, 0x0b, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65,
2403	0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f,
2404	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e,
2405	0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x67, 0x72, 0x65, 0x65,
2406	0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x54, 0x79, 0x70, 0x65,
2407	0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28,
2408	0x08, 0x52, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x22, 0x9a, 0x01, 0x0a, 0x14, 0x57,
2409	0x6f, 0x72, 0x6b, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x46, 0x69, 0x6c,
2410	0x74, 0x65, 0x72, 0x12, 0x40, 0x0a, 0x0e, 0x6d, 0x69, 0x6e, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x72,
2411	0x69, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f,
2412	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75,
2413	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x45, 0x78, 0x70, 0x65, 0x72,
2414	0x69, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x40, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x78, 0x70,
2415	0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
2416	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
2417	0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x45, 0x78, 0x70,
2418	0x65, 0x72, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x77, 0x0a, 0x15, 0x41, 0x70, 0x70, 0x6c, 0x69,
2419	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
2420	0x12, 0x30, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01,
2421	0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79,
2422	0x70, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x61,
2423	0x74, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02,
2424	0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79,
2425	0x70, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65,
2426	0x22, 0x63, 0x0a, 0x1d, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f,
2427	0x75, 0x74, 0x63, 0x6f, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65,
2428	0x72, 0x12, 0x28, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x63, 0x6f, 0x6d, 0x65, 0x5f, 0x6e, 0x6f, 0x74,
2429	0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x6f,
2430	0x75, 0x74, 0x63, 0x6f, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6e,
2431	0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6e, 0x65,
2432	0x67, 0x61, 0x74, 0x65, 0x64, 0x22, 0x7b, 0x0a, 0x14, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
2433	0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x2c, 0x0a,
2434	0x12, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
2435	0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6a, 0x6f, 0x62, 0x52, 0x65,
2436	0x71, 0x75, 0x69, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6a,
2437	0x6f, 0x62, 0x5f, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
2438	0x6a, 0x6f, 0x62, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x67, 0x61,
2439	0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74,
2440	0x65, 0x64, 0x22, 0x9b, 0x02, 0x0a, 0x0a, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65,
2441	0x72, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
2442	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
2443	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
2444	0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08,
2445	0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
2446	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
2447	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54,
2448	0x69, 0x6d, 0x65, 0x12, 0x50, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c,
2449	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
2450	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34,
2451	0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
2452	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65,
2453	0x46, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x49, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x46, 0x69, 0x65,
2454	0x6c, 0x64, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44,
2455	0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f,
2456	0x0a, 0x0b, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x01, 0x12,
2457	0x0f, 0x0a, 0x0b, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x02,
2458	0x22, 0x3b, 0x0a, 0x1b, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x41, 0x76, 0x61,
2459	0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12,
2460	0x18, 0x0a, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
2461	0x52, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x3a, 0x02, 0x18, 0x01, 0x22, 0xd3, 0x01,
2462	0x0a, 0x12, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x46, 0x69,
2463	0x6c, 0x74, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x74,
2464	0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
2465	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e,
2466	0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x69,
2467	0x6c, 0x69, 0x74, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03,
2468	0xe0, 0x41, 0x02, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12,
2469	0x46, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b,
2470	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x74, 0x61,
2471	0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x69, 0x6d,
2472	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02,
2473	0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69,
2474	0x72, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69,
2475	0x72, 0x65, 0x64, 0x22, 0x38, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x4e, 0x61, 0x6d,
2476	0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x73, 0x6f,
2477	0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41,
2478	0x02, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x7a, 0x0a,
2479	0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
2480	0x64, 0x2e, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31,
2481	0x42, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
2482	0x5a, 0x41, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
2483	0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f,
2484	0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x74, 0x61,
2485	0x6c, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x34, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x74, 0x61, 0x6c,
2486	0x65, 0x6e, 0x74, 0xa2, 0x02, 0x03, 0x43, 0x54, 0x53, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
2487	0x33,
2488}
2489
2490var (
2491	file_google_cloud_talent_v4beta1_filters_proto_rawDescOnce sync.Once
2492	file_google_cloud_talent_v4beta1_filters_proto_rawDescData = file_google_cloud_talent_v4beta1_filters_proto_rawDesc
2493)
2494
2495func file_google_cloud_talent_v4beta1_filters_proto_rawDescGZIP() []byte {
2496	file_google_cloud_talent_v4beta1_filters_proto_rawDescOnce.Do(func() {
2497		file_google_cloud_talent_v4beta1_filters_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_talent_v4beta1_filters_proto_rawDescData)
2498	})
2499	return file_google_cloud_talent_v4beta1_filters_proto_rawDescData
2500}
2501
2502var file_google_cloud_talent_v4beta1_filters_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
2503var file_google_cloud_talent_v4beta1_filters_proto_msgTypes = make([]protoimpl.MessageInfo, 17)
2504var file_google_cloud_talent_v4beta1_filters_proto_goTypes = []interface{}{
2505	(LocationFilter_TelecommutePreference)(0),  // 0: google.cloud.talent.v4beta1.LocationFilter.TelecommutePreference
2506	(CompensationFilter_FilterType)(0),         // 1: google.cloud.talent.v4beta1.CompensationFilter.FilterType
2507	(CommuteFilter_RoadTraffic)(0),             // 2: google.cloud.talent.v4beta1.CommuteFilter.RoadTraffic
2508	(EmployerFilter_EmployerFilterMode)(0),     // 3: google.cloud.talent.v4beta1.EmployerFilter.EmployerFilterMode
2509	(TimeFilter_TimeField)(0),                  // 4: google.cloud.talent.v4beta1.TimeFilter.TimeField
2510	(*JobQuery)(nil),                           // 5: google.cloud.talent.v4beta1.JobQuery
2511	(*ProfileQuery)(nil),                       // 6: google.cloud.talent.v4beta1.ProfileQuery
2512	(*LocationFilter)(nil),                     // 7: google.cloud.talent.v4beta1.LocationFilter
2513	(*CompensationFilter)(nil),                 // 8: google.cloud.talent.v4beta1.CompensationFilter
2514	(*CommuteFilter)(nil),                      // 9: google.cloud.talent.v4beta1.CommuteFilter
2515	(*JobTitleFilter)(nil),                     // 10: google.cloud.talent.v4beta1.JobTitleFilter
2516	(*SkillFilter)(nil),                        // 11: google.cloud.talent.v4beta1.SkillFilter
2517	(*EmployerFilter)(nil),                     // 12: google.cloud.talent.v4beta1.EmployerFilter
2518	(*EducationFilter)(nil),                    // 13: google.cloud.talent.v4beta1.EducationFilter
2519	(*WorkExperienceFilter)(nil),               // 14: google.cloud.talent.v4beta1.WorkExperienceFilter
2520	(*ApplicationDateFilter)(nil),              // 15: google.cloud.talent.v4beta1.ApplicationDateFilter
2521	(*ApplicationOutcomeNotesFilter)(nil),      // 16: google.cloud.talent.v4beta1.ApplicationOutcomeNotesFilter
2522	(*ApplicationJobFilter)(nil),               // 17: google.cloud.talent.v4beta1.ApplicationJobFilter
2523	(*TimeFilter)(nil),                         // 18: google.cloud.talent.v4beta1.TimeFilter
2524	(*CandidateAvailabilityFilter)(nil),        // 19: google.cloud.talent.v4beta1.CandidateAvailabilityFilter
2525	(*AvailabilityFilter)(nil),                 // 20: google.cloud.talent.v4beta1.AvailabilityFilter
2526	(*PersonNameFilter)(nil),                   // 21: google.cloud.talent.v4beta1.PersonNameFilter
2527	(JobCategory)(0),                           // 22: google.cloud.talent.v4beta1.JobCategory
2528	(EmploymentType)(0),                        // 23: google.cloud.talent.v4beta1.EmploymentType
2529	(*TimestampRange)(nil),                     // 24: google.cloud.talent.v4beta1.TimestampRange
2530	(*wrapperspb.BoolValue)(nil),               // 25: google.protobuf.BoolValue
2531	(*latlng.LatLng)(nil),                      // 26: google.type.LatLng
2532	(CompensationInfo_CompensationUnit)(0),     // 27: google.cloud.talent.v4beta1.CompensationInfo.CompensationUnit
2533	(*CompensationInfo_CompensationRange)(nil), // 28: google.cloud.talent.v4beta1.CompensationInfo.CompensationRange
2534	(CommuteMethod)(0),                         // 29: google.cloud.talent.v4beta1.CommuteMethod
2535	(*durationpb.Duration)(nil),                // 30: google.protobuf.Duration
2536	(*timeofday.TimeOfDay)(nil),                // 31: google.type.TimeOfDay
2537	(DegreeType)(0),                            // 32: google.cloud.talent.v4beta1.DegreeType
2538	(*date.Date)(nil),                          // 33: google.type.Date
2539	(*timestamppb.Timestamp)(nil),              // 34: google.protobuf.Timestamp
2540	(AvailabilitySignalType)(0),                // 35: google.cloud.talent.v4beta1.AvailabilitySignalType
2541}
2542var file_google_cloud_talent_v4beta1_filters_proto_depIdxs = []int32{
2543	7,  // 0: google.cloud.talent.v4beta1.JobQuery.location_filters:type_name -> google.cloud.talent.v4beta1.LocationFilter
2544	22, // 1: google.cloud.talent.v4beta1.JobQuery.job_categories:type_name -> google.cloud.talent.v4beta1.JobCategory
2545	9,  // 2: google.cloud.talent.v4beta1.JobQuery.commute_filter:type_name -> google.cloud.talent.v4beta1.CommuteFilter
2546	8,  // 3: google.cloud.talent.v4beta1.JobQuery.compensation_filter:type_name -> google.cloud.talent.v4beta1.CompensationFilter
2547	23, // 4: google.cloud.talent.v4beta1.JobQuery.employment_types:type_name -> google.cloud.talent.v4beta1.EmploymentType
2548	24, // 5: google.cloud.talent.v4beta1.JobQuery.publish_time_range:type_name -> google.cloud.talent.v4beta1.TimestampRange
2549	7,  // 6: google.cloud.talent.v4beta1.ProfileQuery.location_filters:type_name -> google.cloud.talent.v4beta1.LocationFilter
2550	10, // 7: google.cloud.talent.v4beta1.ProfileQuery.job_title_filters:type_name -> google.cloud.talent.v4beta1.JobTitleFilter
2551	12, // 8: google.cloud.talent.v4beta1.ProfileQuery.employer_filters:type_name -> google.cloud.talent.v4beta1.EmployerFilter
2552	13, // 9: google.cloud.talent.v4beta1.ProfileQuery.education_filters:type_name -> google.cloud.talent.v4beta1.EducationFilter
2553	11, // 10: google.cloud.talent.v4beta1.ProfileQuery.skill_filters:type_name -> google.cloud.talent.v4beta1.SkillFilter
2554	14, // 11: google.cloud.talent.v4beta1.ProfileQuery.work_experience_filter:type_name -> google.cloud.talent.v4beta1.WorkExperienceFilter
2555	18, // 12: google.cloud.talent.v4beta1.ProfileQuery.time_filters:type_name -> google.cloud.talent.v4beta1.TimeFilter
2556	25, // 13: google.cloud.talent.v4beta1.ProfileQuery.hirable_filter:type_name -> google.protobuf.BoolValue
2557	15, // 14: google.cloud.talent.v4beta1.ProfileQuery.application_date_filters:type_name -> google.cloud.talent.v4beta1.ApplicationDateFilter
2558	16, // 15: google.cloud.talent.v4beta1.ProfileQuery.application_outcome_notes_filters:type_name -> google.cloud.talent.v4beta1.ApplicationOutcomeNotesFilter
2559	17, // 16: google.cloud.talent.v4beta1.ProfileQuery.application_job_filters:type_name -> google.cloud.talent.v4beta1.ApplicationJobFilter
2560	19, // 17: google.cloud.talent.v4beta1.ProfileQuery.candidate_availability_filter:type_name -> google.cloud.talent.v4beta1.CandidateAvailabilityFilter
2561	20, // 18: google.cloud.talent.v4beta1.ProfileQuery.availability_filters:type_name -> google.cloud.talent.v4beta1.AvailabilityFilter
2562	21, // 19: google.cloud.talent.v4beta1.ProfileQuery.person_name_filters:type_name -> google.cloud.talent.v4beta1.PersonNameFilter
2563	26, // 20: google.cloud.talent.v4beta1.LocationFilter.lat_lng:type_name -> google.type.LatLng
2564	0,  // 21: google.cloud.talent.v4beta1.LocationFilter.telecommute_preference:type_name -> google.cloud.talent.v4beta1.LocationFilter.TelecommutePreference
2565	1,  // 22: google.cloud.talent.v4beta1.CompensationFilter.type:type_name -> google.cloud.talent.v4beta1.CompensationFilter.FilterType
2566	27, // 23: google.cloud.talent.v4beta1.CompensationFilter.units:type_name -> google.cloud.talent.v4beta1.CompensationInfo.CompensationUnit
2567	28, // 24: google.cloud.talent.v4beta1.CompensationFilter.range:type_name -> google.cloud.talent.v4beta1.CompensationInfo.CompensationRange
2568	29, // 25: google.cloud.talent.v4beta1.CommuteFilter.commute_method:type_name -> google.cloud.talent.v4beta1.CommuteMethod
2569	26, // 26: google.cloud.talent.v4beta1.CommuteFilter.start_coordinates:type_name -> google.type.LatLng
2570	30, // 27: google.cloud.talent.v4beta1.CommuteFilter.travel_duration:type_name -> google.protobuf.Duration
2571	2,  // 28: google.cloud.talent.v4beta1.CommuteFilter.road_traffic:type_name -> google.cloud.talent.v4beta1.CommuteFilter.RoadTraffic
2572	31, // 29: google.cloud.talent.v4beta1.CommuteFilter.departure_time:type_name -> google.type.TimeOfDay
2573	3,  // 30: google.cloud.talent.v4beta1.EmployerFilter.mode:type_name -> google.cloud.talent.v4beta1.EmployerFilter.EmployerFilterMode
2574	32, // 31: google.cloud.talent.v4beta1.EducationFilter.degree_type:type_name -> google.cloud.talent.v4beta1.DegreeType
2575	30, // 32: google.cloud.talent.v4beta1.WorkExperienceFilter.min_experience:type_name -> google.protobuf.Duration
2576	30, // 33: google.cloud.talent.v4beta1.WorkExperienceFilter.max_experience:type_name -> google.protobuf.Duration
2577	33, // 34: google.cloud.talent.v4beta1.ApplicationDateFilter.start_date:type_name -> google.type.Date
2578	33, // 35: google.cloud.talent.v4beta1.ApplicationDateFilter.end_date:type_name -> google.type.Date
2579	34, // 36: google.cloud.talent.v4beta1.TimeFilter.start_time:type_name -> google.protobuf.Timestamp
2580	34, // 37: google.cloud.talent.v4beta1.TimeFilter.end_time:type_name -> google.protobuf.Timestamp
2581	4,  // 38: google.cloud.talent.v4beta1.TimeFilter.time_field:type_name -> google.cloud.talent.v4beta1.TimeFilter.TimeField
2582	35, // 39: google.cloud.talent.v4beta1.AvailabilityFilter.signal_type:type_name -> google.cloud.talent.v4beta1.AvailabilitySignalType
2583	24, // 40: google.cloud.talent.v4beta1.AvailabilityFilter.range:type_name -> google.cloud.talent.v4beta1.TimestampRange
2584	41, // [41:41] is the sub-list for method output_type
2585	41, // [41:41] is the sub-list for method input_type
2586	41, // [41:41] is the sub-list for extension type_name
2587	41, // [41:41] is the sub-list for extension extendee
2588	0,  // [0:41] is the sub-list for field type_name
2589}
2590
2591func init() { file_google_cloud_talent_v4beta1_filters_proto_init() }
2592func file_google_cloud_talent_v4beta1_filters_proto_init() {
2593	if File_google_cloud_talent_v4beta1_filters_proto != nil {
2594		return
2595	}
2596	file_google_cloud_talent_v4beta1_common_proto_init()
2597	if !protoimpl.UnsafeEnabled {
2598		file_google_cloud_talent_v4beta1_filters_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
2599			switch v := v.(*JobQuery); i {
2600			case 0:
2601				return &v.state
2602			case 1:
2603				return &v.sizeCache
2604			case 2:
2605				return &v.unknownFields
2606			default:
2607				return nil
2608			}
2609		}
2610		file_google_cloud_talent_v4beta1_filters_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
2611			switch v := v.(*ProfileQuery); i {
2612			case 0:
2613				return &v.state
2614			case 1:
2615				return &v.sizeCache
2616			case 2:
2617				return &v.unknownFields
2618			default:
2619				return nil
2620			}
2621		}
2622		file_google_cloud_talent_v4beta1_filters_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
2623			switch v := v.(*LocationFilter); i {
2624			case 0:
2625				return &v.state
2626			case 1:
2627				return &v.sizeCache
2628			case 2:
2629				return &v.unknownFields
2630			default:
2631				return nil
2632			}
2633		}
2634		file_google_cloud_talent_v4beta1_filters_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
2635			switch v := v.(*CompensationFilter); i {
2636			case 0:
2637				return &v.state
2638			case 1:
2639				return &v.sizeCache
2640			case 2:
2641				return &v.unknownFields
2642			default:
2643				return nil
2644			}
2645		}
2646		file_google_cloud_talent_v4beta1_filters_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
2647			switch v := v.(*CommuteFilter); i {
2648			case 0:
2649				return &v.state
2650			case 1:
2651				return &v.sizeCache
2652			case 2:
2653				return &v.unknownFields
2654			default:
2655				return nil
2656			}
2657		}
2658		file_google_cloud_talent_v4beta1_filters_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
2659			switch v := v.(*JobTitleFilter); i {
2660			case 0:
2661				return &v.state
2662			case 1:
2663				return &v.sizeCache
2664			case 2:
2665				return &v.unknownFields
2666			default:
2667				return nil
2668			}
2669		}
2670		file_google_cloud_talent_v4beta1_filters_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
2671			switch v := v.(*SkillFilter); i {
2672			case 0:
2673				return &v.state
2674			case 1:
2675				return &v.sizeCache
2676			case 2:
2677				return &v.unknownFields
2678			default:
2679				return nil
2680			}
2681		}
2682		file_google_cloud_talent_v4beta1_filters_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
2683			switch v := v.(*EmployerFilter); i {
2684			case 0:
2685				return &v.state
2686			case 1:
2687				return &v.sizeCache
2688			case 2:
2689				return &v.unknownFields
2690			default:
2691				return nil
2692			}
2693		}
2694		file_google_cloud_talent_v4beta1_filters_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
2695			switch v := v.(*EducationFilter); i {
2696			case 0:
2697				return &v.state
2698			case 1:
2699				return &v.sizeCache
2700			case 2:
2701				return &v.unknownFields
2702			default:
2703				return nil
2704			}
2705		}
2706		file_google_cloud_talent_v4beta1_filters_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
2707			switch v := v.(*WorkExperienceFilter); i {
2708			case 0:
2709				return &v.state
2710			case 1:
2711				return &v.sizeCache
2712			case 2:
2713				return &v.unknownFields
2714			default:
2715				return nil
2716			}
2717		}
2718		file_google_cloud_talent_v4beta1_filters_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
2719			switch v := v.(*ApplicationDateFilter); i {
2720			case 0:
2721				return &v.state
2722			case 1:
2723				return &v.sizeCache
2724			case 2:
2725				return &v.unknownFields
2726			default:
2727				return nil
2728			}
2729		}
2730		file_google_cloud_talent_v4beta1_filters_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
2731			switch v := v.(*ApplicationOutcomeNotesFilter); i {
2732			case 0:
2733				return &v.state
2734			case 1:
2735				return &v.sizeCache
2736			case 2:
2737				return &v.unknownFields
2738			default:
2739				return nil
2740			}
2741		}
2742		file_google_cloud_talent_v4beta1_filters_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
2743			switch v := v.(*ApplicationJobFilter); i {
2744			case 0:
2745				return &v.state
2746			case 1:
2747				return &v.sizeCache
2748			case 2:
2749				return &v.unknownFields
2750			default:
2751				return nil
2752			}
2753		}
2754		file_google_cloud_talent_v4beta1_filters_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
2755			switch v := v.(*TimeFilter); i {
2756			case 0:
2757				return &v.state
2758			case 1:
2759				return &v.sizeCache
2760			case 2:
2761				return &v.unknownFields
2762			default:
2763				return nil
2764			}
2765		}
2766		file_google_cloud_talent_v4beta1_filters_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
2767			switch v := v.(*CandidateAvailabilityFilter); i {
2768			case 0:
2769				return &v.state
2770			case 1:
2771				return &v.sizeCache
2772			case 2:
2773				return &v.unknownFields
2774			default:
2775				return nil
2776			}
2777		}
2778		file_google_cloud_talent_v4beta1_filters_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
2779			switch v := v.(*AvailabilityFilter); i {
2780			case 0:
2781				return &v.state
2782			case 1:
2783				return &v.sizeCache
2784			case 2:
2785				return &v.unknownFields
2786			default:
2787				return nil
2788			}
2789		}
2790		file_google_cloud_talent_v4beta1_filters_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
2791			switch v := v.(*PersonNameFilter); i {
2792			case 0:
2793				return &v.state
2794			case 1:
2795				return &v.sizeCache
2796			case 2:
2797				return &v.unknownFields
2798			default:
2799				return nil
2800			}
2801		}
2802	}
2803	file_google_cloud_talent_v4beta1_filters_proto_msgTypes[4].OneofWrappers = []interface{}{
2804		(*CommuteFilter_RoadTraffic_)(nil),
2805		(*CommuteFilter_DepartureTime)(nil),
2806	}
2807	type x struct{}
2808	out := protoimpl.TypeBuilder{
2809		File: protoimpl.DescBuilder{
2810			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
2811			RawDescriptor: file_google_cloud_talent_v4beta1_filters_proto_rawDesc,
2812			NumEnums:      5,
2813			NumMessages:   17,
2814			NumExtensions: 0,
2815			NumServices:   0,
2816		},
2817		GoTypes:           file_google_cloud_talent_v4beta1_filters_proto_goTypes,
2818		DependencyIndexes: file_google_cloud_talent_v4beta1_filters_proto_depIdxs,
2819		EnumInfos:         file_google_cloud_talent_v4beta1_filters_proto_enumTypes,
2820		MessageInfos:      file_google_cloud_talent_v4beta1_filters_proto_msgTypes,
2821	}.Build()
2822	File_google_cloud_talent_v4beta1_filters_proto = out.File
2823	file_google_cloud_talent_v4beta1_filters_proto_rawDesc = nil
2824	file_google_cloud_talent_v4beta1_filters_proto_goTypes = nil
2825	file_google_cloud_talent_v4beta1_filters_proto_depIdxs = nil
2826}
2827