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.25.0-devel
18// 	protoc        v3.13.0
19// source: google/cloud/iot/v1/resources.proto
20
21package iot
22
23import (
24	reflect "reflect"
25	sync "sync"
26
27	proto "github.com/golang/protobuf/proto"
28	_ "google.golang.org/genproto/googleapis/api/annotations"
29	status "google.golang.org/genproto/googleapis/rpc/status"
30	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
31	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
32	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
33)
34
35const (
36	// Verify that this generated code is sufficiently up-to-date.
37	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
38	// Verify that runtime/protoimpl is sufficiently up-to-date.
39	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
40)
41
42// This is a compile-time assertion that a sufficiently up-to-date version
43// of the legacy proto package is being used.
44const _ = proto.ProtoPackageIsVersion4
45
46// Indicates whether an MQTT connection is enabled or disabled. See the field
47// description for details.
48type MqttState int32
49
50const (
51	// No MQTT state specified. If not specified, MQTT will be enabled by default.
52	MqttState_MQTT_STATE_UNSPECIFIED MqttState = 0
53	// Enables a MQTT connection.
54	MqttState_MQTT_ENABLED MqttState = 1
55	// Disables a MQTT connection.
56	MqttState_MQTT_DISABLED MqttState = 2
57)
58
59// Enum value maps for MqttState.
60var (
61	MqttState_name = map[int32]string{
62		0: "MQTT_STATE_UNSPECIFIED",
63		1: "MQTT_ENABLED",
64		2: "MQTT_DISABLED",
65	}
66	MqttState_value = map[string]int32{
67		"MQTT_STATE_UNSPECIFIED": 0,
68		"MQTT_ENABLED":           1,
69		"MQTT_DISABLED":          2,
70	}
71)
72
73func (x MqttState) Enum() *MqttState {
74	p := new(MqttState)
75	*p = x
76	return p
77}
78
79func (x MqttState) String() string {
80	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
81}
82
83func (MqttState) Descriptor() protoreflect.EnumDescriptor {
84	return file_google_cloud_iot_v1_resources_proto_enumTypes[0].Descriptor()
85}
86
87func (MqttState) Type() protoreflect.EnumType {
88	return &file_google_cloud_iot_v1_resources_proto_enumTypes[0]
89}
90
91func (x MqttState) Number() protoreflect.EnumNumber {
92	return protoreflect.EnumNumber(x)
93}
94
95// Deprecated: Use MqttState.Descriptor instead.
96func (MqttState) EnumDescriptor() ([]byte, []int) {
97	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{0}
98}
99
100// Indicates whether DeviceService (HTTP) is enabled or disabled for the
101// registry. See the field description for details.
102type HttpState int32
103
104const (
105	// No HTTP state specified. If not specified, DeviceService will be
106	// enabled by default.
107	HttpState_HTTP_STATE_UNSPECIFIED HttpState = 0
108	// Enables DeviceService (HTTP) service for the registry.
109	HttpState_HTTP_ENABLED HttpState = 1
110	// Disables DeviceService (HTTP) service for the registry.
111	HttpState_HTTP_DISABLED HttpState = 2
112)
113
114// Enum value maps for HttpState.
115var (
116	HttpState_name = map[int32]string{
117		0: "HTTP_STATE_UNSPECIFIED",
118		1: "HTTP_ENABLED",
119		2: "HTTP_DISABLED",
120	}
121	HttpState_value = map[string]int32{
122		"HTTP_STATE_UNSPECIFIED": 0,
123		"HTTP_ENABLED":           1,
124		"HTTP_DISABLED":          2,
125	}
126)
127
128func (x HttpState) Enum() *HttpState {
129	p := new(HttpState)
130	*p = x
131	return p
132}
133
134func (x HttpState) String() string {
135	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
136}
137
138func (HttpState) Descriptor() protoreflect.EnumDescriptor {
139	return file_google_cloud_iot_v1_resources_proto_enumTypes[1].Descriptor()
140}
141
142func (HttpState) Type() protoreflect.EnumType {
143	return &file_google_cloud_iot_v1_resources_proto_enumTypes[1]
144}
145
146func (x HttpState) Number() protoreflect.EnumNumber {
147	return protoreflect.EnumNumber(x)
148}
149
150// Deprecated: Use HttpState.Descriptor instead.
151func (HttpState) EnumDescriptor() ([]byte, []int) {
152	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{1}
153}
154
155// **Beta Feature**
156//
157// The logging verbosity for device activity. Specifies which events should be
158// written to logs. For example, if the LogLevel is ERROR, only events that
159// terminate in errors will be logged. LogLevel is inclusive; enabling INFO
160// logging will also enable ERROR logging.
161type LogLevel int32
162
163const (
164	// No logging specified. If not specified, logging will be disabled.
165	LogLevel_LOG_LEVEL_UNSPECIFIED LogLevel = 0
166	// Disables logging.
167	LogLevel_NONE LogLevel = 10
168	// Error events will be logged.
169	LogLevel_ERROR LogLevel = 20
170	// Informational events will be logged, such as connections and
171	// disconnections.
172	LogLevel_INFO LogLevel = 30
173	// All events will be logged.
174	LogLevel_DEBUG LogLevel = 40
175)
176
177// Enum value maps for LogLevel.
178var (
179	LogLevel_name = map[int32]string{
180		0:  "LOG_LEVEL_UNSPECIFIED",
181		10: "NONE",
182		20: "ERROR",
183		30: "INFO",
184		40: "DEBUG",
185	}
186	LogLevel_value = map[string]int32{
187		"LOG_LEVEL_UNSPECIFIED": 0,
188		"NONE":                  10,
189		"ERROR":                 20,
190		"INFO":                  30,
191		"DEBUG":                 40,
192	}
193)
194
195func (x LogLevel) Enum() *LogLevel {
196	p := new(LogLevel)
197	*p = x
198	return p
199}
200
201func (x LogLevel) String() string {
202	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
203}
204
205func (LogLevel) Descriptor() protoreflect.EnumDescriptor {
206	return file_google_cloud_iot_v1_resources_proto_enumTypes[2].Descriptor()
207}
208
209func (LogLevel) Type() protoreflect.EnumType {
210	return &file_google_cloud_iot_v1_resources_proto_enumTypes[2]
211}
212
213func (x LogLevel) Number() protoreflect.EnumNumber {
214	return protoreflect.EnumNumber(x)
215}
216
217// Deprecated: Use LogLevel.Descriptor instead.
218func (LogLevel) EnumDescriptor() ([]byte, []int) {
219	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{2}
220}
221
222// Gateway type.
223type GatewayType int32
224
225const (
226	// If unspecified, the device is considered a non-gateway device.
227	GatewayType_GATEWAY_TYPE_UNSPECIFIED GatewayType = 0
228	// The device is a gateway.
229	GatewayType_GATEWAY GatewayType = 1
230	// The device is not a gateway.
231	GatewayType_NON_GATEWAY GatewayType = 2
232)
233
234// Enum value maps for GatewayType.
235var (
236	GatewayType_name = map[int32]string{
237		0: "GATEWAY_TYPE_UNSPECIFIED",
238		1: "GATEWAY",
239		2: "NON_GATEWAY",
240	}
241	GatewayType_value = map[string]int32{
242		"GATEWAY_TYPE_UNSPECIFIED": 0,
243		"GATEWAY":                  1,
244		"NON_GATEWAY":              2,
245	}
246)
247
248func (x GatewayType) Enum() *GatewayType {
249	p := new(GatewayType)
250	*p = x
251	return p
252}
253
254func (x GatewayType) String() string {
255	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
256}
257
258func (GatewayType) Descriptor() protoreflect.EnumDescriptor {
259	return file_google_cloud_iot_v1_resources_proto_enumTypes[3].Descriptor()
260}
261
262func (GatewayType) Type() protoreflect.EnumType {
263	return &file_google_cloud_iot_v1_resources_proto_enumTypes[3]
264}
265
266func (x GatewayType) Number() protoreflect.EnumNumber {
267	return protoreflect.EnumNumber(x)
268}
269
270// Deprecated: Use GatewayType.Descriptor instead.
271func (GatewayType) EnumDescriptor() ([]byte, []int) {
272	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{3}
273}
274
275// The gateway authorization/authentication method. This setting determines how
276// Cloud IoT Core authorizes/authenticate devices to access the gateway.
277type GatewayAuthMethod int32
278
279const (
280	// No authentication/authorization method specified. No devices are allowed to
281	// access the gateway.
282	GatewayAuthMethod_GATEWAY_AUTH_METHOD_UNSPECIFIED GatewayAuthMethod = 0
283	// The device is authenticated through the gateway association only. Device
284	// credentials are ignored even if provided.
285	GatewayAuthMethod_ASSOCIATION_ONLY GatewayAuthMethod = 1
286	// The device is authenticated through its own credentials. Gateway
287	// association is not checked.
288	GatewayAuthMethod_DEVICE_AUTH_TOKEN_ONLY GatewayAuthMethod = 2
289	// The device is authenticated through both device credentials and gateway
290	// association. The device must be bound to the gateway and must provide its
291	// own credentials.
292	GatewayAuthMethod_ASSOCIATION_AND_DEVICE_AUTH_TOKEN GatewayAuthMethod = 3
293)
294
295// Enum value maps for GatewayAuthMethod.
296var (
297	GatewayAuthMethod_name = map[int32]string{
298		0: "GATEWAY_AUTH_METHOD_UNSPECIFIED",
299		1: "ASSOCIATION_ONLY",
300		2: "DEVICE_AUTH_TOKEN_ONLY",
301		3: "ASSOCIATION_AND_DEVICE_AUTH_TOKEN",
302	}
303	GatewayAuthMethod_value = map[string]int32{
304		"GATEWAY_AUTH_METHOD_UNSPECIFIED":   0,
305		"ASSOCIATION_ONLY":                  1,
306		"DEVICE_AUTH_TOKEN_ONLY":            2,
307		"ASSOCIATION_AND_DEVICE_AUTH_TOKEN": 3,
308	}
309)
310
311func (x GatewayAuthMethod) Enum() *GatewayAuthMethod {
312	p := new(GatewayAuthMethod)
313	*p = x
314	return p
315}
316
317func (x GatewayAuthMethod) String() string {
318	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
319}
320
321func (GatewayAuthMethod) Descriptor() protoreflect.EnumDescriptor {
322	return file_google_cloud_iot_v1_resources_proto_enumTypes[4].Descriptor()
323}
324
325func (GatewayAuthMethod) Type() protoreflect.EnumType {
326	return &file_google_cloud_iot_v1_resources_proto_enumTypes[4]
327}
328
329func (x GatewayAuthMethod) Number() protoreflect.EnumNumber {
330	return protoreflect.EnumNumber(x)
331}
332
333// Deprecated: Use GatewayAuthMethod.Descriptor instead.
334func (GatewayAuthMethod) EnumDescriptor() ([]byte, []int) {
335	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{4}
336}
337
338// The supported formats for the public key.
339type PublicKeyCertificateFormat int32
340
341const (
342	// The format has not been specified. This is an invalid default value and
343	// must not be used.
344	PublicKeyCertificateFormat_UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT PublicKeyCertificateFormat = 0
345	// An X.509v3 certificate ([RFC5280](https://www.ietf.org/rfc/rfc5280.txt)),
346	// encoded in base64, and wrapped by `-----BEGIN CERTIFICATE-----` and
347	// `-----END CERTIFICATE-----`.
348	PublicKeyCertificateFormat_X509_CERTIFICATE_PEM PublicKeyCertificateFormat = 1
349)
350
351// Enum value maps for PublicKeyCertificateFormat.
352var (
353	PublicKeyCertificateFormat_name = map[int32]string{
354		0: "UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT",
355		1: "X509_CERTIFICATE_PEM",
356	}
357	PublicKeyCertificateFormat_value = map[string]int32{
358		"UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT": 0,
359		"X509_CERTIFICATE_PEM":                      1,
360	}
361)
362
363func (x PublicKeyCertificateFormat) Enum() *PublicKeyCertificateFormat {
364	p := new(PublicKeyCertificateFormat)
365	*p = x
366	return p
367}
368
369func (x PublicKeyCertificateFormat) String() string {
370	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
371}
372
373func (PublicKeyCertificateFormat) Descriptor() protoreflect.EnumDescriptor {
374	return file_google_cloud_iot_v1_resources_proto_enumTypes[5].Descriptor()
375}
376
377func (PublicKeyCertificateFormat) Type() protoreflect.EnumType {
378	return &file_google_cloud_iot_v1_resources_proto_enumTypes[5]
379}
380
381func (x PublicKeyCertificateFormat) Number() protoreflect.EnumNumber {
382	return protoreflect.EnumNumber(x)
383}
384
385// Deprecated: Use PublicKeyCertificateFormat.Descriptor instead.
386func (PublicKeyCertificateFormat) EnumDescriptor() ([]byte, []int) {
387	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{5}
388}
389
390// The supported formats for the public key.
391type PublicKeyFormat int32
392
393const (
394	// The format has not been specified. This is an invalid default value and
395	// must not be used.
396	PublicKeyFormat_UNSPECIFIED_PUBLIC_KEY_FORMAT PublicKeyFormat = 0
397	// An RSA public key encoded in base64, and wrapped by
398	// `-----BEGIN PUBLIC KEY-----` and `-----END PUBLIC KEY-----`. This can be
399	// used to verify `RS256` signatures in JWT tokens ([RFC7518](
400	// https://www.ietf.org/rfc/rfc7518.txt)).
401	PublicKeyFormat_RSA_PEM PublicKeyFormat = 3
402	// As RSA_PEM, but wrapped in an X.509v3 certificate ([RFC5280](
403	// https://www.ietf.org/rfc/rfc5280.txt)), encoded in base64, and wrapped by
404	// `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`.
405	PublicKeyFormat_RSA_X509_PEM PublicKeyFormat = 1
406	// Public key for the ECDSA algorithm using P-256 and SHA-256, encoded in
407	// base64, and wrapped by `-----BEGIN PUBLIC KEY-----` and `-----END
408	// PUBLIC KEY-----`. This can be used to verify JWT tokens with the `ES256`
409	// algorithm ([RFC7518](https://www.ietf.org/rfc/rfc7518.txt)). This curve is
410	// defined in [OpenSSL](https://www.openssl.org/) as the `prime256v1` curve.
411	PublicKeyFormat_ES256_PEM PublicKeyFormat = 2
412	// As ES256_PEM, but wrapped in an X.509v3 certificate ([RFC5280](
413	// https://www.ietf.org/rfc/rfc5280.txt)), encoded in base64, and wrapped by
414	// `-----BEGIN CERTIFICATE-----` and `-----END CERTIFICATE-----`.
415	PublicKeyFormat_ES256_X509_PEM PublicKeyFormat = 4
416)
417
418// Enum value maps for PublicKeyFormat.
419var (
420	PublicKeyFormat_name = map[int32]string{
421		0: "UNSPECIFIED_PUBLIC_KEY_FORMAT",
422		3: "RSA_PEM",
423		1: "RSA_X509_PEM",
424		2: "ES256_PEM",
425		4: "ES256_X509_PEM",
426	}
427	PublicKeyFormat_value = map[string]int32{
428		"UNSPECIFIED_PUBLIC_KEY_FORMAT": 0,
429		"RSA_PEM":                       3,
430		"RSA_X509_PEM":                  1,
431		"ES256_PEM":                     2,
432		"ES256_X509_PEM":                4,
433	}
434)
435
436func (x PublicKeyFormat) Enum() *PublicKeyFormat {
437	p := new(PublicKeyFormat)
438	*p = x
439	return p
440}
441
442func (x PublicKeyFormat) String() string {
443	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
444}
445
446func (PublicKeyFormat) Descriptor() protoreflect.EnumDescriptor {
447	return file_google_cloud_iot_v1_resources_proto_enumTypes[6].Descriptor()
448}
449
450func (PublicKeyFormat) Type() protoreflect.EnumType {
451	return &file_google_cloud_iot_v1_resources_proto_enumTypes[6]
452}
453
454func (x PublicKeyFormat) Number() protoreflect.EnumNumber {
455	return protoreflect.EnumNumber(x)
456}
457
458// Deprecated: Use PublicKeyFormat.Descriptor instead.
459func (PublicKeyFormat) EnumDescriptor() ([]byte, []int) {
460	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{6}
461}
462
463// The device resource.
464type Device struct {
465	state         protoimpl.MessageState
466	sizeCache     protoimpl.SizeCache
467	unknownFields protoimpl.UnknownFields
468
469	// The user-defined device identifier. The device ID must be unique
470	// within a device registry.
471	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
472	// The resource path name. For example,
473	// `projects/p1/locations/us-central1/registries/registry0/devices/dev0` or
474	// `projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`.
475	// When `name` is populated as a response from the service, it always ends
476	// in the device numeric ID.
477	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
478	// [Output only] A server-defined unique numeric ID for the device. This is a
479	// more compact way to identify devices, and it is globally unique.
480	NumId uint64 `protobuf:"varint,3,opt,name=num_id,json=numId,proto3" json:"num_id,omitempty"`
481	// The credentials used to authenticate this device. To allow credential
482	// rotation without interruption, multiple device credentials can be bound to
483	// this device. No more than 3 credentials can be bound to a single device at
484	// a time. When new credentials are added to a device, they are verified
485	// against the registry credentials. For details, see the description of the
486	// `DeviceRegistry.credentials` field.
487	Credentials []*DeviceCredential `protobuf:"bytes,12,rep,name=credentials,proto3" json:"credentials,omitempty"`
488	// [Output only] The last time an MQTT `PINGREQ` was received. This field
489	// applies only to devices connecting through MQTT. MQTT clients usually only
490	// send `PINGREQ` messages if the connection is idle, and no other messages
491	// have been sent. Timestamps are periodically collected and written to
492	// storage; they may be stale by a few minutes.
493	LastHeartbeatTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=last_heartbeat_time,json=lastHeartbeatTime,proto3" json:"last_heartbeat_time,omitempty"`
494	// [Output only] The last time a telemetry event was received. Timestamps are
495	// periodically collected and written to storage; they may be stale by a few
496	// minutes.
497	LastEventTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=last_event_time,json=lastEventTime,proto3" json:"last_event_time,omitempty"`
498	// [Output only] The last time a state event was received. Timestamps are
499	// periodically collected and written to storage; they may be stale by a few
500	// minutes.
501	LastStateTime *timestamppb.Timestamp `protobuf:"bytes,20,opt,name=last_state_time,json=lastStateTime,proto3" json:"last_state_time,omitempty"`
502	// [Output only] The last time a cloud-to-device config version acknowledgment
503	// was received from the device. This field is only for configurations
504	// sent through MQTT.
505	LastConfigAckTime *timestamppb.Timestamp `protobuf:"bytes,14,opt,name=last_config_ack_time,json=lastConfigAckTime,proto3" json:"last_config_ack_time,omitempty"`
506	// [Output only] The last time a cloud-to-device config version was sent to
507	// the device.
508	LastConfigSendTime *timestamppb.Timestamp `protobuf:"bytes,18,opt,name=last_config_send_time,json=lastConfigSendTime,proto3" json:"last_config_send_time,omitempty"`
509	// If a device is blocked, connections or requests from this device will fail.
510	// Can be used to temporarily prevent the device from connecting if, for
511	// example, the sensor is generating bad data and needs maintenance.
512	Blocked bool `protobuf:"varint,19,opt,name=blocked,proto3" json:"blocked,omitempty"`
513	// [Output only] The time the most recent error occurred, such as a failure to
514	// publish to Cloud Pub/Sub. This field is the timestamp of
515	// 'last_error_status'.
516	LastErrorTime *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=last_error_time,json=lastErrorTime,proto3" json:"last_error_time,omitempty"`
517	// [Output only] The error message of the most recent error, such as a failure
518	// to publish to Cloud Pub/Sub. 'last_error_time' is the timestamp of this
519	// field. If no errors have occurred, this field has an empty message
520	// and the status code 0 == OK. Otherwise, this field is expected to have a
521	// status code other than OK.
522	LastErrorStatus *status.Status `protobuf:"bytes,11,opt,name=last_error_status,json=lastErrorStatus,proto3" json:"last_error_status,omitempty"`
523	// The most recent device configuration, which is eventually sent from
524	// Cloud IoT Core to the device. If not present on creation, the
525	// configuration will be initialized with an empty payload and version value
526	// of `1`. To update this field after creation, use the
527	// `DeviceManager.ModifyCloudToDeviceConfig` method.
528	Config *DeviceConfig `protobuf:"bytes,13,opt,name=config,proto3" json:"config,omitempty"`
529	// [Output only] The state most recently received from the device. If no state
530	// has been reported, this field is not present.
531	State *DeviceState `protobuf:"bytes,16,opt,name=state,proto3" json:"state,omitempty"`
532	// **Beta Feature**
533	//
534	// The logging verbosity for device activity. If unspecified,
535	// DeviceRegistry.log_level will be used.
536	LogLevel LogLevel `protobuf:"varint,21,opt,name=log_level,json=logLevel,proto3,enum=google.cloud.iot.v1.LogLevel" json:"log_level,omitempty"`
537	// The metadata key-value pairs assigned to the device. This metadata is not
538	// interpreted or indexed by Cloud IoT Core. It can be used to add contextual
539	// information for the device.
540	//
541	// Keys must conform to the regular expression [a-zA-Z][a-zA-Z0-9-_.+~%]+ and
542	// be less than 128 bytes in length.
543	//
544	// Values are free-form strings. Each value must be less than or equal to 32
545	// KB in size.
546	//
547	// The total size of all keys and values must be less than 256 KB, and the
548	// maximum number of key-value pairs is 500.
549	Metadata map[string]string `protobuf:"bytes,17,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
550	// Gateway-related configuration and state.
551	GatewayConfig *GatewayConfig `protobuf:"bytes,24,opt,name=gateway_config,json=gatewayConfig,proto3" json:"gateway_config,omitempty"`
552}
553
554func (x *Device) Reset() {
555	*x = Device{}
556	if protoimpl.UnsafeEnabled {
557		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[0]
558		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
559		ms.StoreMessageInfo(mi)
560	}
561}
562
563func (x *Device) String() string {
564	return protoimpl.X.MessageStringOf(x)
565}
566
567func (*Device) ProtoMessage() {}
568
569func (x *Device) ProtoReflect() protoreflect.Message {
570	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[0]
571	if protoimpl.UnsafeEnabled && x != nil {
572		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
573		if ms.LoadMessageInfo() == nil {
574			ms.StoreMessageInfo(mi)
575		}
576		return ms
577	}
578	return mi.MessageOf(x)
579}
580
581// Deprecated: Use Device.ProtoReflect.Descriptor instead.
582func (*Device) Descriptor() ([]byte, []int) {
583	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{0}
584}
585
586func (x *Device) GetId() string {
587	if x != nil {
588		return x.Id
589	}
590	return ""
591}
592
593func (x *Device) GetName() string {
594	if x != nil {
595		return x.Name
596	}
597	return ""
598}
599
600func (x *Device) GetNumId() uint64 {
601	if x != nil {
602		return x.NumId
603	}
604	return 0
605}
606
607func (x *Device) GetCredentials() []*DeviceCredential {
608	if x != nil {
609		return x.Credentials
610	}
611	return nil
612}
613
614func (x *Device) GetLastHeartbeatTime() *timestamppb.Timestamp {
615	if x != nil {
616		return x.LastHeartbeatTime
617	}
618	return nil
619}
620
621func (x *Device) GetLastEventTime() *timestamppb.Timestamp {
622	if x != nil {
623		return x.LastEventTime
624	}
625	return nil
626}
627
628func (x *Device) GetLastStateTime() *timestamppb.Timestamp {
629	if x != nil {
630		return x.LastStateTime
631	}
632	return nil
633}
634
635func (x *Device) GetLastConfigAckTime() *timestamppb.Timestamp {
636	if x != nil {
637		return x.LastConfigAckTime
638	}
639	return nil
640}
641
642func (x *Device) GetLastConfigSendTime() *timestamppb.Timestamp {
643	if x != nil {
644		return x.LastConfigSendTime
645	}
646	return nil
647}
648
649func (x *Device) GetBlocked() bool {
650	if x != nil {
651		return x.Blocked
652	}
653	return false
654}
655
656func (x *Device) GetLastErrorTime() *timestamppb.Timestamp {
657	if x != nil {
658		return x.LastErrorTime
659	}
660	return nil
661}
662
663func (x *Device) GetLastErrorStatus() *status.Status {
664	if x != nil {
665		return x.LastErrorStatus
666	}
667	return nil
668}
669
670func (x *Device) GetConfig() *DeviceConfig {
671	if x != nil {
672		return x.Config
673	}
674	return nil
675}
676
677func (x *Device) GetState() *DeviceState {
678	if x != nil {
679		return x.State
680	}
681	return nil
682}
683
684func (x *Device) GetLogLevel() LogLevel {
685	if x != nil {
686		return x.LogLevel
687	}
688	return LogLevel_LOG_LEVEL_UNSPECIFIED
689}
690
691func (x *Device) GetMetadata() map[string]string {
692	if x != nil {
693		return x.Metadata
694	}
695	return nil
696}
697
698func (x *Device) GetGatewayConfig() *GatewayConfig {
699	if x != nil {
700		return x.GatewayConfig
701	}
702	return nil
703}
704
705// Gateway-related configuration and state.
706type GatewayConfig struct {
707	state         protoimpl.MessageState
708	sizeCache     protoimpl.SizeCache
709	unknownFields protoimpl.UnknownFields
710
711	// Indicates whether the device is a gateway.
712	GatewayType GatewayType `protobuf:"varint,1,opt,name=gateway_type,json=gatewayType,proto3,enum=google.cloud.iot.v1.GatewayType" json:"gateway_type,omitempty"`
713	// Indicates how to authorize and/or authenticate devices to access the
714	// gateway.
715	GatewayAuthMethod GatewayAuthMethod `protobuf:"varint,2,opt,name=gateway_auth_method,json=gatewayAuthMethod,proto3,enum=google.cloud.iot.v1.GatewayAuthMethod" json:"gateway_auth_method,omitempty"`
716	// [Output only] The ID of the gateway the device accessed most recently.
717	LastAccessedGatewayId string `protobuf:"bytes,3,opt,name=last_accessed_gateway_id,json=lastAccessedGatewayId,proto3" json:"last_accessed_gateway_id,omitempty"`
718	// [Output only] The most recent time at which the device accessed the gateway
719	// specified in `last_accessed_gateway`.
720	LastAccessedGatewayTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=last_accessed_gateway_time,json=lastAccessedGatewayTime,proto3" json:"last_accessed_gateway_time,omitempty"`
721}
722
723func (x *GatewayConfig) Reset() {
724	*x = GatewayConfig{}
725	if protoimpl.UnsafeEnabled {
726		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[1]
727		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
728		ms.StoreMessageInfo(mi)
729	}
730}
731
732func (x *GatewayConfig) String() string {
733	return protoimpl.X.MessageStringOf(x)
734}
735
736func (*GatewayConfig) ProtoMessage() {}
737
738func (x *GatewayConfig) ProtoReflect() protoreflect.Message {
739	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[1]
740	if protoimpl.UnsafeEnabled && x != nil {
741		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
742		if ms.LoadMessageInfo() == nil {
743			ms.StoreMessageInfo(mi)
744		}
745		return ms
746	}
747	return mi.MessageOf(x)
748}
749
750// Deprecated: Use GatewayConfig.ProtoReflect.Descriptor instead.
751func (*GatewayConfig) Descriptor() ([]byte, []int) {
752	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{1}
753}
754
755func (x *GatewayConfig) GetGatewayType() GatewayType {
756	if x != nil {
757		return x.GatewayType
758	}
759	return GatewayType_GATEWAY_TYPE_UNSPECIFIED
760}
761
762func (x *GatewayConfig) GetGatewayAuthMethod() GatewayAuthMethod {
763	if x != nil {
764		return x.GatewayAuthMethod
765	}
766	return GatewayAuthMethod_GATEWAY_AUTH_METHOD_UNSPECIFIED
767}
768
769func (x *GatewayConfig) GetLastAccessedGatewayId() string {
770	if x != nil {
771		return x.LastAccessedGatewayId
772	}
773	return ""
774}
775
776func (x *GatewayConfig) GetLastAccessedGatewayTime() *timestamppb.Timestamp {
777	if x != nil {
778		return x.LastAccessedGatewayTime
779	}
780	return nil
781}
782
783// A container for a group of devices.
784type DeviceRegistry struct {
785	state         protoimpl.MessageState
786	sizeCache     protoimpl.SizeCache
787	unknownFields protoimpl.UnknownFields
788
789	// The identifier of this device registry. For example, `myRegistry`.
790	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
791	// The resource path name. For example,
792	// `projects/example-project/locations/us-central1/registries/my-registry`.
793	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
794	// The configuration for notification of telemetry events received from the
795	// device. All telemetry events that were successfully published by the
796	// device and acknowledged by Cloud IoT Core are guaranteed to be
797	// delivered to Cloud Pub/Sub. If multiple configurations match a message,
798	// only the first matching configuration is used. If you try to publish a
799	// device telemetry event using MQTT without specifying a Cloud Pub/Sub topic
800	// for the device's registry, the connection closes automatically. If you try
801	// to do so using an HTTP connection, an error is returned. Up to 10
802	// configurations may be provided.
803	EventNotificationConfigs []*EventNotificationConfig `protobuf:"bytes,10,rep,name=event_notification_configs,json=eventNotificationConfigs,proto3" json:"event_notification_configs,omitempty"`
804	// The configuration for notification of new states received from the device.
805	// State updates are guaranteed to be stored in the state history, but
806	// notifications to Cloud Pub/Sub are not guaranteed. For example, if
807	// permissions are misconfigured or the specified topic doesn't exist, no
808	// notification will be published but the state will still be stored in Cloud
809	// IoT Core.
810	StateNotificationConfig *StateNotificationConfig `protobuf:"bytes,7,opt,name=state_notification_config,json=stateNotificationConfig,proto3" json:"state_notification_config,omitempty"`
811	// The MQTT configuration for this device registry.
812	MqttConfig *MqttConfig `protobuf:"bytes,4,opt,name=mqtt_config,json=mqttConfig,proto3" json:"mqtt_config,omitempty"`
813	// The DeviceService (HTTP) configuration for this device registry.
814	HttpConfig *HttpConfig `protobuf:"bytes,9,opt,name=http_config,json=httpConfig,proto3" json:"http_config,omitempty"`
815	// **Beta Feature**
816	//
817	// The default logging verbosity for activity from devices in this registry.
818	// The verbosity level can be overridden by Device.log_level.
819	LogLevel LogLevel `protobuf:"varint,11,opt,name=log_level,json=logLevel,proto3,enum=google.cloud.iot.v1.LogLevel" json:"log_level,omitempty"`
820	// The credentials used to verify the device credentials. No more than 10
821	// credentials can be bound to a single registry at a time. The verification
822	// process occurs at the time of device creation or update. If this field is
823	// empty, no verification is performed. Otherwise, the credentials of a newly
824	// created device or added credentials of an updated device should be signed
825	// with one of these registry credentials.
826	//
827	// Note, however, that existing devices will never be affected by
828	// modifications to this list of credentials: after a device has been
829	// successfully created in a registry, it should be able to connect even if
830	// its registry credentials are revoked, deleted, or modified.
831	Credentials []*RegistryCredential `protobuf:"bytes,8,rep,name=credentials,proto3" json:"credentials,omitempty"`
832}
833
834func (x *DeviceRegistry) Reset() {
835	*x = DeviceRegistry{}
836	if protoimpl.UnsafeEnabled {
837		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[2]
838		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
839		ms.StoreMessageInfo(mi)
840	}
841}
842
843func (x *DeviceRegistry) String() string {
844	return protoimpl.X.MessageStringOf(x)
845}
846
847func (*DeviceRegistry) ProtoMessage() {}
848
849func (x *DeviceRegistry) ProtoReflect() protoreflect.Message {
850	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[2]
851	if protoimpl.UnsafeEnabled && x != nil {
852		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
853		if ms.LoadMessageInfo() == nil {
854			ms.StoreMessageInfo(mi)
855		}
856		return ms
857	}
858	return mi.MessageOf(x)
859}
860
861// Deprecated: Use DeviceRegistry.ProtoReflect.Descriptor instead.
862func (*DeviceRegistry) Descriptor() ([]byte, []int) {
863	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{2}
864}
865
866func (x *DeviceRegistry) GetId() string {
867	if x != nil {
868		return x.Id
869	}
870	return ""
871}
872
873func (x *DeviceRegistry) GetName() string {
874	if x != nil {
875		return x.Name
876	}
877	return ""
878}
879
880func (x *DeviceRegistry) GetEventNotificationConfigs() []*EventNotificationConfig {
881	if x != nil {
882		return x.EventNotificationConfigs
883	}
884	return nil
885}
886
887func (x *DeviceRegistry) GetStateNotificationConfig() *StateNotificationConfig {
888	if x != nil {
889		return x.StateNotificationConfig
890	}
891	return nil
892}
893
894func (x *DeviceRegistry) GetMqttConfig() *MqttConfig {
895	if x != nil {
896		return x.MqttConfig
897	}
898	return nil
899}
900
901func (x *DeviceRegistry) GetHttpConfig() *HttpConfig {
902	if x != nil {
903		return x.HttpConfig
904	}
905	return nil
906}
907
908func (x *DeviceRegistry) GetLogLevel() LogLevel {
909	if x != nil {
910		return x.LogLevel
911	}
912	return LogLevel_LOG_LEVEL_UNSPECIFIED
913}
914
915func (x *DeviceRegistry) GetCredentials() []*RegistryCredential {
916	if x != nil {
917		return x.Credentials
918	}
919	return nil
920}
921
922// The configuration of MQTT for a device registry.
923type MqttConfig struct {
924	state         protoimpl.MessageState
925	sizeCache     protoimpl.SizeCache
926	unknownFields protoimpl.UnknownFields
927
928	// If enabled, allows connections using the MQTT protocol. Otherwise, MQTT
929	// connections to this registry will fail.
930	MqttEnabledState MqttState `protobuf:"varint,1,opt,name=mqtt_enabled_state,json=mqttEnabledState,proto3,enum=google.cloud.iot.v1.MqttState" json:"mqtt_enabled_state,omitempty"`
931}
932
933func (x *MqttConfig) Reset() {
934	*x = MqttConfig{}
935	if protoimpl.UnsafeEnabled {
936		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[3]
937		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
938		ms.StoreMessageInfo(mi)
939	}
940}
941
942func (x *MqttConfig) String() string {
943	return protoimpl.X.MessageStringOf(x)
944}
945
946func (*MqttConfig) ProtoMessage() {}
947
948func (x *MqttConfig) ProtoReflect() protoreflect.Message {
949	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[3]
950	if protoimpl.UnsafeEnabled && x != nil {
951		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
952		if ms.LoadMessageInfo() == nil {
953			ms.StoreMessageInfo(mi)
954		}
955		return ms
956	}
957	return mi.MessageOf(x)
958}
959
960// Deprecated: Use MqttConfig.ProtoReflect.Descriptor instead.
961func (*MqttConfig) Descriptor() ([]byte, []int) {
962	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{3}
963}
964
965func (x *MqttConfig) GetMqttEnabledState() MqttState {
966	if x != nil {
967		return x.MqttEnabledState
968	}
969	return MqttState_MQTT_STATE_UNSPECIFIED
970}
971
972// The configuration of the HTTP bridge for a device registry.
973type HttpConfig struct {
974	state         protoimpl.MessageState
975	sizeCache     protoimpl.SizeCache
976	unknownFields protoimpl.UnknownFields
977
978	// If enabled, allows devices to use DeviceService via the HTTP protocol.
979	// Otherwise, any requests to DeviceService will fail for this registry.
980	HttpEnabledState HttpState `protobuf:"varint,1,opt,name=http_enabled_state,json=httpEnabledState,proto3,enum=google.cloud.iot.v1.HttpState" json:"http_enabled_state,omitempty"`
981}
982
983func (x *HttpConfig) Reset() {
984	*x = HttpConfig{}
985	if protoimpl.UnsafeEnabled {
986		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[4]
987		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
988		ms.StoreMessageInfo(mi)
989	}
990}
991
992func (x *HttpConfig) String() string {
993	return protoimpl.X.MessageStringOf(x)
994}
995
996func (*HttpConfig) ProtoMessage() {}
997
998func (x *HttpConfig) ProtoReflect() protoreflect.Message {
999	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[4]
1000	if protoimpl.UnsafeEnabled && x != nil {
1001		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1002		if ms.LoadMessageInfo() == nil {
1003			ms.StoreMessageInfo(mi)
1004		}
1005		return ms
1006	}
1007	return mi.MessageOf(x)
1008}
1009
1010// Deprecated: Use HttpConfig.ProtoReflect.Descriptor instead.
1011func (*HttpConfig) Descriptor() ([]byte, []int) {
1012	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{4}
1013}
1014
1015func (x *HttpConfig) GetHttpEnabledState() HttpState {
1016	if x != nil {
1017		return x.HttpEnabledState
1018	}
1019	return HttpState_HTTP_STATE_UNSPECIFIED
1020}
1021
1022// The configuration for forwarding telemetry events.
1023type EventNotificationConfig struct {
1024	state         protoimpl.MessageState
1025	sizeCache     protoimpl.SizeCache
1026	unknownFields protoimpl.UnknownFields
1027
1028	// If the subfolder name matches this string exactly, this configuration will
1029	// be used. The string must not include the leading '/' character. If empty,
1030	// all strings are matched. This field is used only for telemetry events;
1031	// subfolders are not supported for state changes.
1032	SubfolderMatches string `protobuf:"bytes,2,opt,name=subfolder_matches,json=subfolderMatches,proto3" json:"subfolder_matches,omitempty"`
1033	// A Cloud Pub/Sub topic name. For example,
1034	// `projects/myProject/topics/deviceEvents`.
1035	PubsubTopicName string `protobuf:"bytes,1,opt,name=pubsub_topic_name,json=pubsubTopicName,proto3" json:"pubsub_topic_name,omitempty"`
1036}
1037
1038func (x *EventNotificationConfig) Reset() {
1039	*x = EventNotificationConfig{}
1040	if protoimpl.UnsafeEnabled {
1041		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[5]
1042		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1043		ms.StoreMessageInfo(mi)
1044	}
1045}
1046
1047func (x *EventNotificationConfig) String() string {
1048	return protoimpl.X.MessageStringOf(x)
1049}
1050
1051func (*EventNotificationConfig) ProtoMessage() {}
1052
1053func (x *EventNotificationConfig) ProtoReflect() protoreflect.Message {
1054	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[5]
1055	if protoimpl.UnsafeEnabled && x != nil {
1056		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1057		if ms.LoadMessageInfo() == nil {
1058			ms.StoreMessageInfo(mi)
1059		}
1060		return ms
1061	}
1062	return mi.MessageOf(x)
1063}
1064
1065// Deprecated: Use EventNotificationConfig.ProtoReflect.Descriptor instead.
1066func (*EventNotificationConfig) Descriptor() ([]byte, []int) {
1067	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{5}
1068}
1069
1070func (x *EventNotificationConfig) GetSubfolderMatches() string {
1071	if x != nil {
1072		return x.SubfolderMatches
1073	}
1074	return ""
1075}
1076
1077func (x *EventNotificationConfig) GetPubsubTopicName() string {
1078	if x != nil {
1079		return x.PubsubTopicName
1080	}
1081	return ""
1082}
1083
1084// The configuration for notification of new states received from the device.
1085type StateNotificationConfig struct {
1086	state         protoimpl.MessageState
1087	sizeCache     protoimpl.SizeCache
1088	unknownFields protoimpl.UnknownFields
1089
1090	// A Cloud Pub/Sub topic name. For example,
1091	// `projects/myProject/topics/deviceEvents`.
1092	PubsubTopicName string `protobuf:"bytes,1,opt,name=pubsub_topic_name,json=pubsubTopicName,proto3" json:"pubsub_topic_name,omitempty"`
1093}
1094
1095func (x *StateNotificationConfig) Reset() {
1096	*x = StateNotificationConfig{}
1097	if protoimpl.UnsafeEnabled {
1098		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[6]
1099		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1100		ms.StoreMessageInfo(mi)
1101	}
1102}
1103
1104func (x *StateNotificationConfig) String() string {
1105	return protoimpl.X.MessageStringOf(x)
1106}
1107
1108func (*StateNotificationConfig) ProtoMessage() {}
1109
1110func (x *StateNotificationConfig) ProtoReflect() protoreflect.Message {
1111	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[6]
1112	if protoimpl.UnsafeEnabled && x != nil {
1113		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1114		if ms.LoadMessageInfo() == nil {
1115			ms.StoreMessageInfo(mi)
1116		}
1117		return ms
1118	}
1119	return mi.MessageOf(x)
1120}
1121
1122// Deprecated: Use StateNotificationConfig.ProtoReflect.Descriptor instead.
1123func (*StateNotificationConfig) Descriptor() ([]byte, []int) {
1124	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{6}
1125}
1126
1127func (x *StateNotificationConfig) GetPubsubTopicName() string {
1128	if x != nil {
1129		return x.PubsubTopicName
1130	}
1131	return ""
1132}
1133
1134// A server-stored registry credential used to validate device credentials.
1135type RegistryCredential struct {
1136	state         protoimpl.MessageState
1137	sizeCache     protoimpl.SizeCache
1138	unknownFields protoimpl.UnknownFields
1139
1140	// The credential data. Reserved for expansion in the future.
1141	//
1142	// Types that are assignable to Credential:
1143	//	*RegistryCredential_PublicKeyCertificate
1144	Credential isRegistryCredential_Credential `protobuf_oneof:"credential"`
1145}
1146
1147func (x *RegistryCredential) Reset() {
1148	*x = RegistryCredential{}
1149	if protoimpl.UnsafeEnabled {
1150		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[7]
1151		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1152		ms.StoreMessageInfo(mi)
1153	}
1154}
1155
1156func (x *RegistryCredential) String() string {
1157	return protoimpl.X.MessageStringOf(x)
1158}
1159
1160func (*RegistryCredential) ProtoMessage() {}
1161
1162func (x *RegistryCredential) ProtoReflect() protoreflect.Message {
1163	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[7]
1164	if protoimpl.UnsafeEnabled && x != nil {
1165		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1166		if ms.LoadMessageInfo() == nil {
1167			ms.StoreMessageInfo(mi)
1168		}
1169		return ms
1170	}
1171	return mi.MessageOf(x)
1172}
1173
1174// Deprecated: Use RegistryCredential.ProtoReflect.Descriptor instead.
1175func (*RegistryCredential) Descriptor() ([]byte, []int) {
1176	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{7}
1177}
1178
1179func (m *RegistryCredential) GetCredential() isRegistryCredential_Credential {
1180	if m != nil {
1181		return m.Credential
1182	}
1183	return nil
1184}
1185
1186func (x *RegistryCredential) GetPublicKeyCertificate() *PublicKeyCertificate {
1187	if x, ok := x.GetCredential().(*RegistryCredential_PublicKeyCertificate); ok {
1188		return x.PublicKeyCertificate
1189	}
1190	return nil
1191}
1192
1193type isRegistryCredential_Credential interface {
1194	isRegistryCredential_Credential()
1195}
1196
1197type RegistryCredential_PublicKeyCertificate struct {
1198	// A public key certificate used to verify the device credentials.
1199	PublicKeyCertificate *PublicKeyCertificate `protobuf:"bytes,1,opt,name=public_key_certificate,json=publicKeyCertificate,proto3,oneof"`
1200}
1201
1202func (*RegistryCredential_PublicKeyCertificate) isRegistryCredential_Credential() {}
1203
1204// Details of an X.509 certificate. For informational purposes only.
1205type X509CertificateDetails struct {
1206	state         protoimpl.MessageState
1207	sizeCache     protoimpl.SizeCache
1208	unknownFields protoimpl.UnknownFields
1209
1210	// The entity that signed the certificate.
1211	Issuer string `protobuf:"bytes,1,opt,name=issuer,proto3" json:"issuer,omitempty"`
1212	// The entity the certificate and public key belong to.
1213	Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"`
1214	// The time the certificate becomes valid.
1215	StartTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
1216	// The time the certificate becomes invalid.
1217	ExpiryTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expiry_time,json=expiryTime,proto3" json:"expiry_time,omitempty"`
1218	// The algorithm used to sign the certificate.
1219	SignatureAlgorithm string `protobuf:"bytes,5,opt,name=signature_algorithm,json=signatureAlgorithm,proto3" json:"signature_algorithm,omitempty"`
1220	// The type of public key in the certificate.
1221	PublicKeyType string `protobuf:"bytes,6,opt,name=public_key_type,json=publicKeyType,proto3" json:"public_key_type,omitempty"`
1222}
1223
1224func (x *X509CertificateDetails) Reset() {
1225	*x = X509CertificateDetails{}
1226	if protoimpl.UnsafeEnabled {
1227		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[8]
1228		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1229		ms.StoreMessageInfo(mi)
1230	}
1231}
1232
1233func (x *X509CertificateDetails) String() string {
1234	return protoimpl.X.MessageStringOf(x)
1235}
1236
1237func (*X509CertificateDetails) ProtoMessage() {}
1238
1239func (x *X509CertificateDetails) ProtoReflect() protoreflect.Message {
1240	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[8]
1241	if protoimpl.UnsafeEnabled && x != nil {
1242		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1243		if ms.LoadMessageInfo() == nil {
1244			ms.StoreMessageInfo(mi)
1245		}
1246		return ms
1247	}
1248	return mi.MessageOf(x)
1249}
1250
1251// Deprecated: Use X509CertificateDetails.ProtoReflect.Descriptor instead.
1252func (*X509CertificateDetails) Descriptor() ([]byte, []int) {
1253	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{8}
1254}
1255
1256func (x *X509CertificateDetails) GetIssuer() string {
1257	if x != nil {
1258		return x.Issuer
1259	}
1260	return ""
1261}
1262
1263func (x *X509CertificateDetails) GetSubject() string {
1264	if x != nil {
1265		return x.Subject
1266	}
1267	return ""
1268}
1269
1270func (x *X509CertificateDetails) GetStartTime() *timestamppb.Timestamp {
1271	if x != nil {
1272		return x.StartTime
1273	}
1274	return nil
1275}
1276
1277func (x *X509CertificateDetails) GetExpiryTime() *timestamppb.Timestamp {
1278	if x != nil {
1279		return x.ExpiryTime
1280	}
1281	return nil
1282}
1283
1284func (x *X509CertificateDetails) GetSignatureAlgorithm() string {
1285	if x != nil {
1286		return x.SignatureAlgorithm
1287	}
1288	return ""
1289}
1290
1291func (x *X509CertificateDetails) GetPublicKeyType() string {
1292	if x != nil {
1293		return x.PublicKeyType
1294	}
1295	return ""
1296}
1297
1298// A public key certificate format and data.
1299type PublicKeyCertificate struct {
1300	state         protoimpl.MessageState
1301	sizeCache     protoimpl.SizeCache
1302	unknownFields protoimpl.UnknownFields
1303
1304	// The certificate format.
1305	Format PublicKeyCertificateFormat `protobuf:"varint,1,opt,name=format,proto3,enum=google.cloud.iot.v1.PublicKeyCertificateFormat" json:"format,omitempty"`
1306	// The certificate data.
1307	Certificate string `protobuf:"bytes,2,opt,name=certificate,proto3" json:"certificate,omitempty"`
1308	// [Output only] The certificate details. Used only for X.509 certificates.
1309	X509Details *X509CertificateDetails `protobuf:"bytes,3,opt,name=x509_details,json=x509Details,proto3" json:"x509_details,omitempty"`
1310}
1311
1312func (x *PublicKeyCertificate) Reset() {
1313	*x = PublicKeyCertificate{}
1314	if protoimpl.UnsafeEnabled {
1315		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[9]
1316		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1317		ms.StoreMessageInfo(mi)
1318	}
1319}
1320
1321func (x *PublicKeyCertificate) String() string {
1322	return protoimpl.X.MessageStringOf(x)
1323}
1324
1325func (*PublicKeyCertificate) ProtoMessage() {}
1326
1327func (x *PublicKeyCertificate) ProtoReflect() protoreflect.Message {
1328	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[9]
1329	if protoimpl.UnsafeEnabled && x != nil {
1330		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1331		if ms.LoadMessageInfo() == nil {
1332			ms.StoreMessageInfo(mi)
1333		}
1334		return ms
1335	}
1336	return mi.MessageOf(x)
1337}
1338
1339// Deprecated: Use PublicKeyCertificate.ProtoReflect.Descriptor instead.
1340func (*PublicKeyCertificate) Descriptor() ([]byte, []int) {
1341	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{9}
1342}
1343
1344func (x *PublicKeyCertificate) GetFormat() PublicKeyCertificateFormat {
1345	if x != nil {
1346		return x.Format
1347	}
1348	return PublicKeyCertificateFormat_UNSPECIFIED_PUBLIC_KEY_CERTIFICATE_FORMAT
1349}
1350
1351func (x *PublicKeyCertificate) GetCertificate() string {
1352	if x != nil {
1353		return x.Certificate
1354	}
1355	return ""
1356}
1357
1358func (x *PublicKeyCertificate) GetX509Details() *X509CertificateDetails {
1359	if x != nil {
1360		return x.X509Details
1361	}
1362	return nil
1363}
1364
1365// A server-stored device credential used for authentication.
1366type DeviceCredential struct {
1367	state         protoimpl.MessageState
1368	sizeCache     protoimpl.SizeCache
1369	unknownFields protoimpl.UnknownFields
1370
1371	// The credential data. Reserved for expansion in the future.
1372	//
1373	// Types that are assignable to Credential:
1374	//	*DeviceCredential_PublicKey
1375	Credential isDeviceCredential_Credential `protobuf_oneof:"credential"`
1376	// [Optional] The time at which this credential becomes invalid. This
1377	// credential will be ignored for new client authentication requests after
1378	// this timestamp; however, it will not be automatically deleted.
1379	ExpirationTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=expiration_time,json=expirationTime,proto3" json:"expiration_time,omitempty"`
1380}
1381
1382func (x *DeviceCredential) Reset() {
1383	*x = DeviceCredential{}
1384	if protoimpl.UnsafeEnabled {
1385		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[10]
1386		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1387		ms.StoreMessageInfo(mi)
1388	}
1389}
1390
1391func (x *DeviceCredential) String() string {
1392	return protoimpl.X.MessageStringOf(x)
1393}
1394
1395func (*DeviceCredential) ProtoMessage() {}
1396
1397func (x *DeviceCredential) ProtoReflect() protoreflect.Message {
1398	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[10]
1399	if protoimpl.UnsafeEnabled && x != nil {
1400		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1401		if ms.LoadMessageInfo() == nil {
1402			ms.StoreMessageInfo(mi)
1403		}
1404		return ms
1405	}
1406	return mi.MessageOf(x)
1407}
1408
1409// Deprecated: Use DeviceCredential.ProtoReflect.Descriptor instead.
1410func (*DeviceCredential) Descriptor() ([]byte, []int) {
1411	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{10}
1412}
1413
1414func (m *DeviceCredential) GetCredential() isDeviceCredential_Credential {
1415	if m != nil {
1416		return m.Credential
1417	}
1418	return nil
1419}
1420
1421func (x *DeviceCredential) GetPublicKey() *PublicKeyCredential {
1422	if x, ok := x.GetCredential().(*DeviceCredential_PublicKey); ok {
1423		return x.PublicKey
1424	}
1425	return nil
1426}
1427
1428func (x *DeviceCredential) GetExpirationTime() *timestamppb.Timestamp {
1429	if x != nil {
1430		return x.ExpirationTime
1431	}
1432	return nil
1433}
1434
1435type isDeviceCredential_Credential interface {
1436	isDeviceCredential_Credential()
1437}
1438
1439type DeviceCredential_PublicKey struct {
1440	// A public key used to verify the signature of JSON Web Tokens (JWTs).
1441	// When adding a new device credential, either via device creation or via
1442	// modifications, this public key credential may be required to be signed by
1443	// one of the registry level certificates. More specifically, if the
1444	// registry contains at least one certificate, any new device credential
1445	// must be signed by one of the registry certificates. As a result,
1446	// when the registry contains certificates, only X.509 certificates are
1447	// accepted as device credentials. However, if the registry does
1448	// not contain a certificate, self-signed certificates and public keys will
1449	// be accepted. New device credentials must be different from every
1450	// registry-level certificate.
1451	PublicKey *PublicKeyCredential `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3,oneof"`
1452}
1453
1454func (*DeviceCredential_PublicKey) isDeviceCredential_Credential() {}
1455
1456// A public key format and data.
1457type PublicKeyCredential struct {
1458	state         protoimpl.MessageState
1459	sizeCache     protoimpl.SizeCache
1460	unknownFields protoimpl.UnknownFields
1461
1462	// The format of the key.
1463	Format PublicKeyFormat `protobuf:"varint,1,opt,name=format,proto3,enum=google.cloud.iot.v1.PublicKeyFormat" json:"format,omitempty"`
1464	// The key data.
1465	Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
1466}
1467
1468func (x *PublicKeyCredential) Reset() {
1469	*x = PublicKeyCredential{}
1470	if protoimpl.UnsafeEnabled {
1471		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[11]
1472		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1473		ms.StoreMessageInfo(mi)
1474	}
1475}
1476
1477func (x *PublicKeyCredential) String() string {
1478	return protoimpl.X.MessageStringOf(x)
1479}
1480
1481func (*PublicKeyCredential) ProtoMessage() {}
1482
1483func (x *PublicKeyCredential) ProtoReflect() protoreflect.Message {
1484	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[11]
1485	if protoimpl.UnsafeEnabled && x != nil {
1486		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1487		if ms.LoadMessageInfo() == nil {
1488			ms.StoreMessageInfo(mi)
1489		}
1490		return ms
1491	}
1492	return mi.MessageOf(x)
1493}
1494
1495// Deprecated: Use PublicKeyCredential.ProtoReflect.Descriptor instead.
1496func (*PublicKeyCredential) Descriptor() ([]byte, []int) {
1497	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{11}
1498}
1499
1500func (x *PublicKeyCredential) GetFormat() PublicKeyFormat {
1501	if x != nil {
1502		return x.Format
1503	}
1504	return PublicKeyFormat_UNSPECIFIED_PUBLIC_KEY_FORMAT
1505}
1506
1507func (x *PublicKeyCredential) GetKey() string {
1508	if x != nil {
1509		return x.Key
1510	}
1511	return ""
1512}
1513
1514// The device configuration. Eventually delivered to devices.
1515type DeviceConfig struct {
1516	state         protoimpl.MessageState
1517	sizeCache     protoimpl.SizeCache
1518	unknownFields protoimpl.UnknownFields
1519
1520	// [Output only] The version of this update. The version number is assigned by
1521	// the server, and is always greater than 0 after device creation. The
1522	// version must be 0 on the `CreateDevice` request if a `config` is
1523	// specified; the response of `CreateDevice` will always have a value of 1.
1524	Version int64 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
1525	// [Output only] The time at which this configuration version was updated in
1526	// Cloud IoT Core. This timestamp is set by the server.
1527	CloudUpdateTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=cloud_update_time,json=cloudUpdateTime,proto3" json:"cloud_update_time,omitempty"`
1528	// [Output only] The time at which Cloud IoT Core received the
1529	// acknowledgment from the device, indicating that the device has received
1530	// this configuration version. If this field is not present, the device has
1531	// not yet acknowledged that it received this version. Note that when
1532	// the config was sent to the device, many config versions may have been
1533	// available in Cloud IoT Core while the device was disconnected, and on
1534	// connection, only the latest version is sent to the device. Some
1535	// versions may never be sent to the device, and therefore are never
1536	// acknowledged. This timestamp is set by Cloud IoT Core.
1537	DeviceAckTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=device_ack_time,json=deviceAckTime,proto3" json:"device_ack_time,omitempty"`
1538	// The device configuration data.
1539	BinaryData []byte `protobuf:"bytes,4,opt,name=binary_data,json=binaryData,proto3" json:"binary_data,omitempty"`
1540}
1541
1542func (x *DeviceConfig) Reset() {
1543	*x = DeviceConfig{}
1544	if protoimpl.UnsafeEnabled {
1545		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[12]
1546		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1547		ms.StoreMessageInfo(mi)
1548	}
1549}
1550
1551func (x *DeviceConfig) String() string {
1552	return protoimpl.X.MessageStringOf(x)
1553}
1554
1555func (*DeviceConfig) ProtoMessage() {}
1556
1557func (x *DeviceConfig) ProtoReflect() protoreflect.Message {
1558	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[12]
1559	if protoimpl.UnsafeEnabled && x != nil {
1560		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1561		if ms.LoadMessageInfo() == nil {
1562			ms.StoreMessageInfo(mi)
1563		}
1564		return ms
1565	}
1566	return mi.MessageOf(x)
1567}
1568
1569// Deprecated: Use DeviceConfig.ProtoReflect.Descriptor instead.
1570func (*DeviceConfig) Descriptor() ([]byte, []int) {
1571	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{12}
1572}
1573
1574func (x *DeviceConfig) GetVersion() int64 {
1575	if x != nil {
1576		return x.Version
1577	}
1578	return 0
1579}
1580
1581func (x *DeviceConfig) GetCloudUpdateTime() *timestamppb.Timestamp {
1582	if x != nil {
1583		return x.CloudUpdateTime
1584	}
1585	return nil
1586}
1587
1588func (x *DeviceConfig) GetDeviceAckTime() *timestamppb.Timestamp {
1589	if x != nil {
1590		return x.DeviceAckTime
1591	}
1592	return nil
1593}
1594
1595func (x *DeviceConfig) GetBinaryData() []byte {
1596	if x != nil {
1597		return x.BinaryData
1598	}
1599	return nil
1600}
1601
1602// The device state, as reported by the device.
1603type DeviceState struct {
1604	state         protoimpl.MessageState
1605	sizeCache     protoimpl.SizeCache
1606	unknownFields protoimpl.UnknownFields
1607
1608	// [Output only] The time at which this state version was updated in Cloud
1609	// IoT Core.
1610	UpdateTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
1611	// The device state data.
1612	BinaryData []byte `protobuf:"bytes,2,opt,name=binary_data,json=binaryData,proto3" json:"binary_data,omitempty"`
1613}
1614
1615func (x *DeviceState) Reset() {
1616	*x = DeviceState{}
1617	if protoimpl.UnsafeEnabled {
1618		mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[13]
1619		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1620		ms.StoreMessageInfo(mi)
1621	}
1622}
1623
1624func (x *DeviceState) String() string {
1625	return protoimpl.X.MessageStringOf(x)
1626}
1627
1628func (*DeviceState) ProtoMessage() {}
1629
1630func (x *DeviceState) ProtoReflect() protoreflect.Message {
1631	mi := &file_google_cloud_iot_v1_resources_proto_msgTypes[13]
1632	if protoimpl.UnsafeEnabled && x != nil {
1633		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1634		if ms.LoadMessageInfo() == nil {
1635			ms.StoreMessageInfo(mi)
1636		}
1637		return ms
1638	}
1639	return mi.MessageOf(x)
1640}
1641
1642// Deprecated: Use DeviceState.ProtoReflect.Descriptor instead.
1643func (*DeviceState) Descriptor() ([]byte, []int) {
1644	return file_google_cloud_iot_v1_resources_proto_rawDescGZIP(), []int{13}
1645}
1646
1647func (x *DeviceState) GetUpdateTime() *timestamppb.Timestamp {
1648	if x != nil {
1649		return x.UpdateTime
1650	}
1651	return nil
1652}
1653
1654func (x *DeviceState) GetBinaryData() []byte {
1655	if x != nil {
1656		return x.BinaryData
1657	}
1658	return nil
1659}
1660
1661var File_google_cloud_iot_v1_resources_proto protoreflect.FileDescriptor
1662
1663var file_google_cloud_iot_v1_resources_proto_rawDesc = []byte{
1664	0x0a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x69,
1665	0x6f, 0x74, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e,
1666	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
1667	0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67,
1668	0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e,
1669	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
1670	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
1671	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72,
1672	0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
1673	0x8d, 0x09, 0x0a, 0x06, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
1674	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
1675	0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15,
1676	0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05,
1677	0x6e, 0x75, 0x6d, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74,
1678	0x69, 0x61, 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f,
1679	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31,
1680	0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61,
1681	0x6c, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x4a,
1682	0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74,
1683	0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
1684	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
1685	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x61,
1686	0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0f, 0x6c, 0x61,
1687	0x73, 0x74, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20,
1688	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
1689	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
1690	0x0d, 0x6c, 0x61, 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x42,
1691	0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d,
1692	0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1693	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
1694	0x61, 0x6d, 0x70, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x69,
1695	0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
1696	0x67, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b,
1697	0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
1698	0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x11, 0x6c, 0x61,
1699	0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12,
1700	0x4d, 0x0a, 0x15, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73,
1701	0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
1702	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
1703	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74,
1704	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18,
1705	0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52,
1706	0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x42, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74,
1707	0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28,
1708	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
1709	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x6c,
1710	0x61, 0x73, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x11,
1711	0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75,
1712	0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1713	0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x6c, 0x61, 0x73,
1714	0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x06,
1715	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67,
1716	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e,
1717	0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
1718	0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x36, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65,
1719	0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
1720	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76,
1721	0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12,
1722	0x3a, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x15, 0x20, 0x01,
1723	0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
1724	0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65,
1725	0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x45, 0x0a, 0x08, 0x6d,
1726	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e,
1727	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74,
1728	0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64,
1729	0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
1730	0x74, 0x61, 0x12, 0x49, 0x0a, 0x0e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x63, 0x6f,
1731	0x6e, 0x66, 0x69, 0x67, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f,
1732	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31,
1733	0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d,
1734	0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x3b, 0x0a,
1735	0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
1736	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
1737	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
1738	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x73, 0xea, 0x41, 0x70, 0x0a,
1739	0x1e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x69, 0x6f, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1740	0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12,
1741	0x4e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65,
1742	0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c,
1743	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
1744	0x69, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x7d, 0x2f, 0x64,
1745	0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x7d, 0x22,
1746	0xbe, 0x02, 0x0a, 0x0d, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69,
1747	0x67, 0x12, 0x43, 0x0a, 0x0c, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x74, 0x79, 0x70,
1748	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
1749	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61,
1750	0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77,
1751	0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x56, 0x0a, 0x13, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61,
1752	0x79, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20,
1753	0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
1754	0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61,
1755	0x79, 0x41, 0x75, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x11, 0x67, 0x61, 0x74,
1756	0x65, 0x77, 0x61, 0x79, 0x41, 0x75, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x37,
1757	0x0a, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f,
1758	0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
1759	0x52, 0x15, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x47, 0x61,
1760	0x74, 0x65, 0x77, 0x61, 0x79, 0x49, 0x64, 0x12, 0x57, 0x0a, 0x1a, 0x6c, 0x61, 0x73, 0x74, 0x5f,
1761	0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79,
1762	0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
1763	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
1764	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x41, 0x63, 0x63,
1765	0x65, 0x73, 0x73, 0x65, 0x64, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65,
1766	0x22, 0xfb, 0x04, 0x0a, 0x0e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x67, 0x69, 0x73,
1767	0x74, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
1768	0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
1769	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x6a, 0x0a, 0x1a, 0x65, 0x76, 0x65, 0x6e, 0x74,
1770	0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f,
1771	0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f,
1772	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76,
1773	0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
1774	0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x18, 0x65, 0x76, 0x65, 0x6e, 0x74,
1775	0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66,
1776	0x69, 0x67, 0x73, 0x12, 0x68, 0x0a, 0x19, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x6f, 0x74,
1777	0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
1778	0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
1779	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61,
1780	0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f,
1781	0x6e, 0x66, 0x69, 0x67, 0x52, 0x17, 0x73, 0x74, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66,
1782	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x40, 0x0a,
1783	0x0b, 0x6d, 0x71, 0x74, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01,
1784	0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
1785	0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x71, 0x74, 0x74, 0x43, 0x6f, 0x6e,
1786	0x66, 0x69, 0x67, 0x52, 0x0a, 0x6d, 0x71, 0x74, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
1787	0x40, 0x0a, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x09,
1788	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
1789	0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43,
1790	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x68, 0x74, 0x74, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69,
1791	0x67, 0x12, 0x3a, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x0b,
1792	0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
1793	0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65,
1794	0x76, 0x65, 0x6c, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x49, 0x0a,
1795	0x0b, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03,
1796	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
1797	0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
1798	0x79, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x0b, 0x63, 0x72, 0x65,
1799	0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x3a, 0x64, 0xea, 0x41, 0x61, 0x0a, 0x20, 0x63,
1800	0x6c, 0x6f, 0x75, 0x64, 0x69, 0x6f, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70,
1801	0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12,
1802	0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65,
1803	0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c,
1804	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
1805	0x69, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x7d, 0x22, 0x5a,
1806	0x0a, 0x0a, 0x4d, 0x71, 0x74, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4c, 0x0a, 0x12,
1807	0x6d, 0x71, 0x74, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61,
1808	0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
1809	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d,
1810	0x71, 0x74, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x10, 0x6d, 0x71, 0x74, 0x74, 0x45, 0x6e,
1811	0x61, 0x62, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x5a, 0x0a, 0x0a, 0x48, 0x74,
1812	0x74, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4c, 0x0a, 0x12, 0x68, 0x74, 0x74, 0x70,
1813	0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01,
1814	0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
1815	0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x53,
1816	0x74, 0x61, 0x74, 0x65, 0x52, 0x10, 0x68, 0x74, 0x74, 0x70, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
1817	0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x72, 0x0a, 0x17, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e,
1818	0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69,
1819	0x67, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x75, 0x62, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x6d,
1820	0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x75,
1821	0x62, 0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x2a,
1822	0x0a, 0x11, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x5f, 0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6e,
1823	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x75, 0x62, 0x73, 0x75,
1824	0x62, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x45, 0x0a, 0x17, 0x53, 0x74,
1825	0x61, 0x74, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43,
1826	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x5f,
1827	0x74, 0x6f, 0x70, 0x69, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
1828	0x52, 0x0f, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x54, 0x6f, 0x70, 0x69, 0x63, 0x4e, 0x61, 0x6d,
1829	0x65, 0x22, 0x85, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x43, 0x72,
1830	0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x61, 0x0a, 0x16, 0x70, 0x75, 0x62, 0x6c,
1831	0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61,
1832	0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
1833	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50,
1834	0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63,
1835	0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x14, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79,
1836	0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x63,
1837	0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x22, 0x9b, 0x02, 0x0a, 0x16, 0x58, 0x35,
1838	0x30, 0x39, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x44, 0x65, 0x74,
1839	0x61, 0x69, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x01,
1840	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07,
1841	0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73,
1842	0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f,
1843	0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
1844	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
1845	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d,
1846	0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65,
1847	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
1848	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
1849	0x6d, 0x70, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2f,
1850	0x0a, 0x13, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x61, 0x6c, 0x67, 0x6f,
1851	0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x69, 0x67,
1852	0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12,
1853	0x26, 0x0a, 0x0f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79,
1854	0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
1855	0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0xd1, 0x01, 0x0a, 0x14, 0x50, 0x75, 0x62, 0x6c,
1856	0x69, 0x63, 0x4b, 0x65, 0x79, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
1857	0x12, 0x47, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
1858	0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
1859	0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79,
1860	0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61,
1861	0x74, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x65, 0x72,
1862	0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
1863	0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x4e, 0x0a, 0x0c, 0x78,
1864	0x35, 0x30, 0x39, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
1865	0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
1866	0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x58, 0x35, 0x30, 0x39, 0x43, 0x65, 0x72, 0x74,
1867	0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0b,
1868	0x78, 0x35, 0x30, 0x39, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xb0, 0x01, 0x0a, 0x10,
1869	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c,
1870	0x12, 0x49, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02,
1871	0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
1872	0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69,
1873	0x63, 0x4b, 0x65, 0x79, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x48, 0x00,
1874	0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x0f, 0x65,
1875	0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06,
1876	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
1877	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
1878	0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65,
1879	0x42, 0x0c, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x22, 0x65,
1880	0x0a, 0x13, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x43, 0x72, 0x65, 0x64, 0x65,
1881	0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x3c, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18,
1882	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
1883	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x62, 0x6c,
1884	0x69, 0x63, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x06, 0x66, 0x6f, 0x72,
1885	0x6d, 0x61, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
1886	0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0xd5, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
1887	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
1888	0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
1889	0x12, 0x46, 0x0a, 0x11, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
1890	0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
1891	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
1892	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x55, 0x70,
1893	0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0f, 0x64, 0x65, 0x76, 0x69,
1894	0x63, 0x65, 0x5f, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
1895	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
1896	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0d, 0x64,
1897	0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b,
1898	0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28,
1899	0x0c, 0x52, 0x0a, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x22, 0x6b, 0x0a,
1900	0x0b, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x0b,
1901	0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
1902	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
1903	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x75,
1904	0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x69, 0x6e,
1905	0x61, 0x72, 0x79, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a,
1906	0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x44, 0x61, 0x74, 0x61, 0x2a, 0x4c, 0x0a, 0x09, 0x4d, 0x71,
1907	0x74, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x51, 0x54, 0x54, 0x5f,
1908	0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
1909	0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4d, 0x51, 0x54, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42,
1910	0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4d, 0x51, 0x54, 0x54, 0x5f, 0x44, 0x49,
1911	0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x4c, 0x0a, 0x09, 0x48, 0x74, 0x74, 0x70,
1912	0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x53, 0x54,
1913	0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
1914	0x00, 0x12, 0x10, 0x0a, 0x0c, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45,
1915	0x44, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x48, 0x54, 0x54, 0x50, 0x5f, 0x44, 0x49, 0x53, 0x41,
1916	0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x4f, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76,
1917	0x65, 0x6c, 0x12, 0x19, 0x0a, 0x15, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f,
1918	0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a,
1919	0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x0a, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52,
1920	0x10, 0x14, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x1e, 0x12, 0x09, 0x0a, 0x05,
1921	0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x28, 0x2a, 0x49, 0x0a, 0x0b, 0x47, 0x61, 0x74, 0x65, 0x77,
1922	0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41,
1923	0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
1924	0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x10,
1925	0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x4e, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59,
1926	0x10, 0x02, 0x2a, 0x91, 0x01, 0x0a, 0x11, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x41, 0x75,
1927	0x74, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x23, 0x0a, 0x1f, 0x47, 0x41, 0x54, 0x45,
1928	0x57, 0x41, 0x59, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f,
1929	0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a,
1930	0x10, 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x4e, 0x4c,
1931	0x59, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x41, 0x55,
1932	0x54, 0x48, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x12,
1933	0x25, 0x0a, 0x21, 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41,
1934	0x4e, 0x44, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x54,
1935	0x4f, 0x4b, 0x45, 0x4e, 0x10, 0x03, 0x2a, 0x65, 0x0a, 0x1a, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63,
1936	0x4b, 0x65, 0x79, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x46, 0x6f,
1937	0x72, 0x6d, 0x61, 0x74, 0x12, 0x2d, 0x0a, 0x29, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
1938	0x49, 0x45, 0x44, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x43,
1939	0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41,
1940	0x54, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x58, 0x35, 0x30, 0x39, 0x5f, 0x43, 0x45, 0x52, 0x54,
1941	0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x4d, 0x10, 0x01, 0x2a, 0x76, 0x0a,
1942	0x0f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74,
1943	0x12, 0x21, 0x0a, 0x1d, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f,
1944	0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41,
1945	0x54, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x53, 0x41, 0x5f, 0x50, 0x45, 0x4d, 0x10, 0x03,
1946	0x12, 0x10, 0x0a, 0x0c, 0x52, 0x53, 0x41, 0x5f, 0x58, 0x35, 0x30, 0x39, 0x5f, 0x50, 0x45, 0x4d,
1947	0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x53, 0x32, 0x35, 0x36, 0x5f, 0x50, 0x45, 0x4d, 0x10,
1948	0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x53, 0x32, 0x35, 0x36, 0x5f, 0x58, 0x35, 0x30, 0x39, 0x5f,
1949	0x50, 0x45, 0x4d, 0x10, 0x04, 0x42, 0x66, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f,
1950	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x6f, 0x74, 0x2e, 0x76, 0x31,
1951	0x42, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f,
1952	0x50, 0x01, 0x5a, 0x36, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e,
1953	0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67,
1954	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f,
1955	0x69, 0x6f, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x69, 0x6f, 0x74, 0xf8, 0x01, 0x01, 0x62, 0x06, 0x70,
1956	0x72, 0x6f, 0x74, 0x6f, 0x33,
1957}
1958
1959var (
1960	file_google_cloud_iot_v1_resources_proto_rawDescOnce sync.Once
1961	file_google_cloud_iot_v1_resources_proto_rawDescData = file_google_cloud_iot_v1_resources_proto_rawDesc
1962)
1963
1964func file_google_cloud_iot_v1_resources_proto_rawDescGZIP() []byte {
1965	file_google_cloud_iot_v1_resources_proto_rawDescOnce.Do(func() {
1966		file_google_cloud_iot_v1_resources_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_iot_v1_resources_proto_rawDescData)
1967	})
1968	return file_google_cloud_iot_v1_resources_proto_rawDescData
1969}
1970
1971var file_google_cloud_iot_v1_resources_proto_enumTypes = make([]protoimpl.EnumInfo, 7)
1972var file_google_cloud_iot_v1_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 15)
1973var file_google_cloud_iot_v1_resources_proto_goTypes = []interface{}{
1974	(MqttState)(0),                  // 0: google.cloud.iot.v1.MqttState
1975	(HttpState)(0),                  // 1: google.cloud.iot.v1.HttpState
1976	(LogLevel)(0),                   // 2: google.cloud.iot.v1.LogLevel
1977	(GatewayType)(0),                // 3: google.cloud.iot.v1.GatewayType
1978	(GatewayAuthMethod)(0),          // 4: google.cloud.iot.v1.GatewayAuthMethod
1979	(PublicKeyCertificateFormat)(0), // 5: google.cloud.iot.v1.PublicKeyCertificateFormat
1980	(PublicKeyFormat)(0),            // 6: google.cloud.iot.v1.PublicKeyFormat
1981	(*Device)(nil),                  // 7: google.cloud.iot.v1.Device
1982	(*GatewayConfig)(nil),           // 8: google.cloud.iot.v1.GatewayConfig
1983	(*DeviceRegistry)(nil),          // 9: google.cloud.iot.v1.DeviceRegistry
1984	(*MqttConfig)(nil),              // 10: google.cloud.iot.v1.MqttConfig
1985	(*HttpConfig)(nil),              // 11: google.cloud.iot.v1.HttpConfig
1986	(*EventNotificationConfig)(nil), // 12: google.cloud.iot.v1.EventNotificationConfig
1987	(*StateNotificationConfig)(nil), // 13: google.cloud.iot.v1.StateNotificationConfig
1988	(*RegistryCredential)(nil),      // 14: google.cloud.iot.v1.RegistryCredential
1989	(*X509CertificateDetails)(nil),  // 15: google.cloud.iot.v1.X509CertificateDetails
1990	(*PublicKeyCertificate)(nil),    // 16: google.cloud.iot.v1.PublicKeyCertificate
1991	(*DeviceCredential)(nil),        // 17: google.cloud.iot.v1.DeviceCredential
1992	(*PublicKeyCredential)(nil),     // 18: google.cloud.iot.v1.PublicKeyCredential
1993	(*DeviceConfig)(nil),            // 19: google.cloud.iot.v1.DeviceConfig
1994	(*DeviceState)(nil),             // 20: google.cloud.iot.v1.DeviceState
1995	nil,                             // 21: google.cloud.iot.v1.Device.MetadataEntry
1996	(*timestamppb.Timestamp)(nil),   // 22: google.protobuf.Timestamp
1997	(*status.Status)(nil),           // 23: google.rpc.Status
1998}
1999var file_google_cloud_iot_v1_resources_proto_depIdxs = []int32{
2000	17, // 0: google.cloud.iot.v1.Device.credentials:type_name -> google.cloud.iot.v1.DeviceCredential
2001	22, // 1: google.cloud.iot.v1.Device.last_heartbeat_time:type_name -> google.protobuf.Timestamp
2002	22, // 2: google.cloud.iot.v1.Device.last_event_time:type_name -> google.protobuf.Timestamp
2003	22, // 3: google.cloud.iot.v1.Device.last_state_time:type_name -> google.protobuf.Timestamp
2004	22, // 4: google.cloud.iot.v1.Device.last_config_ack_time:type_name -> google.protobuf.Timestamp
2005	22, // 5: google.cloud.iot.v1.Device.last_config_send_time:type_name -> google.protobuf.Timestamp
2006	22, // 6: google.cloud.iot.v1.Device.last_error_time:type_name -> google.protobuf.Timestamp
2007	23, // 7: google.cloud.iot.v1.Device.last_error_status:type_name -> google.rpc.Status
2008	19, // 8: google.cloud.iot.v1.Device.config:type_name -> google.cloud.iot.v1.DeviceConfig
2009	20, // 9: google.cloud.iot.v1.Device.state:type_name -> google.cloud.iot.v1.DeviceState
2010	2,  // 10: google.cloud.iot.v1.Device.log_level:type_name -> google.cloud.iot.v1.LogLevel
2011	21, // 11: google.cloud.iot.v1.Device.metadata:type_name -> google.cloud.iot.v1.Device.MetadataEntry
2012	8,  // 12: google.cloud.iot.v1.Device.gateway_config:type_name -> google.cloud.iot.v1.GatewayConfig
2013	3,  // 13: google.cloud.iot.v1.GatewayConfig.gateway_type:type_name -> google.cloud.iot.v1.GatewayType
2014	4,  // 14: google.cloud.iot.v1.GatewayConfig.gateway_auth_method:type_name -> google.cloud.iot.v1.GatewayAuthMethod
2015	22, // 15: google.cloud.iot.v1.GatewayConfig.last_accessed_gateway_time:type_name -> google.protobuf.Timestamp
2016	12, // 16: google.cloud.iot.v1.DeviceRegistry.event_notification_configs:type_name -> google.cloud.iot.v1.EventNotificationConfig
2017	13, // 17: google.cloud.iot.v1.DeviceRegistry.state_notification_config:type_name -> google.cloud.iot.v1.StateNotificationConfig
2018	10, // 18: google.cloud.iot.v1.DeviceRegistry.mqtt_config:type_name -> google.cloud.iot.v1.MqttConfig
2019	11, // 19: google.cloud.iot.v1.DeviceRegistry.http_config:type_name -> google.cloud.iot.v1.HttpConfig
2020	2,  // 20: google.cloud.iot.v1.DeviceRegistry.log_level:type_name -> google.cloud.iot.v1.LogLevel
2021	14, // 21: google.cloud.iot.v1.DeviceRegistry.credentials:type_name -> google.cloud.iot.v1.RegistryCredential
2022	0,  // 22: google.cloud.iot.v1.MqttConfig.mqtt_enabled_state:type_name -> google.cloud.iot.v1.MqttState
2023	1,  // 23: google.cloud.iot.v1.HttpConfig.http_enabled_state:type_name -> google.cloud.iot.v1.HttpState
2024	16, // 24: google.cloud.iot.v1.RegistryCredential.public_key_certificate:type_name -> google.cloud.iot.v1.PublicKeyCertificate
2025	22, // 25: google.cloud.iot.v1.X509CertificateDetails.start_time:type_name -> google.protobuf.Timestamp
2026	22, // 26: google.cloud.iot.v1.X509CertificateDetails.expiry_time:type_name -> google.protobuf.Timestamp
2027	5,  // 27: google.cloud.iot.v1.PublicKeyCertificate.format:type_name -> google.cloud.iot.v1.PublicKeyCertificateFormat
2028	15, // 28: google.cloud.iot.v1.PublicKeyCertificate.x509_details:type_name -> google.cloud.iot.v1.X509CertificateDetails
2029	18, // 29: google.cloud.iot.v1.DeviceCredential.public_key:type_name -> google.cloud.iot.v1.PublicKeyCredential
2030	22, // 30: google.cloud.iot.v1.DeviceCredential.expiration_time:type_name -> google.protobuf.Timestamp
2031	6,  // 31: google.cloud.iot.v1.PublicKeyCredential.format:type_name -> google.cloud.iot.v1.PublicKeyFormat
2032	22, // 32: google.cloud.iot.v1.DeviceConfig.cloud_update_time:type_name -> google.protobuf.Timestamp
2033	22, // 33: google.cloud.iot.v1.DeviceConfig.device_ack_time:type_name -> google.protobuf.Timestamp
2034	22, // 34: google.cloud.iot.v1.DeviceState.update_time:type_name -> google.protobuf.Timestamp
2035	35, // [35:35] is the sub-list for method output_type
2036	35, // [35:35] is the sub-list for method input_type
2037	35, // [35:35] is the sub-list for extension type_name
2038	35, // [35:35] is the sub-list for extension extendee
2039	0,  // [0:35] is the sub-list for field type_name
2040}
2041
2042func init() { file_google_cloud_iot_v1_resources_proto_init() }
2043func file_google_cloud_iot_v1_resources_proto_init() {
2044	if File_google_cloud_iot_v1_resources_proto != nil {
2045		return
2046	}
2047	if !protoimpl.UnsafeEnabled {
2048		file_google_cloud_iot_v1_resources_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
2049			switch v := v.(*Device); i {
2050			case 0:
2051				return &v.state
2052			case 1:
2053				return &v.sizeCache
2054			case 2:
2055				return &v.unknownFields
2056			default:
2057				return nil
2058			}
2059		}
2060		file_google_cloud_iot_v1_resources_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
2061			switch v := v.(*GatewayConfig); i {
2062			case 0:
2063				return &v.state
2064			case 1:
2065				return &v.sizeCache
2066			case 2:
2067				return &v.unknownFields
2068			default:
2069				return nil
2070			}
2071		}
2072		file_google_cloud_iot_v1_resources_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
2073			switch v := v.(*DeviceRegistry); i {
2074			case 0:
2075				return &v.state
2076			case 1:
2077				return &v.sizeCache
2078			case 2:
2079				return &v.unknownFields
2080			default:
2081				return nil
2082			}
2083		}
2084		file_google_cloud_iot_v1_resources_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
2085			switch v := v.(*MqttConfig); i {
2086			case 0:
2087				return &v.state
2088			case 1:
2089				return &v.sizeCache
2090			case 2:
2091				return &v.unknownFields
2092			default:
2093				return nil
2094			}
2095		}
2096		file_google_cloud_iot_v1_resources_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
2097			switch v := v.(*HttpConfig); i {
2098			case 0:
2099				return &v.state
2100			case 1:
2101				return &v.sizeCache
2102			case 2:
2103				return &v.unknownFields
2104			default:
2105				return nil
2106			}
2107		}
2108		file_google_cloud_iot_v1_resources_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
2109			switch v := v.(*EventNotificationConfig); i {
2110			case 0:
2111				return &v.state
2112			case 1:
2113				return &v.sizeCache
2114			case 2:
2115				return &v.unknownFields
2116			default:
2117				return nil
2118			}
2119		}
2120		file_google_cloud_iot_v1_resources_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
2121			switch v := v.(*StateNotificationConfig); i {
2122			case 0:
2123				return &v.state
2124			case 1:
2125				return &v.sizeCache
2126			case 2:
2127				return &v.unknownFields
2128			default:
2129				return nil
2130			}
2131		}
2132		file_google_cloud_iot_v1_resources_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
2133			switch v := v.(*RegistryCredential); i {
2134			case 0:
2135				return &v.state
2136			case 1:
2137				return &v.sizeCache
2138			case 2:
2139				return &v.unknownFields
2140			default:
2141				return nil
2142			}
2143		}
2144		file_google_cloud_iot_v1_resources_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
2145			switch v := v.(*X509CertificateDetails); i {
2146			case 0:
2147				return &v.state
2148			case 1:
2149				return &v.sizeCache
2150			case 2:
2151				return &v.unknownFields
2152			default:
2153				return nil
2154			}
2155		}
2156		file_google_cloud_iot_v1_resources_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
2157			switch v := v.(*PublicKeyCertificate); i {
2158			case 0:
2159				return &v.state
2160			case 1:
2161				return &v.sizeCache
2162			case 2:
2163				return &v.unknownFields
2164			default:
2165				return nil
2166			}
2167		}
2168		file_google_cloud_iot_v1_resources_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
2169			switch v := v.(*DeviceCredential); i {
2170			case 0:
2171				return &v.state
2172			case 1:
2173				return &v.sizeCache
2174			case 2:
2175				return &v.unknownFields
2176			default:
2177				return nil
2178			}
2179		}
2180		file_google_cloud_iot_v1_resources_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
2181			switch v := v.(*PublicKeyCredential); i {
2182			case 0:
2183				return &v.state
2184			case 1:
2185				return &v.sizeCache
2186			case 2:
2187				return &v.unknownFields
2188			default:
2189				return nil
2190			}
2191		}
2192		file_google_cloud_iot_v1_resources_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
2193			switch v := v.(*DeviceConfig); i {
2194			case 0:
2195				return &v.state
2196			case 1:
2197				return &v.sizeCache
2198			case 2:
2199				return &v.unknownFields
2200			default:
2201				return nil
2202			}
2203		}
2204		file_google_cloud_iot_v1_resources_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
2205			switch v := v.(*DeviceState); i {
2206			case 0:
2207				return &v.state
2208			case 1:
2209				return &v.sizeCache
2210			case 2:
2211				return &v.unknownFields
2212			default:
2213				return nil
2214			}
2215		}
2216	}
2217	file_google_cloud_iot_v1_resources_proto_msgTypes[7].OneofWrappers = []interface{}{
2218		(*RegistryCredential_PublicKeyCertificate)(nil),
2219	}
2220	file_google_cloud_iot_v1_resources_proto_msgTypes[10].OneofWrappers = []interface{}{
2221		(*DeviceCredential_PublicKey)(nil),
2222	}
2223	type x struct{}
2224	out := protoimpl.TypeBuilder{
2225		File: protoimpl.DescBuilder{
2226			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
2227			RawDescriptor: file_google_cloud_iot_v1_resources_proto_rawDesc,
2228			NumEnums:      7,
2229			NumMessages:   15,
2230			NumExtensions: 0,
2231			NumServices:   0,
2232		},
2233		GoTypes:           file_google_cloud_iot_v1_resources_proto_goTypes,
2234		DependencyIndexes: file_google_cloud_iot_v1_resources_proto_depIdxs,
2235		EnumInfos:         file_google_cloud_iot_v1_resources_proto_enumTypes,
2236		MessageInfos:      file_google_cloud_iot_v1_resources_proto_msgTypes,
2237	}.Build()
2238	File_google_cloud_iot_v1_resources_proto = out.File
2239	file_google_cloud_iot_v1_resources_proto_rawDesc = nil
2240	file_google_cloud_iot_v1_resources_proto_goTypes = nil
2241	file_google_cloud_iot_v1_resources_proto_depIdxs = nil
2242}
2243