diff --git a/aiplatform/apiv1/aiplatformpb/endpoint.pb.go b/aiplatform/apiv1/aiplatformpb/endpoint.pb.go index 1928a4f05fb1..d4b38106e28c 100755 --- a/aiplatform/apiv1/aiplatformpb/endpoint.pb.go +++ b/aiplatform/apiv1/aiplatformpb/endpoint.pb.go @@ -27,6 +27,7 @@ import ( _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" ) @@ -140,6 +141,8 @@ type Endpoint struct { // Format: // `https://{endpoint_id}.{region}-{project_number}.prediction.vertexai.goog`. DedicatedEndpointDns string `protobuf:"bytes,25,opt,name=dedicated_endpoint_dns,json=dedicatedEndpointDns,proto3" json:"dedicated_endpoint_dns,omitempty"` + // Configurations that are applied to the endpoint for online prediction. + ClientConnectionConfig *ClientConnectionConfig `protobuf:"bytes,23,opt,name=client_connection_config,json=clientConnectionConfig,proto3" json:"client_connection_config,omitempty"` // Output only. Reserved for future use. SatisfiesPzs bool `protobuf:"varint,27,opt,name=satisfies_pzs,json=satisfiesPzs,proto3" json:"satisfies_pzs,omitempty"` // Output only. Reserved for future use. @@ -298,6 +301,13 @@ func (x *Endpoint) GetDedicatedEndpointDns() string { return "" } +func (x *Endpoint) GetClientConnectionConfig() *ClientConnectionConfig { + if x != nil { + return x.ClientConnectionConfig + } + return nil +} + func (x *Endpoint) GetSatisfiesPzs() bool { if x != nil { return x.SatisfiesPzs @@ -800,6 +810,55 @@ func (x *FasterDeploymentConfig) GetFastTryoutEnabled() bool { return false } +// Configurations (e.g. inference timeout) that are applied on your endpoints. +type ClientConnectionConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Customizable online prediction request timeout. + InferenceTimeout *durationpb.Duration `protobuf:"bytes,1,opt,name=inference_timeout,json=inferenceTimeout,proto3" json:"inference_timeout,omitempty"` +} + +func (x *ClientConnectionConfig) Reset() { + *x = ClientConnectionConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1_endpoint_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ClientConnectionConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ClientConnectionConfig) ProtoMessage() {} + +func (x *ClientConnectionConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1_endpoint_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ClientConnectionConfig.ProtoReflect.Descriptor instead. +func (*ClientConnectionConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1_endpoint_proto_rawDescGZIP(), []int{5} +} + +func (x *ClientConnectionConfig) GetInferenceTimeout() *durationpb.Duration { + if x != nil { + return x.InferenceTimeout + } + return nil +} + var File_google_cloud_aiplatform_v1_endpoint_proto protoreflect.FileDescriptor var file_google_cloud_aiplatform_v1_endpoint_proto_rawDesc = []byte{ @@ -826,9 +885,11 @@ var file_google_cloud_aiplatform_v1_endpoint_proto_rawDesc = []byte{ 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0x8a, 0x0d, 0x0a, 0x08, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, + 0x74, 0x6f, 0x22, 0xf8, 0x0d, 0x0a, 0x08, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, @@ -908,139 +969,152 @@ var file_google_cloud_aiplatform_v1_endpoint_proto_rawDesc = []byte{ 0x64, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x64, 0x6e, 0x73, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x14, 0x64, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x44, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x61, 0x74, 0x69, 0x73, - 0x66, 0x69, 0x65, 0x73, 0x5f, 0x70, 0x7a, 0x73, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x50, 0x7a, - 0x73, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x5f, 0x70, - 0x7a, 0x69, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x73, - 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x50, 0x7a, 0x69, 0x1a, 0x3f, 0x0a, 0x11, 0x54, - 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0xb5, 0x01, 0xea, 0x41, 0xb1, 0x01, 0x0a, 0x22, - 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x12, 0x3c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x65, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x7d, - 0x12, 0x4d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, - 0x68, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x7d, - 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x7d, 0x22, - 0xce, 0x09, 0x0a, 0x0d, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x12, 0x61, 0x0a, 0x13, 0x64, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x64, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x48, 0x00, - 0x52, 0x12, 0x64, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x12, 0x61, 0x0a, 0x13, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, - 0x63, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, - 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x48, 0x00, 0x52, 0x12, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x62, 0x0a, 0x10, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x35, 0xfa, 0x41, 0x32, 0x0a, 0x30, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x68, 0x61, 0x72, - 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x13, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x3d, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x27, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, - 0x2d, 0x0a, 0x10, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x21, - 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x56, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0f, 0x65, 0x78, 0x70, 0x6c, - 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x31, 0x0a, 0x14, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, - 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x19, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, - 0x67, 0x69, 0x6e, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x64, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x67, - 0x69, 0x6e, 0x67, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x5e, 0x0a, 0x11, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, - 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x10, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x45, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x6c, 0x0a, 0x18, 0x66, 0x61, 0x73, 0x74, 0x65, - 0x72, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, + 0x6f, 0x69, 0x6e, 0x74, 0x44, 0x6e, 0x73, 0x12, 0x6c, 0x0a, 0x18, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x16, 0x66, - 0x61, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x60, 0x0a, 0x0d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, + 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x16, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, + 0x65, 0x73, 0x5f, 0x70, 0x7a, 0x73, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x0c, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x50, 0x7a, 0x73, 0x12, + 0x28, 0x0a, 0x0d, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x5f, 0x70, 0x7a, 0x69, + 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x73, 0x61, 0x74, + 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x50, 0x7a, 0x69, 0x1a, 0x3f, 0x0a, 0x11, 0x54, 0x72, 0x61, + 0x66, 0x66, 0x69, 0x63, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0xb5, 0x01, 0xea, 0x41, 0xb1, 0x01, 0x0a, 0x22, 0x61, 0x69, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x12, 0x3c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x7d, 0x12, 0x4d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, + 0x72, 0x73, 0x2f, 0x7b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x7d, 0x2f, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x7d, 0x22, 0xce, 0x09, + 0x0a, 0x0d, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, + 0x61, 0x0a, 0x13, 0x64, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x70, 0x72, 0x65, 0x64, - 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x22, 0xd1, 0x01, 0x0a, 0x10, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x2d, 0x0a, 0x10, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, - 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x48, 0x74, 0x74, - 0x70, 0x55, 0x72, 0x69, 0x12, 0x2d, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x5f, - 0x68, 0x74, 0x74, 0x70, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x48, 0x74, 0x74, 0x70, - 0x55, 0x72, 0x69, 0x12, 0x2b, 0x0a, 0x0f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x68, 0x74, - 0x74, 0x70, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x0d, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x48, 0x74, 0x74, 0x70, 0x55, 0x72, 0x69, - 0x12, 0x32, 0x0a, 0x12, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x61, - 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, - 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xc8, 0x01, 0x0a, 0x23, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4c, - 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, - 0x6e, 0x67, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x73, - 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x12, 0x62, 0x0a, 0x14, 0x62, - 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x62, 0x69, 0x67, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x48, 0x0a, 0x16, 0x46, 0x61, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2e, 0x0a, 0x13, 0x66, 0x61, 0x73, - 0x74, 0x5f, 0x74, 0x72, 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x66, 0x61, 0x73, 0x74, 0x54, 0x72, 0x79, 0x6f, - 0x75, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, 0xcb, 0x01, 0x0a, 0x1e, 0x63, 0x6f, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x64, 0x69, 0x63, 0x61, + 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x48, 0x00, 0x52, 0x12, + 0x64, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x12, 0x61, 0x0a, 0x13, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x5f, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, + 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x48, + 0x00, 0x52, 0x12, 0x61, 0x75, 0x74, 0x6f, 0x6d, 0x61, 0x74, 0x69, 0x63, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x62, 0x0a, 0x10, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x35, 0xfa, 0x41, 0x32, 0x0a, 0x30, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3d, + 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, + 0x41, 0x02, 0xfa, 0x41, 0x21, 0x0a, 0x1f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x2d, 0x0a, + 0x10, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x56, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0f, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x31, 0x0a, 0x14, 0x64, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x0a, 0x0f, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x19, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x67, 0x69, + 0x6e, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, + 0x67, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, + 0x67, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x5e, 0x0a, 0x11, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, + 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x10, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x6c, 0x0a, 0x18, 0x66, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x16, 0x66, 0x61, 0x73, + 0x74, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x60, 0x0a, 0x0d, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0xd1, + 0x01, 0x0a, 0x10, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x12, 0x2d, 0x0a, 0x10, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x5f, 0x68, + 0x74, 0x74, 0x70, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x0e, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x48, 0x74, 0x74, 0x70, 0x55, + 0x72, 0x69, 0x12, 0x2d, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x5f, 0x68, 0x74, + 0x74, 0x70, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x48, 0x74, 0x74, 0x70, 0x55, 0x72, + 0x69, 0x12, 0x2b, 0x0a, 0x0f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x68, 0x74, 0x74, 0x70, + 0x5f, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x0d, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x48, 0x74, 0x74, 0x70, 0x55, 0x72, 0x69, 0x12, 0x32, + 0x0a, 0x12, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x11, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, + 0x6e, 0x74, 0x22, 0xc8, 0x01, 0x0a, 0x23, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4c, 0x6f, 0x67, + 0x67, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, + 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x73, 0x61, 0x6d, + 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x12, 0x62, 0x0a, 0x14, 0x62, 0x69, 0x67, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x48, 0x0a, + 0x16, 0x46, 0x61, 0x73, 0x74, 0x65, 0x72, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2e, 0x0a, 0x13, 0x66, 0x61, 0x73, 0x74, 0x5f, + 0x74, 0x72, 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x66, 0x61, 0x73, 0x74, 0x54, 0x72, 0x79, 0x6f, 0x75, 0x74, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x60, 0x0a, 0x16, 0x43, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x46, 0x0a, 0x11, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0xcb, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x0d, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3e, 0x63, @@ -1068,46 +1142,50 @@ func file_google_cloud_aiplatform_v1_endpoint_proto_rawDescGZIP() []byte { return file_google_cloud_aiplatform_v1_endpoint_proto_rawDescData } -var file_google_cloud_aiplatform_v1_endpoint_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_google_cloud_aiplatform_v1_endpoint_proto_msgTypes = make([]protoimpl.MessageInfo, 9) var file_google_cloud_aiplatform_v1_endpoint_proto_goTypes = []any{ (*Endpoint)(nil), // 0: google.cloud.aiplatform.v1.Endpoint (*DeployedModel)(nil), // 1: google.cloud.aiplatform.v1.DeployedModel (*PrivateEndpoints)(nil), // 2: google.cloud.aiplatform.v1.PrivateEndpoints (*PredictRequestResponseLoggingConfig)(nil), // 3: google.cloud.aiplatform.v1.PredictRequestResponseLoggingConfig (*FasterDeploymentConfig)(nil), // 4: google.cloud.aiplatform.v1.FasterDeploymentConfig - nil, // 5: google.cloud.aiplatform.v1.Endpoint.TrafficSplitEntry - nil, // 6: google.cloud.aiplatform.v1.Endpoint.LabelsEntry - nil, // 7: google.cloud.aiplatform.v1.DeployedModel.SystemLabelsEntry - (*timestamppb.Timestamp)(nil), // 8: google.protobuf.Timestamp - (*EncryptionSpec)(nil), // 9: google.cloud.aiplatform.v1.EncryptionSpec - (*PrivateServiceConnectConfig)(nil), // 10: google.cloud.aiplatform.v1.PrivateServiceConnectConfig - (*DedicatedResources)(nil), // 11: google.cloud.aiplatform.v1.DedicatedResources - (*AutomaticResources)(nil), // 12: google.cloud.aiplatform.v1.AutomaticResources - (*ExplanationSpec)(nil), // 13: google.cloud.aiplatform.v1.ExplanationSpec - (*BigQueryDestination)(nil), // 14: google.cloud.aiplatform.v1.BigQueryDestination + (*ClientConnectionConfig)(nil), // 5: google.cloud.aiplatform.v1.ClientConnectionConfig + nil, // 6: google.cloud.aiplatform.v1.Endpoint.TrafficSplitEntry + nil, // 7: google.cloud.aiplatform.v1.Endpoint.LabelsEntry + nil, // 8: google.cloud.aiplatform.v1.DeployedModel.SystemLabelsEntry + (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp + (*EncryptionSpec)(nil), // 10: google.cloud.aiplatform.v1.EncryptionSpec + (*PrivateServiceConnectConfig)(nil), // 11: google.cloud.aiplatform.v1.PrivateServiceConnectConfig + (*DedicatedResources)(nil), // 12: google.cloud.aiplatform.v1.DedicatedResources + (*AutomaticResources)(nil), // 13: google.cloud.aiplatform.v1.AutomaticResources + (*ExplanationSpec)(nil), // 14: google.cloud.aiplatform.v1.ExplanationSpec + (*BigQueryDestination)(nil), // 15: google.cloud.aiplatform.v1.BigQueryDestination + (*durationpb.Duration)(nil), // 16: google.protobuf.Duration } var file_google_cloud_aiplatform_v1_endpoint_proto_depIdxs = []int32{ 1, // 0: google.cloud.aiplatform.v1.Endpoint.deployed_models:type_name -> google.cloud.aiplatform.v1.DeployedModel - 5, // 1: google.cloud.aiplatform.v1.Endpoint.traffic_split:type_name -> google.cloud.aiplatform.v1.Endpoint.TrafficSplitEntry - 6, // 2: google.cloud.aiplatform.v1.Endpoint.labels:type_name -> google.cloud.aiplatform.v1.Endpoint.LabelsEntry - 8, // 3: google.cloud.aiplatform.v1.Endpoint.create_time:type_name -> google.protobuf.Timestamp - 8, // 4: google.cloud.aiplatform.v1.Endpoint.update_time:type_name -> google.protobuf.Timestamp - 9, // 5: google.cloud.aiplatform.v1.Endpoint.encryption_spec:type_name -> google.cloud.aiplatform.v1.EncryptionSpec - 10, // 6: google.cloud.aiplatform.v1.Endpoint.private_service_connect_config:type_name -> google.cloud.aiplatform.v1.PrivateServiceConnectConfig + 6, // 1: google.cloud.aiplatform.v1.Endpoint.traffic_split:type_name -> google.cloud.aiplatform.v1.Endpoint.TrafficSplitEntry + 7, // 2: google.cloud.aiplatform.v1.Endpoint.labels:type_name -> google.cloud.aiplatform.v1.Endpoint.LabelsEntry + 9, // 3: google.cloud.aiplatform.v1.Endpoint.create_time:type_name -> google.protobuf.Timestamp + 9, // 4: google.cloud.aiplatform.v1.Endpoint.update_time:type_name -> google.protobuf.Timestamp + 10, // 5: google.cloud.aiplatform.v1.Endpoint.encryption_spec:type_name -> google.cloud.aiplatform.v1.EncryptionSpec + 11, // 6: google.cloud.aiplatform.v1.Endpoint.private_service_connect_config:type_name -> google.cloud.aiplatform.v1.PrivateServiceConnectConfig 3, // 7: google.cloud.aiplatform.v1.Endpoint.predict_request_response_logging_config:type_name -> google.cloud.aiplatform.v1.PredictRequestResponseLoggingConfig - 11, // 8: google.cloud.aiplatform.v1.DeployedModel.dedicated_resources:type_name -> google.cloud.aiplatform.v1.DedicatedResources - 12, // 9: google.cloud.aiplatform.v1.DeployedModel.automatic_resources:type_name -> google.cloud.aiplatform.v1.AutomaticResources - 8, // 10: google.cloud.aiplatform.v1.DeployedModel.create_time:type_name -> google.protobuf.Timestamp - 13, // 11: google.cloud.aiplatform.v1.DeployedModel.explanation_spec:type_name -> google.cloud.aiplatform.v1.ExplanationSpec - 2, // 12: google.cloud.aiplatform.v1.DeployedModel.private_endpoints:type_name -> google.cloud.aiplatform.v1.PrivateEndpoints - 4, // 13: google.cloud.aiplatform.v1.DeployedModel.faster_deployment_config:type_name -> google.cloud.aiplatform.v1.FasterDeploymentConfig - 7, // 14: google.cloud.aiplatform.v1.DeployedModel.system_labels:type_name -> google.cloud.aiplatform.v1.DeployedModel.SystemLabelsEntry - 14, // 15: google.cloud.aiplatform.v1.PredictRequestResponseLoggingConfig.bigquery_destination:type_name -> google.cloud.aiplatform.v1.BigQueryDestination - 16, // [16:16] is the sub-list for method output_type - 16, // [16:16] is the sub-list for method input_type - 16, // [16:16] is the sub-list for extension type_name - 16, // [16:16] is the sub-list for extension extendee - 0, // [0:16] is the sub-list for field type_name + 5, // 8: google.cloud.aiplatform.v1.Endpoint.client_connection_config:type_name -> google.cloud.aiplatform.v1.ClientConnectionConfig + 12, // 9: google.cloud.aiplatform.v1.DeployedModel.dedicated_resources:type_name -> google.cloud.aiplatform.v1.DedicatedResources + 13, // 10: google.cloud.aiplatform.v1.DeployedModel.automatic_resources:type_name -> google.cloud.aiplatform.v1.AutomaticResources + 9, // 11: google.cloud.aiplatform.v1.DeployedModel.create_time:type_name -> google.protobuf.Timestamp + 14, // 12: google.cloud.aiplatform.v1.DeployedModel.explanation_spec:type_name -> google.cloud.aiplatform.v1.ExplanationSpec + 2, // 13: google.cloud.aiplatform.v1.DeployedModel.private_endpoints:type_name -> google.cloud.aiplatform.v1.PrivateEndpoints + 4, // 14: google.cloud.aiplatform.v1.DeployedModel.faster_deployment_config:type_name -> google.cloud.aiplatform.v1.FasterDeploymentConfig + 8, // 15: google.cloud.aiplatform.v1.DeployedModel.system_labels:type_name -> google.cloud.aiplatform.v1.DeployedModel.SystemLabelsEntry + 15, // 16: google.cloud.aiplatform.v1.PredictRequestResponseLoggingConfig.bigquery_destination:type_name -> google.cloud.aiplatform.v1.BigQueryDestination + 16, // 17: google.cloud.aiplatform.v1.ClientConnectionConfig.inference_timeout:type_name -> google.protobuf.Duration + 18, // [18:18] is the sub-list for method output_type + 18, // [18:18] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name } func init() { file_google_cloud_aiplatform_v1_endpoint_proto_init() } @@ -1181,6 +1259,18 @@ func file_google_cloud_aiplatform_v1_endpoint_proto_init() { return nil } } + file_google_cloud_aiplatform_v1_endpoint_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*ClientConnectionConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_google_cloud_aiplatform_v1_endpoint_proto_msgTypes[1].OneofWrappers = []any{ (*DeployedModel_DedicatedResources)(nil), @@ -1193,7 +1283,7 @@ func file_google_cloud_aiplatform_v1_endpoint_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_aiplatform_v1_endpoint_proto_rawDesc, NumEnums: 0, - NumMessages: 8, + NumMessages: 9, NumExtensions: 0, NumServices: 0, }, diff --git a/aiplatform/apiv1/aiplatformpb/endpoint_service.pb.go b/aiplatform/apiv1/aiplatformpb/endpoint_service.pb.go index eb2c9a882dff..751fc619ae1e 100755 --- a/aiplatform/apiv1/aiplatformpb/endpoint_service.pb.go +++ b/aiplatform/apiv1/aiplatformpb/endpoint_service.pb.go @@ -476,6 +476,108 @@ func (x *UpdateEndpointRequest) GetUpdateMask() *fieldmaskpb.FieldMask { return nil } +// Request message for +// [EndpointService.UpdateEndpointLongRunning][google.cloud.aiplatform.v1.EndpointService.UpdateEndpointLongRunning]. +type UpdateEndpointLongRunningRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The Endpoint which replaces the resource on the server. Currently + // we only support updating the `client_connection_config` field, all the + // other fields' update will be blocked. + Endpoint *Endpoint `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"` +} + +func (x *UpdateEndpointLongRunningRequest) Reset() { + *x = UpdateEndpointLongRunningRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateEndpointLongRunningRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateEndpointLongRunningRequest) ProtoMessage() {} + +func (x *UpdateEndpointLongRunningRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateEndpointLongRunningRequest.ProtoReflect.Descriptor instead. +func (*UpdateEndpointLongRunningRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{6} +} + +func (x *UpdateEndpointLongRunningRequest) GetEndpoint() *Endpoint { + if x != nil { + return x.Endpoint + } + return nil +} + +// Runtime operation information for +// [EndpointService.UpdateEndpointLongRunning][google.cloud.aiplatform.v1.EndpointService.UpdateEndpointLongRunning]. +type UpdateEndpointOperationMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The operation generic information. + GenericMetadata *GenericOperationMetadata `protobuf:"bytes,1,opt,name=generic_metadata,json=genericMetadata,proto3" json:"generic_metadata,omitempty"` +} + +func (x *UpdateEndpointOperationMetadata) Reset() { + *x = UpdateEndpointOperationMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateEndpointOperationMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateEndpointOperationMetadata) ProtoMessage() {} + +func (x *UpdateEndpointOperationMetadata) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateEndpointOperationMetadata.ProtoReflect.Descriptor instead. +func (*UpdateEndpointOperationMetadata) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{7} +} + +func (x *UpdateEndpointOperationMetadata) GetGenericMetadata() *GenericOperationMetadata { + if x != nil { + return x.GenericMetadata + } + return nil +} + // Request message for // [EndpointService.DeleteEndpoint][google.cloud.aiplatform.v1.EndpointService.DeleteEndpoint]. type DeleteEndpointRequest struct { @@ -492,7 +594,7 @@ type DeleteEndpointRequest struct { func (x *DeleteEndpointRequest) Reset() { *x = DeleteEndpointRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[6] + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -505,7 +607,7 @@ func (x *DeleteEndpointRequest) String() string { func (*DeleteEndpointRequest) ProtoMessage() {} func (x *DeleteEndpointRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[6] + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -518,7 +620,7 @@ func (x *DeleteEndpointRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteEndpointRequest.ProtoReflect.Descriptor instead. func (*DeleteEndpointRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{6} + return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{8} } func (x *DeleteEndpointRequest) GetName() string { @@ -564,7 +666,7 @@ type DeployModelRequest struct { func (x *DeployModelRequest) Reset() { *x = DeployModelRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[7] + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -577,7 +679,7 @@ func (x *DeployModelRequest) String() string { func (*DeployModelRequest) ProtoMessage() {} func (x *DeployModelRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[7] + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -590,7 +692,7 @@ func (x *DeployModelRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeployModelRequest.ProtoReflect.Descriptor instead. func (*DeployModelRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{7} + return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{9} } func (x *DeployModelRequest) GetEndpoint() string { @@ -628,7 +730,7 @@ type DeployModelResponse struct { func (x *DeployModelResponse) Reset() { *x = DeployModelResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[8] + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -641,7 +743,7 @@ func (x *DeployModelResponse) String() string { func (*DeployModelResponse) ProtoMessage() {} func (x *DeployModelResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[8] + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -654,7 +756,7 @@ func (x *DeployModelResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeployModelResponse.ProtoReflect.Descriptor instead. func (*DeployModelResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{8} + return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{10} } func (x *DeployModelResponse) GetDeployedModel() *DeployedModel { @@ -678,7 +780,7 @@ type DeployModelOperationMetadata struct { func (x *DeployModelOperationMetadata) Reset() { *x = DeployModelOperationMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[9] + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -691,7 +793,7 @@ func (x *DeployModelOperationMetadata) String() string { func (*DeployModelOperationMetadata) ProtoMessage() {} func (x *DeployModelOperationMetadata) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[9] + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -704,7 +806,7 @@ func (x *DeployModelOperationMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use DeployModelOperationMetadata.ProtoReflect.Descriptor instead. func (*DeployModelOperationMetadata) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{9} + return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{11} } func (x *DeployModelOperationMetadata) GetGenericMetadata() *GenericOperationMetadata { @@ -740,7 +842,7 @@ type UndeployModelRequest struct { func (x *UndeployModelRequest) Reset() { *x = UndeployModelRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[10] + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -753,7 +855,7 @@ func (x *UndeployModelRequest) String() string { func (*UndeployModelRequest) ProtoMessage() {} func (x *UndeployModelRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[10] + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -766,7 +868,7 @@ func (x *UndeployModelRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UndeployModelRequest.ProtoReflect.Descriptor instead. func (*UndeployModelRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{10} + return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{12} } func (x *UndeployModelRequest) GetEndpoint() string { @@ -801,7 +903,7 @@ type UndeployModelResponse struct { func (x *UndeployModelResponse) Reset() { *x = UndeployModelResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[11] + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -814,7 +916,7 @@ func (x *UndeployModelResponse) String() string { func (*UndeployModelResponse) ProtoMessage() {} func (x *UndeployModelResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[11] + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -827,7 +929,7 @@ func (x *UndeployModelResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UndeployModelResponse.ProtoReflect.Descriptor instead. func (*UndeployModelResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{11} + return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{13} } // Runtime operation information for @@ -844,7 +946,7 @@ type UndeployModelOperationMetadata struct { func (x *UndeployModelOperationMetadata) Reset() { *x = UndeployModelOperationMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[12] + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -857,7 +959,7 @@ func (x *UndeployModelOperationMetadata) String() string { func (*UndeployModelOperationMetadata) ProtoMessage() {} func (x *UndeployModelOperationMetadata) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[12] + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -870,7 +972,7 @@ func (x *UndeployModelOperationMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use UndeployModelOperationMetadata.ProtoReflect.Descriptor instead. func (*UndeployModelOperationMetadata) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{12} + return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{14} } func (x *UndeployModelOperationMetadata) GetGenericMetadata() *GenericOperationMetadata { @@ -912,7 +1014,7 @@ type MutateDeployedModelRequest struct { func (x *MutateDeployedModelRequest) Reset() { *x = MutateDeployedModelRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[13] + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -925,7 +1027,7 @@ func (x *MutateDeployedModelRequest) String() string { func (*MutateDeployedModelRequest) ProtoMessage() {} func (x *MutateDeployedModelRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[13] + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -938,7 +1040,7 @@ func (x *MutateDeployedModelRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MutateDeployedModelRequest.ProtoReflect.Descriptor instead. func (*MutateDeployedModelRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{13} + return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{15} } func (x *MutateDeployedModelRequest) GetEndpoint() string { @@ -976,7 +1078,7 @@ type MutateDeployedModelResponse struct { func (x *MutateDeployedModelResponse) Reset() { *x = MutateDeployedModelResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[14] + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -989,7 +1091,7 @@ func (x *MutateDeployedModelResponse) String() string { func (*MutateDeployedModelResponse) ProtoMessage() {} func (x *MutateDeployedModelResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[14] + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1002,7 +1104,7 @@ func (x *MutateDeployedModelResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MutateDeployedModelResponse.ProtoReflect.Descriptor instead. func (*MutateDeployedModelResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{14} + return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{16} } func (x *MutateDeployedModelResponse) GetDeployedModel() *DeployedModel { @@ -1026,7 +1128,7 @@ type MutateDeployedModelOperationMetadata struct { func (x *MutateDeployedModelOperationMetadata) Reset() { *x = MutateDeployedModelOperationMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[15] + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1039,7 +1141,7 @@ func (x *MutateDeployedModelOperationMetadata) String() string { func (*MutateDeployedModelOperationMetadata) ProtoMessage() {} func (x *MutateDeployedModelOperationMetadata) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[15] + mi := &file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1052,7 +1154,7 @@ func (x *MutateDeployedModelOperationMetadata) ProtoReflect() protoreflect.Messa // Deprecated: Use MutateDeployedModelOperationMetadata.ProtoReflect.Descriptor instead. func (*MutateDeployedModelOperationMetadata) Descriptor() ([]byte, []int) { - return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{15} + return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP(), []int{17} } func (x *MutateDeployedModelOperationMetadata) GetGenericMetadata() *GenericOperationMetadata { @@ -1151,7 +1253,22 @@ var file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDesc = []byte{ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, - 0x61, 0x73, 0x6b, 0x22, 0x57, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x64, + 0x61, 0x73, 0x6b, 0x22, 0x69, 0x0a, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x82, + 0x01, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x5f, 0x0a, 0x10, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, + 0x63, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x52, 0x0f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x22, 0x57, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, @@ -1254,7 +1371,7 @@ var file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDesc = []byte{ 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x32, 0xae, 0x0f, 0x0a, 0x0f, 0x45, 0x6e, 0x64, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x32, 0xad, 0x11, 0x0a, 0x0f, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x82, 0x02, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, @@ -1306,92 +1423,108 @@ var file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDesc = []byte{ 0x74, 0x32, 0x36, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xd3, 0x01, 0x0a, 0x0e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x31, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, - 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6f, - 0xca, 0x41, 0x30, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x17, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, - 0x2a, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x12, - 0x85, 0x02, 0x0a, 0x0b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, - 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, - 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, - 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa6, - 0x01, 0xca, 0x41, 0x33, 0x0a, 0x13, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x44, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x25, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x2c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x2c, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x3a, 0x01, 0x2a, 0x22, 0x3d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x64, 0x65, 0x70, 0x6c, - 0x6f, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x92, 0x02, 0x0a, 0x0d, 0x55, 0x6e, 0x64, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, - 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaf, 0x01, 0xca, 0x41, 0x37, - 0x0a, 0x15, 0x55, 0x6e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x55, 0x6e, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x28, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x2c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x5f, 0x69, 0x64, 0x2c, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x6c, - 0x69, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x3a, 0x01, 0x2a, 0x22, 0x3f, 0x2f, 0x76, 0x31, - 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xfc, 0x01, 0x0a, 0x19, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x4c, 0x6f, 0x6e, 0x67, + 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x4c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, + 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x81, 0x01, 0xca, 0x41, 0x2b, 0x0a, 0x08, 0x45, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x3a, 0x01, 0x2a, 0x22, 0x3d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, + 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, + 0x7d, 0x3a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0xd3, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x31, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, + 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6f, 0xca, + 0x41, 0x30, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x2a, + 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x75, - 0x6e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0xab, 0x02, 0x0a, - 0x13, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, - 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbc, 0x01, 0xca, 0x41, - 0x43, 0x0a, 0x1b, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, - 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, + 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x85, + 0x02, 0x0a, 0x0b, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x2e, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, + 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa6, 0x01, + 0xca, 0x41, 0x33, 0x0a, 0x13, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x25, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x2c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x2c, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x42, 0x3a, 0x01, 0x2a, 0x22, 0x3d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x92, 0x02, 0x0a, 0x0d, 0x55, 0x6e, 0x64, 0x65, 0x70, + 0x6c, 0x6f, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaf, 0x01, 0xca, 0x41, 0x37, 0x0a, + 0x15, 0x55, 0x6e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x55, 0x6e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x28, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x2c, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x5f, 0x69, 0x64, 0x2c, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x6c, 0x69, + 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x3a, 0x01, 0x2a, 0x22, 0x3f, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, + 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x75, 0x6e, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0xab, 0x02, 0x0a, 0x13, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x23, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, - 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2c, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, - 0x3a, 0x01, 0x2a, 0x22, 0x45, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x1a, 0x4d, 0xca, 0x41, 0x19, 0x61, - 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, - 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0xd2, 0x01, 0x0a, 0x1e, 0x63, 0x6f, - 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, - 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x14, 0x45, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0x3b, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x70, 0x62, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x56, - 0x31, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x5c, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5c, 0x56, 0x31, 0xea, 0x02, - 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, - 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x64, 0x65, 0x6c, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, + 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbc, 0x01, 0xca, 0x41, 0x43, + 0x0a, 0x1b, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x4d, + 0x75, 0x74, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xda, 0x41, 0x23, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2c, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2c, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x3a, + 0x01, 0x2a, 0x22, 0x45, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x6d, 0x75, 0x74, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x1a, 0x4d, 0xca, 0x41, 0x19, 0x61, 0x69, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0xd2, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x14, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, + 0x6f, 0x50, 0x01, 0x5a, 0x3e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0x3b, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x70, 0x62, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x56, 0x31, + 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, + 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x1d, + 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x41, + 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1406,7 +1539,7 @@ func file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescGZIP() []byte return file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDescData } -var file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes = make([]protoimpl.MessageInfo, 18) +var file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes = make([]protoimpl.MessageInfo, 20) var file_google_cloud_aiplatform_v1_endpoint_service_proto_goTypes = []any{ (*CreateEndpointRequest)(nil), // 0: google.cloud.aiplatform.v1.CreateEndpointRequest (*CreateEndpointOperationMetadata)(nil), // 1: google.cloud.aiplatform.v1.CreateEndpointOperationMetadata @@ -1414,62 +1547,68 @@ var file_google_cloud_aiplatform_v1_endpoint_service_proto_goTypes = []any{ (*ListEndpointsRequest)(nil), // 3: google.cloud.aiplatform.v1.ListEndpointsRequest (*ListEndpointsResponse)(nil), // 4: google.cloud.aiplatform.v1.ListEndpointsResponse (*UpdateEndpointRequest)(nil), // 5: google.cloud.aiplatform.v1.UpdateEndpointRequest - (*DeleteEndpointRequest)(nil), // 6: google.cloud.aiplatform.v1.DeleteEndpointRequest - (*DeployModelRequest)(nil), // 7: google.cloud.aiplatform.v1.DeployModelRequest - (*DeployModelResponse)(nil), // 8: google.cloud.aiplatform.v1.DeployModelResponse - (*DeployModelOperationMetadata)(nil), // 9: google.cloud.aiplatform.v1.DeployModelOperationMetadata - (*UndeployModelRequest)(nil), // 10: google.cloud.aiplatform.v1.UndeployModelRequest - (*UndeployModelResponse)(nil), // 11: google.cloud.aiplatform.v1.UndeployModelResponse - (*UndeployModelOperationMetadata)(nil), // 12: google.cloud.aiplatform.v1.UndeployModelOperationMetadata - (*MutateDeployedModelRequest)(nil), // 13: google.cloud.aiplatform.v1.MutateDeployedModelRequest - (*MutateDeployedModelResponse)(nil), // 14: google.cloud.aiplatform.v1.MutateDeployedModelResponse - (*MutateDeployedModelOperationMetadata)(nil), // 15: google.cloud.aiplatform.v1.MutateDeployedModelOperationMetadata - nil, // 16: google.cloud.aiplatform.v1.DeployModelRequest.TrafficSplitEntry - nil, // 17: google.cloud.aiplatform.v1.UndeployModelRequest.TrafficSplitEntry - (*Endpoint)(nil), // 18: google.cloud.aiplatform.v1.Endpoint - (*GenericOperationMetadata)(nil), // 19: google.cloud.aiplatform.v1.GenericOperationMetadata - (*fieldmaskpb.FieldMask)(nil), // 20: google.protobuf.FieldMask - (*DeployedModel)(nil), // 21: google.cloud.aiplatform.v1.DeployedModel - (*longrunningpb.Operation)(nil), // 22: google.longrunning.Operation + (*UpdateEndpointLongRunningRequest)(nil), // 6: google.cloud.aiplatform.v1.UpdateEndpointLongRunningRequest + (*UpdateEndpointOperationMetadata)(nil), // 7: google.cloud.aiplatform.v1.UpdateEndpointOperationMetadata + (*DeleteEndpointRequest)(nil), // 8: google.cloud.aiplatform.v1.DeleteEndpointRequest + (*DeployModelRequest)(nil), // 9: google.cloud.aiplatform.v1.DeployModelRequest + (*DeployModelResponse)(nil), // 10: google.cloud.aiplatform.v1.DeployModelResponse + (*DeployModelOperationMetadata)(nil), // 11: google.cloud.aiplatform.v1.DeployModelOperationMetadata + (*UndeployModelRequest)(nil), // 12: google.cloud.aiplatform.v1.UndeployModelRequest + (*UndeployModelResponse)(nil), // 13: google.cloud.aiplatform.v1.UndeployModelResponse + (*UndeployModelOperationMetadata)(nil), // 14: google.cloud.aiplatform.v1.UndeployModelOperationMetadata + (*MutateDeployedModelRequest)(nil), // 15: google.cloud.aiplatform.v1.MutateDeployedModelRequest + (*MutateDeployedModelResponse)(nil), // 16: google.cloud.aiplatform.v1.MutateDeployedModelResponse + (*MutateDeployedModelOperationMetadata)(nil), // 17: google.cloud.aiplatform.v1.MutateDeployedModelOperationMetadata + nil, // 18: google.cloud.aiplatform.v1.DeployModelRequest.TrafficSplitEntry + nil, // 19: google.cloud.aiplatform.v1.UndeployModelRequest.TrafficSplitEntry + (*Endpoint)(nil), // 20: google.cloud.aiplatform.v1.Endpoint + (*GenericOperationMetadata)(nil), // 21: google.cloud.aiplatform.v1.GenericOperationMetadata + (*fieldmaskpb.FieldMask)(nil), // 22: google.protobuf.FieldMask + (*DeployedModel)(nil), // 23: google.cloud.aiplatform.v1.DeployedModel + (*longrunningpb.Operation)(nil), // 24: google.longrunning.Operation } var file_google_cloud_aiplatform_v1_endpoint_service_proto_depIdxs = []int32{ - 18, // 0: google.cloud.aiplatform.v1.CreateEndpointRequest.endpoint:type_name -> google.cloud.aiplatform.v1.Endpoint - 19, // 1: google.cloud.aiplatform.v1.CreateEndpointOperationMetadata.generic_metadata:type_name -> google.cloud.aiplatform.v1.GenericOperationMetadata - 20, // 2: google.cloud.aiplatform.v1.ListEndpointsRequest.read_mask:type_name -> google.protobuf.FieldMask - 18, // 3: google.cloud.aiplatform.v1.ListEndpointsResponse.endpoints:type_name -> google.cloud.aiplatform.v1.Endpoint - 18, // 4: google.cloud.aiplatform.v1.UpdateEndpointRequest.endpoint:type_name -> google.cloud.aiplatform.v1.Endpoint - 20, // 5: google.cloud.aiplatform.v1.UpdateEndpointRequest.update_mask:type_name -> google.protobuf.FieldMask - 21, // 6: google.cloud.aiplatform.v1.DeployModelRequest.deployed_model:type_name -> google.cloud.aiplatform.v1.DeployedModel - 16, // 7: google.cloud.aiplatform.v1.DeployModelRequest.traffic_split:type_name -> google.cloud.aiplatform.v1.DeployModelRequest.TrafficSplitEntry - 21, // 8: google.cloud.aiplatform.v1.DeployModelResponse.deployed_model:type_name -> google.cloud.aiplatform.v1.DeployedModel - 19, // 9: google.cloud.aiplatform.v1.DeployModelOperationMetadata.generic_metadata:type_name -> google.cloud.aiplatform.v1.GenericOperationMetadata - 17, // 10: google.cloud.aiplatform.v1.UndeployModelRequest.traffic_split:type_name -> google.cloud.aiplatform.v1.UndeployModelRequest.TrafficSplitEntry - 19, // 11: google.cloud.aiplatform.v1.UndeployModelOperationMetadata.generic_metadata:type_name -> google.cloud.aiplatform.v1.GenericOperationMetadata - 21, // 12: google.cloud.aiplatform.v1.MutateDeployedModelRequest.deployed_model:type_name -> google.cloud.aiplatform.v1.DeployedModel - 20, // 13: google.cloud.aiplatform.v1.MutateDeployedModelRequest.update_mask:type_name -> google.protobuf.FieldMask - 21, // 14: google.cloud.aiplatform.v1.MutateDeployedModelResponse.deployed_model:type_name -> google.cloud.aiplatform.v1.DeployedModel - 19, // 15: google.cloud.aiplatform.v1.MutateDeployedModelOperationMetadata.generic_metadata:type_name -> google.cloud.aiplatform.v1.GenericOperationMetadata - 0, // 16: google.cloud.aiplatform.v1.EndpointService.CreateEndpoint:input_type -> google.cloud.aiplatform.v1.CreateEndpointRequest - 2, // 17: google.cloud.aiplatform.v1.EndpointService.GetEndpoint:input_type -> google.cloud.aiplatform.v1.GetEndpointRequest - 3, // 18: google.cloud.aiplatform.v1.EndpointService.ListEndpoints:input_type -> google.cloud.aiplatform.v1.ListEndpointsRequest - 5, // 19: google.cloud.aiplatform.v1.EndpointService.UpdateEndpoint:input_type -> google.cloud.aiplatform.v1.UpdateEndpointRequest - 6, // 20: google.cloud.aiplatform.v1.EndpointService.DeleteEndpoint:input_type -> google.cloud.aiplatform.v1.DeleteEndpointRequest - 7, // 21: google.cloud.aiplatform.v1.EndpointService.DeployModel:input_type -> google.cloud.aiplatform.v1.DeployModelRequest - 10, // 22: google.cloud.aiplatform.v1.EndpointService.UndeployModel:input_type -> google.cloud.aiplatform.v1.UndeployModelRequest - 13, // 23: google.cloud.aiplatform.v1.EndpointService.MutateDeployedModel:input_type -> google.cloud.aiplatform.v1.MutateDeployedModelRequest - 22, // 24: google.cloud.aiplatform.v1.EndpointService.CreateEndpoint:output_type -> google.longrunning.Operation - 18, // 25: google.cloud.aiplatform.v1.EndpointService.GetEndpoint:output_type -> google.cloud.aiplatform.v1.Endpoint - 4, // 26: google.cloud.aiplatform.v1.EndpointService.ListEndpoints:output_type -> google.cloud.aiplatform.v1.ListEndpointsResponse - 18, // 27: google.cloud.aiplatform.v1.EndpointService.UpdateEndpoint:output_type -> google.cloud.aiplatform.v1.Endpoint - 22, // 28: google.cloud.aiplatform.v1.EndpointService.DeleteEndpoint:output_type -> google.longrunning.Operation - 22, // 29: google.cloud.aiplatform.v1.EndpointService.DeployModel:output_type -> google.longrunning.Operation - 22, // 30: google.cloud.aiplatform.v1.EndpointService.UndeployModel:output_type -> google.longrunning.Operation - 22, // 31: google.cloud.aiplatform.v1.EndpointService.MutateDeployedModel:output_type -> google.longrunning.Operation - 24, // [24:32] is the sub-list for method output_type - 16, // [16:24] is the sub-list for method input_type - 16, // [16:16] is the sub-list for extension type_name - 16, // [16:16] is the sub-list for extension extendee - 0, // [0:16] is the sub-list for field type_name + 20, // 0: google.cloud.aiplatform.v1.CreateEndpointRequest.endpoint:type_name -> google.cloud.aiplatform.v1.Endpoint + 21, // 1: google.cloud.aiplatform.v1.CreateEndpointOperationMetadata.generic_metadata:type_name -> google.cloud.aiplatform.v1.GenericOperationMetadata + 22, // 2: google.cloud.aiplatform.v1.ListEndpointsRequest.read_mask:type_name -> google.protobuf.FieldMask + 20, // 3: google.cloud.aiplatform.v1.ListEndpointsResponse.endpoints:type_name -> google.cloud.aiplatform.v1.Endpoint + 20, // 4: google.cloud.aiplatform.v1.UpdateEndpointRequest.endpoint:type_name -> google.cloud.aiplatform.v1.Endpoint + 22, // 5: google.cloud.aiplatform.v1.UpdateEndpointRequest.update_mask:type_name -> google.protobuf.FieldMask + 20, // 6: google.cloud.aiplatform.v1.UpdateEndpointLongRunningRequest.endpoint:type_name -> google.cloud.aiplatform.v1.Endpoint + 21, // 7: google.cloud.aiplatform.v1.UpdateEndpointOperationMetadata.generic_metadata:type_name -> google.cloud.aiplatform.v1.GenericOperationMetadata + 23, // 8: google.cloud.aiplatform.v1.DeployModelRequest.deployed_model:type_name -> google.cloud.aiplatform.v1.DeployedModel + 18, // 9: google.cloud.aiplatform.v1.DeployModelRequest.traffic_split:type_name -> google.cloud.aiplatform.v1.DeployModelRequest.TrafficSplitEntry + 23, // 10: google.cloud.aiplatform.v1.DeployModelResponse.deployed_model:type_name -> google.cloud.aiplatform.v1.DeployedModel + 21, // 11: google.cloud.aiplatform.v1.DeployModelOperationMetadata.generic_metadata:type_name -> google.cloud.aiplatform.v1.GenericOperationMetadata + 19, // 12: google.cloud.aiplatform.v1.UndeployModelRequest.traffic_split:type_name -> google.cloud.aiplatform.v1.UndeployModelRequest.TrafficSplitEntry + 21, // 13: google.cloud.aiplatform.v1.UndeployModelOperationMetadata.generic_metadata:type_name -> google.cloud.aiplatform.v1.GenericOperationMetadata + 23, // 14: google.cloud.aiplatform.v1.MutateDeployedModelRequest.deployed_model:type_name -> google.cloud.aiplatform.v1.DeployedModel + 22, // 15: google.cloud.aiplatform.v1.MutateDeployedModelRequest.update_mask:type_name -> google.protobuf.FieldMask + 23, // 16: google.cloud.aiplatform.v1.MutateDeployedModelResponse.deployed_model:type_name -> google.cloud.aiplatform.v1.DeployedModel + 21, // 17: google.cloud.aiplatform.v1.MutateDeployedModelOperationMetadata.generic_metadata:type_name -> google.cloud.aiplatform.v1.GenericOperationMetadata + 0, // 18: google.cloud.aiplatform.v1.EndpointService.CreateEndpoint:input_type -> google.cloud.aiplatform.v1.CreateEndpointRequest + 2, // 19: google.cloud.aiplatform.v1.EndpointService.GetEndpoint:input_type -> google.cloud.aiplatform.v1.GetEndpointRequest + 3, // 20: google.cloud.aiplatform.v1.EndpointService.ListEndpoints:input_type -> google.cloud.aiplatform.v1.ListEndpointsRequest + 5, // 21: google.cloud.aiplatform.v1.EndpointService.UpdateEndpoint:input_type -> google.cloud.aiplatform.v1.UpdateEndpointRequest + 6, // 22: google.cloud.aiplatform.v1.EndpointService.UpdateEndpointLongRunning:input_type -> google.cloud.aiplatform.v1.UpdateEndpointLongRunningRequest + 8, // 23: google.cloud.aiplatform.v1.EndpointService.DeleteEndpoint:input_type -> google.cloud.aiplatform.v1.DeleteEndpointRequest + 9, // 24: google.cloud.aiplatform.v1.EndpointService.DeployModel:input_type -> google.cloud.aiplatform.v1.DeployModelRequest + 12, // 25: google.cloud.aiplatform.v1.EndpointService.UndeployModel:input_type -> google.cloud.aiplatform.v1.UndeployModelRequest + 15, // 26: google.cloud.aiplatform.v1.EndpointService.MutateDeployedModel:input_type -> google.cloud.aiplatform.v1.MutateDeployedModelRequest + 24, // 27: google.cloud.aiplatform.v1.EndpointService.CreateEndpoint:output_type -> google.longrunning.Operation + 20, // 28: google.cloud.aiplatform.v1.EndpointService.GetEndpoint:output_type -> google.cloud.aiplatform.v1.Endpoint + 4, // 29: google.cloud.aiplatform.v1.EndpointService.ListEndpoints:output_type -> google.cloud.aiplatform.v1.ListEndpointsResponse + 20, // 30: google.cloud.aiplatform.v1.EndpointService.UpdateEndpoint:output_type -> google.cloud.aiplatform.v1.Endpoint + 24, // 31: google.cloud.aiplatform.v1.EndpointService.UpdateEndpointLongRunning:output_type -> google.longrunning.Operation + 24, // 32: google.cloud.aiplatform.v1.EndpointService.DeleteEndpoint:output_type -> google.longrunning.Operation + 24, // 33: google.cloud.aiplatform.v1.EndpointService.DeployModel:output_type -> google.longrunning.Operation + 24, // 34: google.cloud.aiplatform.v1.EndpointService.UndeployModel:output_type -> google.longrunning.Operation + 24, // 35: google.cloud.aiplatform.v1.EndpointService.MutateDeployedModel:output_type -> google.longrunning.Operation + 27, // [27:36] is the sub-list for method output_type + 18, // [18:27] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name } func init() { file_google_cloud_aiplatform_v1_endpoint_service_proto_init() } @@ -1553,7 +1692,7 @@ func file_google_cloud_aiplatform_v1_endpoint_service_proto_init() { } } file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*DeleteEndpointRequest); i { + switch v := v.(*UpdateEndpointLongRunningRequest); i { case 0: return &v.state case 1: @@ -1565,7 +1704,7 @@ func file_google_cloud_aiplatform_v1_endpoint_service_proto_init() { } } file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*DeployModelRequest); i { + switch v := v.(*UpdateEndpointOperationMetadata); i { case 0: return &v.state case 1: @@ -1577,7 +1716,7 @@ func file_google_cloud_aiplatform_v1_endpoint_service_proto_init() { } } file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeployModelResponse); i { + switch v := v.(*DeleteEndpointRequest); i { case 0: return &v.state case 1: @@ -1589,7 +1728,7 @@ func file_google_cloud_aiplatform_v1_endpoint_service_proto_init() { } } file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeployModelOperationMetadata); i { + switch v := v.(*DeployModelRequest); i { case 0: return &v.state case 1: @@ -1601,7 +1740,7 @@ func file_google_cloud_aiplatform_v1_endpoint_service_proto_init() { } } file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*UndeployModelRequest); i { + switch v := v.(*DeployModelResponse); i { case 0: return &v.state case 1: @@ -1613,7 +1752,7 @@ func file_google_cloud_aiplatform_v1_endpoint_service_proto_init() { } } file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*UndeployModelResponse); i { + switch v := v.(*DeployModelOperationMetadata); i { case 0: return &v.state case 1: @@ -1625,7 +1764,7 @@ func file_google_cloud_aiplatform_v1_endpoint_service_proto_init() { } } file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*UndeployModelOperationMetadata); i { + switch v := v.(*UndeployModelRequest); i { case 0: return &v.state case 1: @@ -1637,7 +1776,7 @@ func file_google_cloud_aiplatform_v1_endpoint_service_proto_init() { } } file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*MutateDeployedModelRequest); i { + switch v := v.(*UndeployModelResponse); i { case 0: return &v.state case 1: @@ -1649,7 +1788,7 @@ func file_google_cloud_aiplatform_v1_endpoint_service_proto_init() { } } file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*MutateDeployedModelResponse); i { + switch v := v.(*UndeployModelOperationMetadata); i { case 0: return &v.state case 1: @@ -1661,6 +1800,30 @@ func file_google_cloud_aiplatform_v1_endpoint_service_proto_init() { } } file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[15].Exporter = func(v any, i int) any { + switch v := v.(*MutateDeployedModelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[16].Exporter = func(v any, i int) any { + switch v := v.(*MutateDeployedModelResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1_endpoint_service_proto_msgTypes[17].Exporter = func(v any, i int) any { switch v := v.(*MutateDeployedModelOperationMetadata); i { case 0: return &v.state @@ -1679,7 +1842,7 @@ func file_google_cloud_aiplatform_v1_endpoint_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_aiplatform_v1_endpoint_service_proto_rawDesc, NumEnums: 0, - NumMessages: 18, + NumMessages: 20, NumExtensions: 0, NumServices: 1, }, @@ -1713,6 +1876,8 @@ type EndpointServiceClient interface { ListEndpoints(ctx context.Context, in *ListEndpointsRequest, opts ...grpc.CallOption) (*ListEndpointsResponse, error) // Updates an Endpoint. UpdateEndpoint(ctx context.Context, in *UpdateEndpointRequest, opts ...grpc.CallOption) (*Endpoint, error) + // Updates an Endpoint with a long running operation. + UpdateEndpointLongRunning(ctx context.Context, in *UpdateEndpointLongRunningRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) // Deletes an Endpoint. DeleteEndpoint(ctx context.Context, in *DeleteEndpointRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) // Deploys a Model into this Endpoint, creating a DeployedModel within it. @@ -1771,6 +1936,15 @@ func (c *endpointServiceClient) UpdateEndpoint(ctx context.Context, in *UpdateEn return out, nil } +func (c *endpointServiceClient) UpdateEndpointLongRunning(ctx context.Context, in *UpdateEndpointLongRunningRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, "/google.cloud.aiplatform.v1.EndpointService/UpdateEndpointLongRunning", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *endpointServiceClient) DeleteEndpoint(ctx context.Context, in *DeleteEndpointRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { out := new(longrunningpb.Operation) err := c.cc.Invoke(ctx, "/google.cloud.aiplatform.v1.EndpointService/DeleteEndpoint", in, out, opts...) @@ -1817,6 +1991,8 @@ type EndpointServiceServer interface { ListEndpoints(context.Context, *ListEndpointsRequest) (*ListEndpointsResponse, error) // Updates an Endpoint. UpdateEndpoint(context.Context, *UpdateEndpointRequest) (*Endpoint, error) + // Updates an Endpoint with a long running operation. + UpdateEndpointLongRunning(context.Context, *UpdateEndpointLongRunningRequest) (*longrunningpb.Operation, error) // Deletes an Endpoint. DeleteEndpoint(context.Context, *DeleteEndpointRequest) (*longrunningpb.Operation, error) // Deploys a Model into this Endpoint, creating a DeployedModel within it. @@ -1847,6 +2023,9 @@ func (*UnimplementedEndpointServiceServer) ListEndpoints(context.Context, *ListE func (*UnimplementedEndpointServiceServer) UpdateEndpoint(context.Context, *UpdateEndpointRequest) (*Endpoint, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateEndpoint not implemented") } +func (*UnimplementedEndpointServiceServer) UpdateEndpointLongRunning(context.Context, *UpdateEndpointLongRunningRequest) (*longrunningpb.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateEndpointLongRunning not implemented") +} func (*UnimplementedEndpointServiceServer) DeleteEndpoint(context.Context, *DeleteEndpointRequest) (*longrunningpb.Operation, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteEndpoint not implemented") } @@ -1936,6 +2115,24 @@ func _EndpointService_UpdateEndpoint_Handler(srv interface{}, ctx context.Contex return interceptor(ctx, in, info, handler) } +func _EndpointService_UpdateEndpointLongRunning_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateEndpointLongRunningRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EndpointServiceServer).UpdateEndpointLongRunning(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.aiplatform.v1.EndpointService/UpdateEndpointLongRunning", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EndpointServiceServer).UpdateEndpointLongRunning(ctx, req.(*UpdateEndpointLongRunningRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _EndpointService_DeleteEndpoint_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DeleteEndpointRequest) if err := dec(in); err != nil { @@ -2028,6 +2225,10 @@ var _EndpointService_serviceDesc = grpc.ServiceDesc{ MethodName: "UpdateEndpoint", Handler: _EndpointService_UpdateEndpoint_Handler, }, + { + MethodName: "UpdateEndpointLongRunning", + Handler: _EndpointService_UpdateEndpointLongRunning_Handler, + }, { MethodName: "DeleteEndpoint", Handler: _EndpointService_DeleteEndpoint_Handler, diff --git a/aiplatform/apiv1/aiplatformpb/notebook_execution_job.pb.go b/aiplatform/apiv1/aiplatformpb/notebook_execution_job.pb.go index 577603432c40..6252f0074f27 100755 --- a/aiplatform/apiv1/aiplatformpb/notebook_execution_job.pb.go +++ b/aiplatform/apiv1/aiplatformpb/notebook_execution_job.pb.go @@ -58,6 +58,7 @@ type NotebookExecutionJob struct { // Types that are assignable to EnvironmentSpec: // // *NotebookExecutionJob_NotebookRuntimeTemplateResourceName + // *NotebookExecutionJob_CustomEnvironmentSpec_ EnvironmentSpec isNotebookExecutionJob_EnvironmentSpec `protobuf_oneof:"environment_spec"` // The location to store the notebook execution result. // @@ -185,6 +186,13 @@ func (x *NotebookExecutionJob) GetNotebookRuntimeTemplateResourceName() string { return "" } +func (x *NotebookExecutionJob) GetCustomEnvironmentSpec() *NotebookExecutionJob_CustomEnvironmentSpec { + if x, ok := x.GetEnvironmentSpec().(*NotebookExecutionJob_CustomEnvironmentSpec_); ok { + return x.CustomEnvironmentSpec + } + return nil +} + func (m *NotebookExecutionJob) GetExecutionSink() isNotebookExecutionJob_ExecutionSink { if m != nil { return m.ExecutionSink @@ -325,9 +333,16 @@ type NotebookExecutionJob_NotebookRuntimeTemplateResourceName struct { NotebookRuntimeTemplateResourceName string `protobuf:"bytes,14,opt,name=notebook_runtime_template_resource_name,json=notebookRuntimeTemplateResourceName,proto3,oneof"` } +type NotebookExecutionJob_CustomEnvironmentSpec_ struct { + // The custom compute configuration for an execution job. + CustomEnvironmentSpec *NotebookExecutionJob_CustomEnvironmentSpec `protobuf:"bytes,16,opt,name=custom_environment_spec,json=customEnvironmentSpec,proto3,oneof"` +} + func (*NotebookExecutionJob_NotebookRuntimeTemplateResourceName) isNotebookExecutionJob_EnvironmentSpec() { } +func (*NotebookExecutionJob_CustomEnvironmentSpec_) isNotebookExecutionJob_EnvironmentSpec() {} + type isNotebookExecutionJob_ExecutionSink interface { isNotebookExecutionJob_ExecutionSink() } @@ -528,6 +543,73 @@ func (x *NotebookExecutionJob_DirectNotebookSource) GetContent() []byte { return nil } +// Compute configuration to use for an execution job. +type NotebookExecutionJob_CustomEnvironmentSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The specification of a single machine for the execution job. + MachineSpec *MachineSpec `protobuf:"bytes,1,opt,name=machine_spec,json=machineSpec,proto3" json:"machine_spec,omitempty"` + // The specification of a persistent disk to attach for the execution job. + PersistentDiskSpec *PersistentDiskSpec `protobuf:"bytes,2,opt,name=persistent_disk_spec,json=persistentDiskSpec,proto3" json:"persistent_disk_spec,omitempty"` + // The network configuration to use for the execution job. + NetworkSpec *NetworkSpec `protobuf:"bytes,3,opt,name=network_spec,json=networkSpec,proto3" json:"network_spec,omitempty"` +} + +func (x *NotebookExecutionJob_CustomEnvironmentSpec) Reset() { + *x = NotebookExecutionJob_CustomEnvironmentSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1_notebook_execution_job_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NotebookExecutionJob_CustomEnvironmentSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NotebookExecutionJob_CustomEnvironmentSpec) ProtoMessage() {} + +func (x *NotebookExecutionJob_CustomEnvironmentSpec) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1_notebook_execution_job_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NotebookExecutionJob_CustomEnvironmentSpec.ProtoReflect.Descriptor instead. +func (*NotebookExecutionJob_CustomEnvironmentSpec) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1_notebook_execution_job_proto_rawDescGZIP(), []int{0, 3} +} + +func (x *NotebookExecutionJob_CustomEnvironmentSpec) GetMachineSpec() *MachineSpec { + if x != nil { + return x.MachineSpec + } + return nil +} + +func (x *NotebookExecutionJob_CustomEnvironmentSpec) GetPersistentDiskSpec() *PersistentDiskSpec { + if x != nil { + return x.PersistentDiskSpec + } + return nil +} + +func (x *NotebookExecutionJob_CustomEnvironmentSpec) GetNetworkSpec() *NetworkSpec { + if x != nil { + return x.NetworkSpec + } + return nil +} + var File_google_cloud_aiplatform_v1_notebook_execution_job_proto protoreflect.FileDescriptor var file_google_cloud_aiplatform_v1_notebook_execution_job_proto_rawDesc = []byte{ @@ -546,146 +628,177 @@ var file_google_cloud_aiplatform_v1_notebook_execution_job_proto_rawDesc = []byt 0x6f, 0x74, 0x6f, 0x1a, 0x2a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf8, 0x0e, 0x0a, 0x14, 0x4e, 0x6f, - 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, - 0x6f, 0x62, 0x12, 0x89, 0x01, 0x0a, 0x1a, 0x64, 0x61, 0x74, 0x61, 0x66, 0x6f, 0x72, 0x6d, 0x5f, - 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x2f, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8f, 0x12, 0x0a, + 0x14, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x89, 0x01, 0x0a, 0x1a, 0x64, 0x61, 0x74, 0x61, 0x66, 0x6f, + 0x72, 0x6d, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, + 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x2e, 0x44, 0x61, 0x74, + 0x61, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x18, 0x64, 0x61, 0x74, 0x61, 0x66, 0x6f, 0x72, + 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x12, 0x74, 0x0a, 0x13, 0x67, 0x63, 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, + 0x6b, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, + 0x2e, 0x47, 0x63, 0x73, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x48, 0x00, 0x52, 0x11, 0x67, 0x63, 0x73, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, + 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x7d, 0x0a, 0x16, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x5f, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x66, 0x6f, - 0x72, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x48, 0x00, 0x52, 0x18, 0x64, 0x61, 0x74, 0x61, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x74, - 0x0a, 0x13, 0x67, 0x63, 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, - 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x2e, 0x47, 0x63, - 0x73, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, - 0x00, 0x52, 0x11, 0x67, 0x63, 0x73, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x12, 0x7d, 0x0a, 0x16, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x6e, - 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x11, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4e, 0x6f, 0x74, - 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x14, 0x64, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x12, 0x8e, 0x01, 0x0a, 0x27, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, - 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x36, 0xfa, 0x41, 0x33, 0x0a, 0x31, 0x61, 0x69, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x01, 0x52, - 0x23, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x67, 0x63, 0x73, 0x5f, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0c, - 0x67, 0x63, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x55, 0x72, 0x69, 0x12, 0x27, 0x0a, 0x0e, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, - 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, - 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x11, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x12, 0x60, 0x0a, 0x16, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x61, 0x69, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x52, 0x14, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x09, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, + 0x52, 0x14, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x8e, 0x01, 0x0a, 0x27, 0x6e, 0x6f, 0x74, 0x65, 0x62, + 0x6f, 0x6f, 0x6b, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x36, 0xfa, 0x41, 0x33, 0x0a, 0x31, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, + 0x6b, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, + 0x48, 0x01, 0x52, 0x23, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x17, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x5f, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, + 0x70, 0x65, 0x63, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, 0x6a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2f, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x13, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x53, 0x0a, 0x0f, 0x65, 0x6e, 0x63, - 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x16, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x2e, 0x43, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, + 0x63, 0x48, 0x01, 0x52, 0x15, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x6e, 0x76, 0x69, 0x72, + 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0e, 0x67, 0x63, + 0x73, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x02, 0x52, 0x0c, 0x67, 0x63, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x55, + 0x72, 0x69, 0x12, 0x27, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x75, 0x73, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0d, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x0f, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x60, 0x0a, 0x16, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x03, 0xfa, + 0x41, 0x24, 0x0a, 0x22, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x14, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x09, + 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, 0x6a, 0x6f, 0x62, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, + 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x06, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x2e, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, + 0x53, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, + 0x65, 0x63, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x70, 0x65, 0x63, 0x52, 0x0e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x70, 0x65, 0x63, 0x1a, 0x84, 0x01, 0x0a, 0x18, 0x44, 0x61, 0x74, 0x61, 0x66, 0x6f, 0x72, + 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x12, 0x49, 0x0a, 0x21, 0x64, 0x61, 0x74, 0x61, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x72, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1e, 0x64, 0x61, + 0x74, 0x61, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x61, 0x1a, 0x45, 0x0a, 0x11, 0x47, + 0x63, 0x73, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x72, 0x69, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x1a, 0x30, 0x0a, 0x14, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4e, 0x6f, 0x74, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x1a, 0x91, 0x02, 0x0a, 0x15, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, + 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4a, + 0x0a, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0b, 0x6d, + 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x60, 0x0a, 0x14, 0x70, 0x65, + 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x73, 0x70, + 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, + 0x44, 0x69, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x52, 0x12, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4a, 0x0a, 0x0c, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0e, - 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x1a, 0x84, - 0x01, 0x0a, 0x18, 0x44, 0x61, 0x74, 0x61, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x21, 0x64, - 0x61, 0x74, 0x61, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1e, 0x64, 0x61, 0x74, 0x61, 0x66, 0x6f, 0x72, 0x6d, - 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x5f, 0x73, 0x68, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x53, 0x68, 0x61, 0x1a, 0x45, 0x0a, 0x11, 0x47, 0x63, 0x73, 0x4e, 0x6f, 0x74, 0x65, - 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, - 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x1e, 0x0a, 0x0a, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x30, 0x0a, 0x14, - 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0x39, - 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0xb9, 0x01, 0xea, 0x41, 0xb5, 0x01, - 0x0a, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x6f, 0x74, 0x65, - 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, - 0x12, 0x56, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, - 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x2f, - 0x7b, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6a, 0x6f, 0x62, 0x7d, 0x2a, 0x15, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, - 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x32, - 0x14, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x42, 0x11, 0x0a, 0x0f, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, - 0x6b, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x69, - 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x42, 0x10, 0x0a, 0x0e, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x42, 0x14, - 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x42, 0xd7, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x19, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, - 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0x3b, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x70, 0x62, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x56, - 0x31, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x5c, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5c, 0x56, 0x31, 0xea, 0x02, - 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, - 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0b, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x3a, 0xb9, 0x01, 0xea, 0x41, 0xb5, 0x01, 0x0a, 0x2e, 0x61, 0x69, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x56, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x6e, 0x6f, 0x74, 0x65, 0x62, + 0x6f, 0x6f, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6a, 0x6f, + 0x62, 0x7d, 0x2a, 0x15, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x32, 0x14, 0x6e, 0x6f, 0x74, 0x65, 0x62, + 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x42, + 0x11, 0x0a, 0x0f, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x42, 0x10, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x42, 0x14, 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x42, 0xd7, + 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, + 0x31, 0x42, 0x19, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x61, + 0x70, 0x69, 0x76, 0x31, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, + 0x62, 0x3b, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0xaa, 0x02, + 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x41, 0x49, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x1a, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x41, 0x49, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -700,35 +813,43 @@ func file_google_cloud_aiplatform_v1_notebook_execution_job_proto_rawDescGZIP() return file_google_cloud_aiplatform_v1_notebook_execution_job_proto_rawDescData } -var file_google_cloud_aiplatform_v1_notebook_execution_job_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_google_cloud_aiplatform_v1_notebook_execution_job_proto_msgTypes = make([]protoimpl.MessageInfo, 6) var file_google_cloud_aiplatform_v1_notebook_execution_job_proto_goTypes = []any{ (*NotebookExecutionJob)(nil), // 0: google.cloud.aiplatform.v1.NotebookExecutionJob (*NotebookExecutionJob_DataformRepositorySource)(nil), // 1: google.cloud.aiplatform.v1.NotebookExecutionJob.DataformRepositorySource (*NotebookExecutionJob_GcsNotebookSource)(nil), // 2: google.cloud.aiplatform.v1.NotebookExecutionJob.GcsNotebookSource (*NotebookExecutionJob_DirectNotebookSource)(nil), // 3: google.cloud.aiplatform.v1.NotebookExecutionJob.DirectNotebookSource - nil, // 4: google.cloud.aiplatform.v1.NotebookExecutionJob.LabelsEntry - (*durationpb.Duration)(nil), // 5: google.protobuf.Duration - (JobState)(0), // 6: google.cloud.aiplatform.v1.JobState - (*status.Status)(nil), // 7: google.rpc.Status - (*timestamppb.Timestamp)(nil), // 8: google.protobuf.Timestamp - (*EncryptionSpec)(nil), // 9: google.cloud.aiplatform.v1.EncryptionSpec + (*NotebookExecutionJob_CustomEnvironmentSpec)(nil), // 4: google.cloud.aiplatform.v1.NotebookExecutionJob.CustomEnvironmentSpec + nil, // 5: google.cloud.aiplatform.v1.NotebookExecutionJob.LabelsEntry + (*durationpb.Duration)(nil), // 6: google.protobuf.Duration + (JobState)(0), // 7: google.cloud.aiplatform.v1.JobState + (*status.Status)(nil), // 8: google.rpc.Status + (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp + (*EncryptionSpec)(nil), // 10: google.cloud.aiplatform.v1.EncryptionSpec + (*MachineSpec)(nil), // 11: google.cloud.aiplatform.v1.MachineSpec + (*PersistentDiskSpec)(nil), // 12: google.cloud.aiplatform.v1.PersistentDiskSpec + (*NetworkSpec)(nil), // 13: google.cloud.aiplatform.v1.NetworkSpec } var file_google_cloud_aiplatform_v1_notebook_execution_job_proto_depIdxs = []int32{ 1, // 0: google.cloud.aiplatform.v1.NotebookExecutionJob.dataform_repository_source:type_name -> google.cloud.aiplatform.v1.NotebookExecutionJob.DataformRepositorySource 2, // 1: google.cloud.aiplatform.v1.NotebookExecutionJob.gcs_notebook_source:type_name -> google.cloud.aiplatform.v1.NotebookExecutionJob.GcsNotebookSource 3, // 2: google.cloud.aiplatform.v1.NotebookExecutionJob.direct_notebook_source:type_name -> google.cloud.aiplatform.v1.NotebookExecutionJob.DirectNotebookSource - 5, // 3: google.cloud.aiplatform.v1.NotebookExecutionJob.execution_timeout:type_name -> google.protobuf.Duration - 6, // 4: google.cloud.aiplatform.v1.NotebookExecutionJob.job_state:type_name -> google.cloud.aiplatform.v1.JobState - 7, // 5: google.cloud.aiplatform.v1.NotebookExecutionJob.status:type_name -> google.rpc.Status - 8, // 6: google.cloud.aiplatform.v1.NotebookExecutionJob.create_time:type_name -> google.protobuf.Timestamp - 8, // 7: google.cloud.aiplatform.v1.NotebookExecutionJob.update_time:type_name -> google.protobuf.Timestamp - 4, // 8: google.cloud.aiplatform.v1.NotebookExecutionJob.labels:type_name -> google.cloud.aiplatform.v1.NotebookExecutionJob.LabelsEntry - 9, // 9: google.cloud.aiplatform.v1.NotebookExecutionJob.encryption_spec:type_name -> google.cloud.aiplatform.v1.EncryptionSpec - 10, // [10:10] is the sub-list for method output_type - 10, // [10:10] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name + 4, // 3: google.cloud.aiplatform.v1.NotebookExecutionJob.custom_environment_spec:type_name -> google.cloud.aiplatform.v1.NotebookExecutionJob.CustomEnvironmentSpec + 6, // 4: google.cloud.aiplatform.v1.NotebookExecutionJob.execution_timeout:type_name -> google.protobuf.Duration + 7, // 5: google.cloud.aiplatform.v1.NotebookExecutionJob.job_state:type_name -> google.cloud.aiplatform.v1.JobState + 8, // 6: google.cloud.aiplatform.v1.NotebookExecutionJob.status:type_name -> google.rpc.Status + 9, // 7: google.cloud.aiplatform.v1.NotebookExecutionJob.create_time:type_name -> google.protobuf.Timestamp + 9, // 8: google.cloud.aiplatform.v1.NotebookExecutionJob.update_time:type_name -> google.protobuf.Timestamp + 5, // 9: google.cloud.aiplatform.v1.NotebookExecutionJob.labels:type_name -> google.cloud.aiplatform.v1.NotebookExecutionJob.LabelsEntry + 10, // 10: google.cloud.aiplatform.v1.NotebookExecutionJob.encryption_spec:type_name -> google.cloud.aiplatform.v1.EncryptionSpec + 11, // 11: google.cloud.aiplatform.v1.NotebookExecutionJob.CustomEnvironmentSpec.machine_spec:type_name -> google.cloud.aiplatform.v1.MachineSpec + 12, // 12: google.cloud.aiplatform.v1.NotebookExecutionJob.CustomEnvironmentSpec.persistent_disk_spec:type_name -> google.cloud.aiplatform.v1.PersistentDiskSpec + 13, // 13: google.cloud.aiplatform.v1.NotebookExecutionJob.CustomEnvironmentSpec.network_spec:type_name -> google.cloud.aiplatform.v1.NetworkSpec + 14, // [14:14] is the sub-list for method output_type + 14, // [14:14] is the sub-list for method input_type + 14, // [14:14] is the sub-list for extension type_name + 14, // [14:14] is the sub-list for extension extendee + 0, // [0:14] is the sub-list for field type_name } func init() { file_google_cloud_aiplatform_v1_notebook_execution_job_proto_init() } @@ -738,6 +859,8 @@ func file_google_cloud_aiplatform_v1_notebook_execution_job_proto_init() { } file_google_cloud_aiplatform_v1_encryption_spec_proto_init() file_google_cloud_aiplatform_v1_job_state_proto_init() + file_google_cloud_aiplatform_v1_machine_resources_proto_init() + file_google_cloud_aiplatform_v1_network_spec_proto_init() if !protoimpl.UnsafeEnabled { file_google_cloud_aiplatform_v1_notebook_execution_job_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*NotebookExecutionJob); i { @@ -787,12 +910,25 @@ func file_google_cloud_aiplatform_v1_notebook_execution_job_proto_init() { return nil } } + file_google_cloud_aiplatform_v1_notebook_execution_job_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*NotebookExecutionJob_CustomEnvironmentSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_google_cloud_aiplatform_v1_notebook_execution_job_proto_msgTypes[0].OneofWrappers = []any{ (*NotebookExecutionJob_DataformRepositorySource_)(nil), (*NotebookExecutionJob_GcsNotebookSource_)(nil), (*NotebookExecutionJob_DirectNotebookSource_)(nil), (*NotebookExecutionJob_NotebookRuntimeTemplateResourceName)(nil), + (*NotebookExecutionJob_CustomEnvironmentSpec_)(nil), (*NotebookExecutionJob_GcsOutputUri)(nil), (*NotebookExecutionJob_ExecutionUser)(nil), (*NotebookExecutionJob_ServiceAccount)(nil), @@ -803,7 +939,7 @@ func file_google_cloud_aiplatform_v1_notebook_execution_job_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_aiplatform_v1_notebook_execution_job_proto_rawDesc, NumEnums: 0, - NumMessages: 5, + NumMessages: 6, NumExtensions: 0, NumServices: 0, }, diff --git a/aiplatform/apiv1/auxiliary.go b/aiplatform/apiv1/auxiliary.go index 26c9a4f8e107..1434f90658ff 100755 --- a/aiplatform/apiv1/auxiliary.go +++ b/aiplatform/apiv1/auxiliary.go @@ -4806,6 +4806,67 @@ func (op *UpdateDeploymentResourcePoolOperation) Name() string { return op.lro.Name() } +// UpdateEndpointLongRunningOperation manages a long-running operation from UpdateEndpointLongRunning. +type UpdateEndpointLongRunningOperation struct { + lro *longrunning.Operation +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *UpdateEndpointLongRunningOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*aiplatformpb.Endpoint, error) { + var resp aiplatformpb.Endpoint + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *UpdateEndpointLongRunningOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*aiplatformpb.Endpoint, error) { + var resp aiplatformpb.Endpoint + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *UpdateEndpointLongRunningOperation) Metadata() (*aiplatformpb.UpdateEndpointOperationMetadata, error) { + var meta aiplatformpb.UpdateEndpointOperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *UpdateEndpointLongRunningOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *UpdateEndpointLongRunningOperation) Name() string { + return op.lro.Name() +} + // UpdateExplanationDatasetOperation manages a long-running operation from UpdateExplanationDataset. type UpdateExplanationDatasetOperation struct { lro *longrunning.Operation diff --git a/aiplatform/apiv1/endpoint_client.go b/aiplatform/apiv1/endpoint_client.go index 373ddcce6416..23e4db9bf2ca 100755 --- a/aiplatform/apiv1/endpoint_client.go +++ b/aiplatform/apiv1/endpoint_client.go @@ -41,24 +41,25 @@ var newEndpointClientHook clientHook // EndpointCallOptions contains the retry settings for each method of EndpointClient. type EndpointCallOptions struct { - CreateEndpoint []gax.CallOption - GetEndpoint []gax.CallOption - ListEndpoints []gax.CallOption - UpdateEndpoint []gax.CallOption - DeleteEndpoint []gax.CallOption - DeployModel []gax.CallOption - UndeployModel []gax.CallOption - MutateDeployedModel []gax.CallOption - GetLocation []gax.CallOption - ListLocations []gax.CallOption - GetIamPolicy []gax.CallOption - SetIamPolicy []gax.CallOption - TestIamPermissions []gax.CallOption - CancelOperation []gax.CallOption - DeleteOperation []gax.CallOption - GetOperation []gax.CallOption - ListOperations []gax.CallOption - WaitOperation []gax.CallOption + CreateEndpoint []gax.CallOption + GetEndpoint []gax.CallOption + ListEndpoints []gax.CallOption + UpdateEndpoint []gax.CallOption + UpdateEndpointLongRunning []gax.CallOption + DeleteEndpoint []gax.CallOption + DeployModel []gax.CallOption + UndeployModel []gax.CallOption + MutateDeployedModel []gax.CallOption + GetLocation []gax.CallOption + ListLocations []gax.CallOption + GetIamPolicy []gax.CallOption + SetIamPolicy []gax.CallOption + TestIamPermissions []gax.CallOption + CancelOperation []gax.CallOption + DeleteOperation []gax.CallOption + GetOperation []gax.CallOption + ListOperations []gax.CallOption + WaitOperation []gax.CallOption } func defaultEndpointGRPCClientOptions() []option.ClientOption { @@ -78,24 +79,25 @@ func defaultEndpointGRPCClientOptions() []option.ClientOption { func defaultEndpointCallOptions() *EndpointCallOptions { return &EndpointCallOptions{ - CreateEndpoint: []gax.CallOption{}, - GetEndpoint: []gax.CallOption{}, - ListEndpoints: []gax.CallOption{}, - UpdateEndpoint: []gax.CallOption{}, - DeleteEndpoint: []gax.CallOption{}, - DeployModel: []gax.CallOption{}, - UndeployModel: []gax.CallOption{}, - MutateDeployedModel: []gax.CallOption{}, - GetLocation: []gax.CallOption{}, - ListLocations: []gax.CallOption{}, - GetIamPolicy: []gax.CallOption{}, - SetIamPolicy: []gax.CallOption{}, - TestIamPermissions: []gax.CallOption{}, - CancelOperation: []gax.CallOption{}, - DeleteOperation: []gax.CallOption{}, - GetOperation: []gax.CallOption{}, - ListOperations: []gax.CallOption{}, - WaitOperation: []gax.CallOption{}, + CreateEndpoint: []gax.CallOption{}, + GetEndpoint: []gax.CallOption{}, + ListEndpoints: []gax.CallOption{}, + UpdateEndpoint: []gax.CallOption{}, + UpdateEndpointLongRunning: []gax.CallOption{}, + DeleteEndpoint: []gax.CallOption{}, + DeployModel: []gax.CallOption{}, + UndeployModel: []gax.CallOption{}, + MutateDeployedModel: []gax.CallOption{}, + GetLocation: []gax.CallOption{}, + ListLocations: []gax.CallOption{}, + GetIamPolicy: []gax.CallOption{}, + SetIamPolicy: []gax.CallOption{}, + TestIamPermissions: []gax.CallOption{}, + CancelOperation: []gax.CallOption{}, + DeleteOperation: []gax.CallOption{}, + GetOperation: []gax.CallOption{}, + ListOperations: []gax.CallOption{}, + WaitOperation: []gax.CallOption{}, } } @@ -109,6 +111,8 @@ type internalEndpointClient interface { GetEndpoint(context.Context, *aiplatformpb.GetEndpointRequest, ...gax.CallOption) (*aiplatformpb.Endpoint, error) ListEndpoints(context.Context, *aiplatformpb.ListEndpointsRequest, ...gax.CallOption) *EndpointIterator UpdateEndpoint(context.Context, *aiplatformpb.UpdateEndpointRequest, ...gax.CallOption) (*aiplatformpb.Endpoint, error) + UpdateEndpointLongRunning(context.Context, *aiplatformpb.UpdateEndpointLongRunningRequest, ...gax.CallOption) (*UpdateEndpointLongRunningOperation, error) + UpdateEndpointLongRunningOperation(name string) *UpdateEndpointLongRunningOperation DeleteEndpoint(context.Context, *aiplatformpb.DeleteEndpointRequest, ...gax.CallOption) (*DeleteEndpointOperation, error) DeleteEndpointOperation(name string) *DeleteEndpointOperation DeployModel(context.Context, *aiplatformpb.DeployModelRequest, ...gax.CallOption) (*DeployModelOperation, error) @@ -195,6 +199,17 @@ func (c *EndpointClient) UpdateEndpoint(ctx context.Context, req *aiplatformpb.U return c.internalClient.UpdateEndpoint(ctx, req, opts...) } +// UpdateEndpointLongRunning updates an Endpoint with a long running operation. +func (c *EndpointClient) UpdateEndpointLongRunning(ctx context.Context, req *aiplatformpb.UpdateEndpointLongRunningRequest, opts ...gax.CallOption) (*UpdateEndpointLongRunningOperation, error) { + return c.internalClient.UpdateEndpointLongRunning(ctx, req, opts...) +} + +// UpdateEndpointLongRunningOperation returns a new UpdateEndpointLongRunningOperation from a given name. +// The name must be that of a previously created UpdateEndpointLongRunningOperation, possibly from a different process. +func (c *EndpointClient) UpdateEndpointLongRunningOperation(name string) *UpdateEndpointLongRunningOperation { + return c.internalClient.UpdateEndpointLongRunningOperation(name) +} + // DeleteEndpoint deletes an Endpoint. func (c *EndpointClient) DeleteEndpoint(ctx context.Context, req *aiplatformpb.DeleteEndpointRequest, opts ...gax.CallOption) (*DeleteEndpointOperation, error) { return c.internalClient.DeleteEndpoint(ctx, req, opts...) @@ -505,6 +520,26 @@ func (c *endpointGRPCClient) UpdateEndpoint(ctx context.Context, req *aiplatform return resp, nil } +func (c *endpointGRPCClient) UpdateEndpointLongRunning(ctx context.Context, req *aiplatformpb.UpdateEndpointLongRunningRequest, opts ...gax.CallOption) (*UpdateEndpointLongRunningOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "endpoint.name", url.QueryEscape(req.GetEndpoint().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).UpdateEndpointLongRunning[0:len((*c.CallOptions).UpdateEndpointLongRunning):len((*c.CallOptions).UpdateEndpointLongRunning)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.endpointClient.UpdateEndpointLongRunning(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &UpdateEndpointLongRunningOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + func (c *endpointGRPCClient) DeleteEndpoint(ctx context.Context, req *aiplatformpb.DeleteEndpointRequest, opts ...gax.CallOption) (*DeleteEndpointOperation, error) { hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} @@ -852,3 +887,11 @@ func (c *endpointGRPCClient) UndeployModelOperation(name string) *UndeployModelO lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), } } + +// UpdateEndpointLongRunningOperation returns a new UpdateEndpointLongRunningOperation from a given name. +// The name must be that of a previously created UpdateEndpointLongRunningOperation, possibly from a different process. +func (c *endpointGRPCClient) UpdateEndpointLongRunningOperation(name string) *UpdateEndpointLongRunningOperation { + return &UpdateEndpointLongRunningOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} diff --git a/aiplatform/apiv1/endpoint_client_example_test.go b/aiplatform/apiv1/endpoint_client_example_test.go index 5de79e504c7a..07cfdfb5f3b3 100644 --- a/aiplatform/apiv1/endpoint_client_example_test.go +++ b/aiplatform/apiv1/endpoint_client_example_test.go @@ -279,6 +279,36 @@ func ExampleEndpointClient_UpdateEndpoint() { _ = resp } +func ExampleEndpointClient_UpdateEndpointLongRunning() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := aiplatform.NewEndpointClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &aiplatformpb.UpdateEndpointLongRunningRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/aiplatform/apiv1/aiplatformpb#UpdateEndpointLongRunningRequest. + } + op, err := c.UpdateEndpointLongRunning(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + func ExampleEndpointClient_GetLocation() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. diff --git a/aiplatform/apiv1/gapic_metadata.json b/aiplatform/apiv1/gapic_metadata.json index 241dda6757b0..1217ea4c1f1e 100644 --- a/aiplatform/apiv1/gapic_metadata.json +++ b/aiplatform/apiv1/gapic_metadata.json @@ -338,6 +338,11 @@ "UpdateEndpoint" ] }, + "UpdateEndpointLongRunning": { + "methods": [ + "UpdateEndpointLongRunning" + ] + }, "WaitOperation": { "methods": [ "WaitOperation" diff --git a/aiplatform/apiv1beta1/aiplatformpb/evaluation_service.pb.go b/aiplatform/apiv1beta1/aiplatformpb/evaluation_service.pb.go index 40d610e83f46..7551a1d8e4cc 100755 --- a/aiplatform/apiv1beta1/aiplatformpb/evaluation_service.pb.go +++ b/aiplatform/apiv1beta1/aiplatformpb/evaluation_service.pb.go @@ -130,6 +130,12 @@ type EvaluateInstancesRequest struct { // *EvaluateInstancesRequest_ToolNameMatchInput // *EvaluateInstancesRequest_ToolParameterKeyMatchInput // *EvaluateInstancesRequest_ToolParameterKvMatchInput + // *EvaluateInstancesRequest_TrajectoryExactMatchInput + // *EvaluateInstancesRequest_TrajectoryInOrderMatchInput + // *EvaluateInstancesRequest_TrajectoryAnyOrderMatchInput + // *EvaluateInstancesRequest_TrajectoryPrecisionInput + // *EvaluateInstancesRequest_TrajectoryRecallInput + // *EvaluateInstancesRequest_TrajectorySingleToolUseInput MetricInputs isEvaluateInstancesRequest_MetricInputs `protobuf_oneof:"metric_inputs"` // Required. The resource name of the Location to evaluate the instances. // Format: `projects/{project}/locations/{location}` @@ -336,6 +342,48 @@ func (x *EvaluateInstancesRequest) GetToolParameterKvMatchInput() *ToolParameter return nil } +func (x *EvaluateInstancesRequest) GetTrajectoryExactMatchInput() *TrajectoryExactMatchInput { + if x, ok := x.GetMetricInputs().(*EvaluateInstancesRequest_TrajectoryExactMatchInput); ok { + return x.TrajectoryExactMatchInput + } + return nil +} + +func (x *EvaluateInstancesRequest) GetTrajectoryInOrderMatchInput() *TrajectoryInOrderMatchInput { + if x, ok := x.GetMetricInputs().(*EvaluateInstancesRequest_TrajectoryInOrderMatchInput); ok { + return x.TrajectoryInOrderMatchInput + } + return nil +} + +func (x *EvaluateInstancesRequest) GetTrajectoryAnyOrderMatchInput() *TrajectoryAnyOrderMatchInput { + if x, ok := x.GetMetricInputs().(*EvaluateInstancesRequest_TrajectoryAnyOrderMatchInput); ok { + return x.TrajectoryAnyOrderMatchInput + } + return nil +} + +func (x *EvaluateInstancesRequest) GetTrajectoryPrecisionInput() *TrajectoryPrecisionInput { + if x, ok := x.GetMetricInputs().(*EvaluateInstancesRequest_TrajectoryPrecisionInput); ok { + return x.TrajectoryPrecisionInput + } + return nil +} + +func (x *EvaluateInstancesRequest) GetTrajectoryRecallInput() *TrajectoryRecallInput { + if x, ok := x.GetMetricInputs().(*EvaluateInstancesRequest_TrajectoryRecallInput); ok { + return x.TrajectoryRecallInput + } + return nil +} + +func (x *EvaluateInstancesRequest) GetTrajectorySingleToolUseInput() *TrajectorySingleToolUseInput { + if x, ok := x.GetMetricInputs().(*EvaluateInstancesRequest_TrajectorySingleToolUseInput); ok { + return x.TrajectorySingleToolUseInput + } + return nil +} + func (x *EvaluateInstancesRequest) GetLocation() string { if x != nil { return x.Location @@ -468,6 +516,36 @@ type EvaluateInstancesRequest_ToolParameterKvMatchInput struct { ToolParameterKvMatchInput *ToolParameterKVMatchInput `protobuf:"bytes,22,opt,name=tool_parameter_kv_match_input,json=toolParameterKvMatchInput,proto3,oneof"` } +type EvaluateInstancesRequest_TrajectoryExactMatchInput struct { + // Input for trajectory exact match metric. + TrajectoryExactMatchInput *TrajectoryExactMatchInput `protobuf:"bytes,33,opt,name=trajectory_exact_match_input,json=trajectoryExactMatchInput,proto3,oneof"` +} + +type EvaluateInstancesRequest_TrajectoryInOrderMatchInput struct { + // Input for trajectory in order match metric. + TrajectoryInOrderMatchInput *TrajectoryInOrderMatchInput `protobuf:"bytes,34,opt,name=trajectory_in_order_match_input,json=trajectoryInOrderMatchInput,proto3,oneof"` +} + +type EvaluateInstancesRequest_TrajectoryAnyOrderMatchInput struct { + // Input for trajectory match any order metric. + TrajectoryAnyOrderMatchInput *TrajectoryAnyOrderMatchInput `protobuf:"bytes,35,opt,name=trajectory_any_order_match_input,json=trajectoryAnyOrderMatchInput,proto3,oneof"` +} + +type EvaluateInstancesRequest_TrajectoryPrecisionInput struct { + // Input for trajectory precision metric. + TrajectoryPrecisionInput *TrajectoryPrecisionInput `protobuf:"bytes,37,opt,name=trajectory_precision_input,json=trajectoryPrecisionInput,proto3,oneof"` +} + +type EvaluateInstancesRequest_TrajectoryRecallInput struct { + // Input for trajectory recall metric. + TrajectoryRecallInput *TrajectoryRecallInput `protobuf:"bytes,38,opt,name=trajectory_recall_input,json=trajectoryRecallInput,proto3,oneof"` +} + +type EvaluateInstancesRequest_TrajectorySingleToolUseInput struct { + // Input for trajectory single tool use metric. + TrajectorySingleToolUseInput *TrajectorySingleToolUseInput `protobuf:"bytes,39,opt,name=trajectory_single_tool_use_input,json=trajectorySingleToolUseInput,proto3,oneof"` +} + func (*EvaluateInstancesRequest_ExactMatchInput) isEvaluateInstancesRequest_MetricInputs() {} func (*EvaluateInstancesRequest_BleuInput) isEvaluateInstancesRequest_MetricInputs() {} @@ -525,6 +603,22 @@ func (*EvaluateInstancesRequest_ToolParameterKeyMatchInput) isEvaluateInstancesR func (*EvaluateInstancesRequest_ToolParameterKvMatchInput) isEvaluateInstancesRequest_MetricInputs() { } +func (*EvaluateInstancesRequest_TrajectoryExactMatchInput) isEvaluateInstancesRequest_MetricInputs() { +} + +func (*EvaluateInstancesRequest_TrajectoryInOrderMatchInput) isEvaluateInstancesRequest_MetricInputs() { +} + +func (*EvaluateInstancesRequest_TrajectoryAnyOrderMatchInput) isEvaluateInstancesRequest_MetricInputs() { +} + +func (*EvaluateInstancesRequest_TrajectoryPrecisionInput) isEvaluateInstancesRequest_MetricInputs() {} + +func (*EvaluateInstancesRequest_TrajectoryRecallInput) isEvaluateInstancesRequest_MetricInputs() {} + +func (*EvaluateInstancesRequest_TrajectorySingleToolUseInput) isEvaluateInstancesRequest_MetricInputs() { +} + // Response message for EvaluationService.EvaluateInstances. type EvaluateInstancesResponse struct { state protoimpl.MessageState @@ -559,6 +653,12 @@ type EvaluateInstancesResponse struct { // *EvaluateInstancesResponse_ToolNameMatchResults // *EvaluateInstancesResponse_ToolParameterKeyMatchResults // *EvaluateInstancesResponse_ToolParameterKvMatchResults + // *EvaluateInstancesResponse_TrajectoryExactMatchResults + // *EvaluateInstancesResponse_TrajectoryInOrderMatchResults + // *EvaluateInstancesResponse_TrajectoryAnyOrderMatchResults + // *EvaluateInstancesResponse_TrajectoryPrecisionResults + // *EvaluateInstancesResponse_TrajectoryRecallResults + // *EvaluateInstancesResponse_TrajectorySingleToolUseResults EvaluationResults isEvaluateInstancesResponse_EvaluationResults `protobuf_oneof:"evaluation_results"` } @@ -762,6 +862,48 @@ func (x *EvaluateInstancesResponse) GetToolParameterKvMatchResults() *ToolParame return nil } +func (x *EvaluateInstancesResponse) GetTrajectoryExactMatchResults() *TrajectoryExactMatchResults { + if x, ok := x.GetEvaluationResults().(*EvaluateInstancesResponse_TrajectoryExactMatchResults); ok { + return x.TrajectoryExactMatchResults + } + return nil +} + +func (x *EvaluateInstancesResponse) GetTrajectoryInOrderMatchResults() *TrajectoryInOrderMatchResults { + if x, ok := x.GetEvaluationResults().(*EvaluateInstancesResponse_TrajectoryInOrderMatchResults); ok { + return x.TrajectoryInOrderMatchResults + } + return nil +} + +func (x *EvaluateInstancesResponse) GetTrajectoryAnyOrderMatchResults() *TrajectoryAnyOrderMatchResults { + if x, ok := x.GetEvaluationResults().(*EvaluateInstancesResponse_TrajectoryAnyOrderMatchResults); ok { + return x.TrajectoryAnyOrderMatchResults + } + return nil +} + +func (x *EvaluateInstancesResponse) GetTrajectoryPrecisionResults() *TrajectoryPrecisionResults { + if x, ok := x.GetEvaluationResults().(*EvaluateInstancesResponse_TrajectoryPrecisionResults); ok { + return x.TrajectoryPrecisionResults + } + return nil +} + +func (x *EvaluateInstancesResponse) GetTrajectoryRecallResults() *TrajectoryRecallResults { + if x, ok := x.GetEvaluationResults().(*EvaluateInstancesResponse_TrajectoryRecallResults); ok { + return x.TrajectoryRecallResults + } + return nil +} + +func (x *EvaluateInstancesResponse) GetTrajectorySingleToolUseResults() *TrajectorySingleToolUseResults { + if x, ok := x.GetEvaluationResults().(*EvaluateInstancesResponse_TrajectorySingleToolUseResults); ok { + return x.TrajectorySingleToolUseResults + } + return nil +} + type isEvaluateInstancesResponse_EvaluationResults interface { isEvaluateInstancesResponse_EvaluationResults() } @@ -889,6 +1031,36 @@ type EvaluateInstancesResponse_ToolParameterKvMatchResults struct { ToolParameterKvMatchResults *ToolParameterKVMatchResults `protobuf:"bytes,21,opt,name=tool_parameter_kv_match_results,json=toolParameterKvMatchResults,proto3,oneof"` } +type EvaluateInstancesResponse_TrajectoryExactMatchResults struct { + // Result for trajectory exact match metric. + TrajectoryExactMatchResults *TrajectoryExactMatchResults `protobuf:"bytes,31,opt,name=trajectory_exact_match_results,json=trajectoryExactMatchResults,proto3,oneof"` +} + +type EvaluateInstancesResponse_TrajectoryInOrderMatchResults struct { + // Result for trajectory in order match metric. + TrajectoryInOrderMatchResults *TrajectoryInOrderMatchResults `protobuf:"bytes,32,opt,name=trajectory_in_order_match_results,json=trajectoryInOrderMatchResults,proto3,oneof"` +} + +type EvaluateInstancesResponse_TrajectoryAnyOrderMatchResults struct { + // Result for trajectory any order match metric. + TrajectoryAnyOrderMatchResults *TrajectoryAnyOrderMatchResults `protobuf:"bytes,33,opt,name=trajectory_any_order_match_results,json=trajectoryAnyOrderMatchResults,proto3,oneof"` +} + +type EvaluateInstancesResponse_TrajectoryPrecisionResults struct { + // Result for trajectory precision metric. + TrajectoryPrecisionResults *TrajectoryPrecisionResults `protobuf:"bytes,35,opt,name=trajectory_precision_results,json=trajectoryPrecisionResults,proto3,oneof"` +} + +type EvaluateInstancesResponse_TrajectoryRecallResults struct { + // Results for trajectory recall metric. + TrajectoryRecallResults *TrajectoryRecallResults `protobuf:"bytes,36,opt,name=trajectory_recall_results,json=trajectoryRecallResults,proto3,oneof"` +} + +type EvaluateInstancesResponse_TrajectorySingleToolUseResults struct { + // Results for trajectory single tool use metric. + TrajectorySingleToolUseResults *TrajectorySingleToolUseResults `protobuf:"bytes,37,opt,name=trajectory_single_tool_use_results,json=trajectorySingleToolUseResults,proto3,oneof"` +} + func (*EvaluateInstancesResponse_ExactMatchResults) isEvaluateInstancesResponse_EvaluationResults() {} func (*EvaluateInstancesResponse_BleuResults) isEvaluateInstancesResponse_EvaluationResults() {} @@ -951,6 +1123,24 @@ func (*EvaluateInstancesResponse_ToolParameterKeyMatchResults) isEvaluateInstanc func (*EvaluateInstancesResponse_ToolParameterKvMatchResults) isEvaluateInstancesResponse_EvaluationResults() { } +func (*EvaluateInstancesResponse_TrajectoryExactMatchResults) isEvaluateInstancesResponse_EvaluationResults() { +} + +func (*EvaluateInstancesResponse_TrajectoryInOrderMatchResults) isEvaluateInstancesResponse_EvaluationResults() { +} + +func (*EvaluateInstancesResponse_TrajectoryAnyOrderMatchResults) isEvaluateInstancesResponse_EvaluationResults() { +} + +func (*EvaluateInstancesResponse_TrajectoryPrecisionResults) isEvaluateInstancesResponse_EvaluationResults() { +} + +func (*EvaluateInstancesResponse_TrajectoryRecallResults) isEvaluateInstancesResponse_EvaluationResults() { +} + +func (*EvaluateInstancesResponse_TrajectorySingleToolUseResults) isEvaluateInstancesResponse_EvaluationResults() { +} + // Input for exact match metric. type ExactMatchInput struct { state protoimpl.MessageState @@ -6544,7 +6734,7 @@ type ToolParameterKVMatchSpec struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Optional. Whether to use STRCIT string match on parameter values. + // Optional. Whether to use STRICT string match on parameter values. UseStrictStringMatch bool `protobuf:"varint,1,opt,name=use_strict_string_match,json=useStrictStringMatch,proto3" json:"use_strict_string_match,omitempty"` } @@ -6743,168 +6933,1802 @@ func (x *ToolParameterKVMatchMetricValue) GetScore() float32 { return 0 } -var File_google_cloud_aiplatform_v1beta1_evaluation_service_proto protoreflect.FileDescriptor +// Instances and metric spec for TrajectoryExactMatch metric. +type TrajectoryExactMatchInput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -var file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDesc = []byte{ - 0x0a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, - 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2f, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, - 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x87, - 0x16, 0x0a, 0x18, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x11, 0x65, - 0x78, 0x61, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x65, 0x78, 0x61, 0x63, - 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4b, 0x0a, 0x0a, 0x62, - 0x6c, 0x65, 0x75, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, - 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x42, 0x6c, 0x65, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x09, 0x62, - 0x6c, 0x65, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4e, 0x0a, 0x0b, 0x72, 0x6f, 0x75, 0x67, - 0x65, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x52, 0x6f, 0x75, 0x67, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x6f, - 0x75, 0x67, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x54, 0x0a, 0x0d, 0x66, 0x6c, 0x75, 0x65, - 0x6e, 0x63, 0x79, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, - 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x46, 0x6c, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, - 0x52, 0x0c, 0x66, 0x6c, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x5a, - 0x0a, 0x0f, 0x63, 0x6f, 0x68, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x68, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x68, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x51, 0x0a, 0x0c, 0x73, 0x61, - 0x66, 0x65, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, - 0x52, 0x0b, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x63, 0x0a, - 0x12, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, - 0x6e, 0x64, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, - 0x11, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x12, 0x60, 0x0a, 0x11, 0x66, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, - 0x74, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, - 0x48, 0x00, 0x52, 0x10, 0x66, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x49, - 0x6e, 0x70, 0x75, 0x74, 0x12, 0x7c, 0x0a, 0x1b, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, - 0x70, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x19, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x12, 0x95, 0x01, 0x0a, 0x24, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x5f, - 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x71, 0x75, - 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x21, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, - 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, - 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x88, 0x01, 0x0a, 0x1f, 0x73, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x6c, - 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x49, - 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x1d, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x82, 0x01, 0x0a, 0x1d, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x69, 0x74, - 0x79, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, - 0x62, 0x6f, 0x73, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x1b, 0x73, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x62, - 0x6f, 0x73, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x89, 0x01, 0x0a, 0x20, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, - 0x67, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, - 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x1d, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, - 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, - 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0xa2, 0x01, 0x0a, 0x29, 0x70, 0x61, 0x69, 0x72, 0x77, - 0x69, 0x73, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x73, - 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, - 0x6e, 0x70, 0x75, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x69, - 0x72, 0x77, 0x69, 0x73, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, - 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x48, 0x00, 0x52, 0x25, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x51, 0x75, - 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, - 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x8f, 0x01, 0x0a, 0x22, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, - 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, - 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6c, 0x65, - 0x76, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x1f, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, - 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x95, 0x01, - 0x0a, 0x24, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, - 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, - 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, - 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, - 0x48, 0x00, 0x52, 0x21, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x95, 0x01, 0x0a, 0x24, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x72, - 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x12, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, - 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6e, - 0x65, 0x73, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x21, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x72, - 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x6d, 0x0a, - 0x16, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, 0x73, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, - 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x14, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, 0x73, - 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x6a, 0x0a, 0x15, - 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, - 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x6e, 0x70, 0x75, - 0x74, 0x48, 0x00, 0x52, 0x13, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x68, 0x0a, 0x15, 0x74, 0x6f, 0x6f, 0x6c, - 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x43, 0x61, + // Required. Spec for TrajectoryExactMatch metric. + MetricSpec *TrajectoryExactMatchSpec `protobuf:"bytes,1,opt,name=metric_spec,json=metricSpec,proto3" json:"metric_spec,omitempty"` + // Required. Repeated TrajectoryExactMatch instance. + Instances []*TrajectoryExactMatchInstance `protobuf:"bytes,2,rep,name=instances,proto3" json:"instances,omitempty"` +} + +func (x *TrajectoryExactMatchInput) Reset() { + *x = TrajectoryExactMatchInput{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[101] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryExactMatchInput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryExactMatchInput) ProtoMessage() {} + +func (x *TrajectoryExactMatchInput) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[101] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryExactMatchInput.ProtoReflect.Descriptor instead. +func (*TrajectoryExactMatchInput) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{101} +} + +func (x *TrajectoryExactMatchInput) GetMetricSpec() *TrajectoryExactMatchSpec { + if x != nil { + return x.MetricSpec + } + return nil +} + +func (x *TrajectoryExactMatchInput) GetInstances() []*TrajectoryExactMatchInstance { + if x != nil { + return x.Instances + } + return nil +} + +// Spec for TrajectoryExactMatch metric - returns 1 if tool calls in the +// reference trajectory exactly match the predicted trajectory, else 0. +type TrajectoryExactMatchSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *TrajectoryExactMatchSpec) Reset() { + *x = TrajectoryExactMatchSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[102] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryExactMatchSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryExactMatchSpec) ProtoMessage() {} + +func (x *TrajectoryExactMatchSpec) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[102] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryExactMatchSpec.ProtoReflect.Descriptor instead. +func (*TrajectoryExactMatchSpec) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{102} +} + +// Spec for TrajectoryExactMatch instance. +type TrajectoryExactMatchInstance struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Spec for predicted tool call trajectory. + PredictedTrajectory *Trajectory `protobuf:"bytes,1,opt,name=predicted_trajectory,json=predictedTrajectory,proto3,oneof" json:"predicted_trajectory,omitempty"` + // Required. Spec for reference tool call trajectory. + ReferenceTrajectory *Trajectory `protobuf:"bytes,2,opt,name=reference_trajectory,json=referenceTrajectory,proto3,oneof" json:"reference_trajectory,omitempty"` +} + +func (x *TrajectoryExactMatchInstance) Reset() { + *x = TrajectoryExactMatchInstance{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[103] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryExactMatchInstance) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryExactMatchInstance) ProtoMessage() {} + +func (x *TrajectoryExactMatchInstance) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[103] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryExactMatchInstance.ProtoReflect.Descriptor instead. +func (*TrajectoryExactMatchInstance) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{103} +} + +func (x *TrajectoryExactMatchInstance) GetPredictedTrajectory() *Trajectory { + if x != nil { + return x.PredictedTrajectory + } + return nil +} + +func (x *TrajectoryExactMatchInstance) GetReferenceTrajectory() *Trajectory { + if x != nil { + return x.ReferenceTrajectory + } + return nil +} + +// Results for TrajectoryExactMatch metric. +type TrajectoryExactMatchResults struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. TrajectoryExactMatch metric values. + TrajectoryExactMatchMetricValues []*TrajectoryExactMatchMetricValue `protobuf:"bytes,1,rep,name=trajectory_exact_match_metric_values,json=trajectoryExactMatchMetricValues,proto3" json:"trajectory_exact_match_metric_values,omitempty"` +} + +func (x *TrajectoryExactMatchResults) Reset() { + *x = TrajectoryExactMatchResults{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[104] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryExactMatchResults) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryExactMatchResults) ProtoMessage() {} + +func (x *TrajectoryExactMatchResults) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[104] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryExactMatchResults.ProtoReflect.Descriptor instead. +func (*TrajectoryExactMatchResults) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{104} +} + +func (x *TrajectoryExactMatchResults) GetTrajectoryExactMatchMetricValues() []*TrajectoryExactMatchMetricValue { + if x != nil { + return x.TrajectoryExactMatchMetricValues + } + return nil +} + +// TrajectoryExactMatch metric value for an instance. +type TrajectoryExactMatchMetricValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. TrajectoryExactMatch score. + Score *float32 `protobuf:"fixed32,1,opt,name=score,proto3,oneof" json:"score,omitempty"` +} + +func (x *TrajectoryExactMatchMetricValue) Reset() { + *x = TrajectoryExactMatchMetricValue{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[105] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryExactMatchMetricValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryExactMatchMetricValue) ProtoMessage() {} + +func (x *TrajectoryExactMatchMetricValue) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[105] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryExactMatchMetricValue.ProtoReflect.Descriptor instead. +func (*TrajectoryExactMatchMetricValue) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{105} +} + +func (x *TrajectoryExactMatchMetricValue) GetScore() float32 { + if x != nil && x.Score != nil { + return *x.Score + } + return 0 +} + +// Instances and metric spec for TrajectoryInOrderMatch metric. +type TrajectoryInOrderMatchInput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Spec for TrajectoryInOrderMatch metric. + MetricSpec *TrajectoryInOrderMatchSpec `protobuf:"bytes,1,opt,name=metric_spec,json=metricSpec,proto3" json:"metric_spec,omitempty"` + // Required. Repeated TrajectoryInOrderMatch instance. + Instances []*TrajectoryInOrderMatchInstance `protobuf:"bytes,2,rep,name=instances,proto3" json:"instances,omitempty"` +} + +func (x *TrajectoryInOrderMatchInput) Reset() { + *x = TrajectoryInOrderMatchInput{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[106] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryInOrderMatchInput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryInOrderMatchInput) ProtoMessage() {} + +func (x *TrajectoryInOrderMatchInput) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[106] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryInOrderMatchInput.ProtoReflect.Descriptor instead. +func (*TrajectoryInOrderMatchInput) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{106} +} + +func (x *TrajectoryInOrderMatchInput) GetMetricSpec() *TrajectoryInOrderMatchSpec { + if x != nil { + return x.MetricSpec + } + return nil +} + +func (x *TrajectoryInOrderMatchInput) GetInstances() []*TrajectoryInOrderMatchInstance { + if x != nil { + return x.Instances + } + return nil +} + +// Spec for TrajectoryInOrderMatch metric - returns 1 if tool calls in the +// reference trajectory appear in the predicted trajectory in the same order, +// else 0. +type TrajectoryInOrderMatchSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *TrajectoryInOrderMatchSpec) Reset() { + *x = TrajectoryInOrderMatchSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[107] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryInOrderMatchSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryInOrderMatchSpec) ProtoMessage() {} + +func (x *TrajectoryInOrderMatchSpec) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[107] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryInOrderMatchSpec.ProtoReflect.Descriptor instead. +func (*TrajectoryInOrderMatchSpec) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{107} +} + +// Spec for TrajectoryInOrderMatch instance. +type TrajectoryInOrderMatchInstance struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Spec for predicted tool call trajectory. + PredictedTrajectory *Trajectory `protobuf:"bytes,1,opt,name=predicted_trajectory,json=predictedTrajectory,proto3,oneof" json:"predicted_trajectory,omitempty"` + // Required. Spec for reference tool call trajectory. + ReferenceTrajectory *Trajectory `protobuf:"bytes,2,opt,name=reference_trajectory,json=referenceTrajectory,proto3,oneof" json:"reference_trajectory,omitempty"` +} + +func (x *TrajectoryInOrderMatchInstance) Reset() { + *x = TrajectoryInOrderMatchInstance{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[108] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryInOrderMatchInstance) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryInOrderMatchInstance) ProtoMessage() {} + +func (x *TrajectoryInOrderMatchInstance) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[108] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryInOrderMatchInstance.ProtoReflect.Descriptor instead. +func (*TrajectoryInOrderMatchInstance) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{108} +} + +func (x *TrajectoryInOrderMatchInstance) GetPredictedTrajectory() *Trajectory { + if x != nil { + return x.PredictedTrajectory + } + return nil +} + +func (x *TrajectoryInOrderMatchInstance) GetReferenceTrajectory() *Trajectory { + if x != nil { + return x.ReferenceTrajectory + } + return nil +} + +// Results for TrajectoryInOrderMatch metric. +type TrajectoryInOrderMatchResults struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. TrajectoryInOrderMatch metric values. + TrajectoryInOrderMatchMetricValues []*TrajectoryInOrderMatchMetricValue `protobuf:"bytes,1,rep,name=trajectory_in_order_match_metric_values,json=trajectoryInOrderMatchMetricValues,proto3" json:"trajectory_in_order_match_metric_values,omitempty"` +} + +func (x *TrajectoryInOrderMatchResults) Reset() { + *x = TrajectoryInOrderMatchResults{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[109] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryInOrderMatchResults) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryInOrderMatchResults) ProtoMessage() {} + +func (x *TrajectoryInOrderMatchResults) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[109] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryInOrderMatchResults.ProtoReflect.Descriptor instead. +func (*TrajectoryInOrderMatchResults) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{109} +} + +func (x *TrajectoryInOrderMatchResults) GetTrajectoryInOrderMatchMetricValues() []*TrajectoryInOrderMatchMetricValue { + if x != nil { + return x.TrajectoryInOrderMatchMetricValues + } + return nil +} + +// TrajectoryInOrderMatch metric value for an instance. +type TrajectoryInOrderMatchMetricValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. TrajectoryInOrderMatch score. + Score *float32 `protobuf:"fixed32,1,opt,name=score,proto3,oneof" json:"score,omitempty"` +} + +func (x *TrajectoryInOrderMatchMetricValue) Reset() { + *x = TrajectoryInOrderMatchMetricValue{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[110] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryInOrderMatchMetricValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryInOrderMatchMetricValue) ProtoMessage() {} + +func (x *TrajectoryInOrderMatchMetricValue) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[110] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryInOrderMatchMetricValue.ProtoReflect.Descriptor instead. +func (*TrajectoryInOrderMatchMetricValue) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{110} +} + +func (x *TrajectoryInOrderMatchMetricValue) GetScore() float32 { + if x != nil && x.Score != nil { + return *x.Score + } + return 0 +} + +// Instances and metric spec for TrajectoryAnyOrderMatch metric. +type TrajectoryAnyOrderMatchInput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Spec for TrajectoryAnyOrderMatch metric. + MetricSpec *TrajectoryAnyOrderMatchSpec `protobuf:"bytes,1,opt,name=metric_spec,json=metricSpec,proto3" json:"metric_spec,omitempty"` + // Required. Repeated TrajectoryAnyOrderMatch instance. + Instances []*TrajectoryAnyOrderMatchInstance `protobuf:"bytes,2,rep,name=instances,proto3" json:"instances,omitempty"` +} + +func (x *TrajectoryAnyOrderMatchInput) Reset() { + *x = TrajectoryAnyOrderMatchInput{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[111] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryAnyOrderMatchInput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryAnyOrderMatchInput) ProtoMessage() {} + +func (x *TrajectoryAnyOrderMatchInput) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[111] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryAnyOrderMatchInput.ProtoReflect.Descriptor instead. +func (*TrajectoryAnyOrderMatchInput) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{111} +} + +func (x *TrajectoryAnyOrderMatchInput) GetMetricSpec() *TrajectoryAnyOrderMatchSpec { + if x != nil { + return x.MetricSpec + } + return nil +} + +func (x *TrajectoryAnyOrderMatchInput) GetInstances() []*TrajectoryAnyOrderMatchInstance { + if x != nil { + return x.Instances + } + return nil +} + +// Spec for TrajectoryAnyOrderMatch metric - returns 1 if all tool calls in the +// reference trajectory appear in the predicted trajectory in any order, else +// 0. +type TrajectoryAnyOrderMatchSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *TrajectoryAnyOrderMatchSpec) Reset() { + *x = TrajectoryAnyOrderMatchSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[112] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryAnyOrderMatchSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryAnyOrderMatchSpec) ProtoMessage() {} + +func (x *TrajectoryAnyOrderMatchSpec) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[112] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryAnyOrderMatchSpec.ProtoReflect.Descriptor instead. +func (*TrajectoryAnyOrderMatchSpec) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{112} +} + +// Spec for TrajectoryAnyOrderMatch instance. +type TrajectoryAnyOrderMatchInstance struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Spec for predicted tool call trajectory. + PredictedTrajectory *Trajectory `protobuf:"bytes,1,opt,name=predicted_trajectory,json=predictedTrajectory,proto3,oneof" json:"predicted_trajectory,omitempty"` + // Required. Spec for reference tool call trajectory. + ReferenceTrajectory *Trajectory `protobuf:"bytes,2,opt,name=reference_trajectory,json=referenceTrajectory,proto3,oneof" json:"reference_trajectory,omitempty"` +} + +func (x *TrajectoryAnyOrderMatchInstance) Reset() { + *x = TrajectoryAnyOrderMatchInstance{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[113] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryAnyOrderMatchInstance) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryAnyOrderMatchInstance) ProtoMessage() {} + +func (x *TrajectoryAnyOrderMatchInstance) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[113] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryAnyOrderMatchInstance.ProtoReflect.Descriptor instead. +func (*TrajectoryAnyOrderMatchInstance) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{113} +} + +func (x *TrajectoryAnyOrderMatchInstance) GetPredictedTrajectory() *Trajectory { + if x != nil { + return x.PredictedTrajectory + } + return nil +} + +func (x *TrajectoryAnyOrderMatchInstance) GetReferenceTrajectory() *Trajectory { + if x != nil { + return x.ReferenceTrajectory + } + return nil +} + +// Results for TrajectoryAnyOrderMatch metric. +type TrajectoryAnyOrderMatchResults struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. TrajectoryAnyOrderMatch metric values. + TrajectoryAnyOrderMatchMetricValues []*TrajectoryAnyOrderMatchMetricValue `protobuf:"bytes,1,rep,name=trajectory_any_order_match_metric_values,json=trajectoryAnyOrderMatchMetricValues,proto3" json:"trajectory_any_order_match_metric_values,omitempty"` +} + +func (x *TrajectoryAnyOrderMatchResults) Reset() { + *x = TrajectoryAnyOrderMatchResults{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[114] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryAnyOrderMatchResults) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryAnyOrderMatchResults) ProtoMessage() {} + +func (x *TrajectoryAnyOrderMatchResults) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[114] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryAnyOrderMatchResults.ProtoReflect.Descriptor instead. +func (*TrajectoryAnyOrderMatchResults) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{114} +} + +func (x *TrajectoryAnyOrderMatchResults) GetTrajectoryAnyOrderMatchMetricValues() []*TrajectoryAnyOrderMatchMetricValue { + if x != nil { + return x.TrajectoryAnyOrderMatchMetricValues + } + return nil +} + +// TrajectoryAnyOrderMatch metric value for an instance. +type TrajectoryAnyOrderMatchMetricValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. TrajectoryAnyOrderMatch score. + Score *float32 `protobuf:"fixed32,1,opt,name=score,proto3,oneof" json:"score,omitempty"` +} + +func (x *TrajectoryAnyOrderMatchMetricValue) Reset() { + *x = TrajectoryAnyOrderMatchMetricValue{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[115] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryAnyOrderMatchMetricValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryAnyOrderMatchMetricValue) ProtoMessage() {} + +func (x *TrajectoryAnyOrderMatchMetricValue) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[115] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryAnyOrderMatchMetricValue.ProtoReflect.Descriptor instead. +func (*TrajectoryAnyOrderMatchMetricValue) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{115} +} + +func (x *TrajectoryAnyOrderMatchMetricValue) GetScore() float32 { + if x != nil && x.Score != nil { + return *x.Score + } + return 0 +} + +// Instances and metric spec for TrajectoryPrecision metric. +type TrajectoryPrecisionInput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Spec for TrajectoryPrecision metric. + MetricSpec *TrajectoryPrecisionSpec `protobuf:"bytes,1,opt,name=metric_spec,json=metricSpec,proto3" json:"metric_spec,omitempty"` + // Required. Repeated TrajectoryPrecision instance. + Instances []*TrajectoryPrecisionInstance `protobuf:"bytes,2,rep,name=instances,proto3" json:"instances,omitempty"` +} + +func (x *TrajectoryPrecisionInput) Reset() { + *x = TrajectoryPrecisionInput{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[116] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryPrecisionInput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryPrecisionInput) ProtoMessage() {} + +func (x *TrajectoryPrecisionInput) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[116] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryPrecisionInput.ProtoReflect.Descriptor instead. +func (*TrajectoryPrecisionInput) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{116} +} + +func (x *TrajectoryPrecisionInput) GetMetricSpec() *TrajectoryPrecisionSpec { + if x != nil { + return x.MetricSpec + } + return nil +} + +func (x *TrajectoryPrecisionInput) GetInstances() []*TrajectoryPrecisionInstance { + if x != nil { + return x.Instances + } + return nil +} + +// Spec for TrajectoryPrecision metric - returns a float score based on average +// precision of individual tool calls. +type TrajectoryPrecisionSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *TrajectoryPrecisionSpec) Reset() { + *x = TrajectoryPrecisionSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[117] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryPrecisionSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryPrecisionSpec) ProtoMessage() {} + +func (x *TrajectoryPrecisionSpec) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[117] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryPrecisionSpec.ProtoReflect.Descriptor instead. +func (*TrajectoryPrecisionSpec) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{117} +} + +// Spec for TrajectoryPrecision instance. +type TrajectoryPrecisionInstance struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Spec for predicted tool call trajectory. + PredictedTrajectory *Trajectory `protobuf:"bytes,1,opt,name=predicted_trajectory,json=predictedTrajectory,proto3,oneof" json:"predicted_trajectory,omitempty"` + // Required. Spec for reference tool call trajectory. + ReferenceTrajectory *Trajectory `protobuf:"bytes,2,opt,name=reference_trajectory,json=referenceTrajectory,proto3,oneof" json:"reference_trajectory,omitempty"` +} + +func (x *TrajectoryPrecisionInstance) Reset() { + *x = TrajectoryPrecisionInstance{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[118] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryPrecisionInstance) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryPrecisionInstance) ProtoMessage() {} + +func (x *TrajectoryPrecisionInstance) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[118] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryPrecisionInstance.ProtoReflect.Descriptor instead. +func (*TrajectoryPrecisionInstance) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{118} +} + +func (x *TrajectoryPrecisionInstance) GetPredictedTrajectory() *Trajectory { + if x != nil { + return x.PredictedTrajectory + } + return nil +} + +func (x *TrajectoryPrecisionInstance) GetReferenceTrajectory() *Trajectory { + if x != nil { + return x.ReferenceTrajectory + } + return nil +} + +// Results for TrajectoryPrecision metric. +type TrajectoryPrecisionResults struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. TrajectoryPrecision metric values. + TrajectoryPrecisionMetricValues []*TrajectoryPrecisionMetricValue `protobuf:"bytes,1,rep,name=trajectory_precision_metric_values,json=trajectoryPrecisionMetricValues,proto3" json:"trajectory_precision_metric_values,omitempty"` +} + +func (x *TrajectoryPrecisionResults) Reset() { + *x = TrajectoryPrecisionResults{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[119] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryPrecisionResults) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryPrecisionResults) ProtoMessage() {} + +func (x *TrajectoryPrecisionResults) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[119] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryPrecisionResults.ProtoReflect.Descriptor instead. +func (*TrajectoryPrecisionResults) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{119} +} + +func (x *TrajectoryPrecisionResults) GetTrajectoryPrecisionMetricValues() []*TrajectoryPrecisionMetricValue { + if x != nil { + return x.TrajectoryPrecisionMetricValues + } + return nil +} + +// TrajectoryPrecision metric value for an instance. +type TrajectoryPrecisionMetricValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. TrajectoryPrecision score. + Score *float32 `protobuf:"fixed32,1,opt,name=score,proto3,oneof" json:"score,omitempty"` +} + +func (x *TrajectoryPrecisionMetricValue) Reset() { + *x = TrajectoryPrecisionMetricValue{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[120] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryPrecisionMetricValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryPrecisionMetricValue) ProtoMessage() {} + +func (x *TrajectoryPrecisionMetricValue) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[120] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryPrecisionMetricValue.ProtoReflect.Descriptor instead. +func (*TrajectoryPrecisionMetricValue) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{120} +} + +func (x *TrajectoryPrecisionMetricValue) GetScore() float32 { + if x != nil && x.Score != nil { + return *x.Score + } + return 0 +} + +// Instances and metric spec for TrajectoryRecall metric. +type TrajectoryRecallInput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Spec for TrajectoryRecall metric. + MetricSpec *TrajectoryRecallSpec `protobuf:"bytes,1,opt,name=metric_spec,json=metricSpec,proto3" json:"metric_spec,omitempty"` + // Required. Repeated TrajectoryRecall instance. + Instances []*TrajectoryRecallInstance `protobuf:"bytes,2,rep,name=instances,proto3" json:"instances,omitempty"` +} + +func (x *TrajectoryRecallInput) Reset() { + *x = TrajectoryRecallInput{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[121] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryRecallInput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryRecallInput) ProtoMessage() {} + +func (x *TrajectoryRecallInput) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[121] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryRecallInput.ProtoReflect.Descriptor instead. +func (*TrajectoryRecallInput) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{121} +} + +func (x *TrajectoryRecallInput) GetMetricSpec() *TrajectoryRecallSpec { + if x != nil { + return x.MetricSpec + } + return nil +} + +func (x *TrajectoryRecallInput) GetInstances() []*TrajectoryRecallInstance { + if x != nil { + return x.Instances + } + return nil +} + +// Spec for TrajectoryRecall metric - returns a float score based on average +// recall of individual tool calls. +type TrajectoryRecallSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *TrajectoryRecallSpec) Reset() { + *x = TrajectoryRecallSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[122] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryRecallSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryRecallSpec) ProtoMessage() {} + +func (x *TrajectoryRecallSpec) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[122] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryRecallSpec.ProtoReflect.Descriptor instead. +func (*TrajectoryRecallSpec) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{122} +} + +// Spec for TrajectoryRecall instance. +type TrajectoryRecallInstance struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Spec for predicted tool call trajectory. + PredictedTrajectory *Trajectory `protobuf:"bytes,1,opt,name=predicted_trajectory,json=predictedTrajectory,proto3,oneof" json:"predicted_trajectory,omitempty"` + // Required. Spec for reference tool call trajectory. + ReferenceTrajectory *Trajectory `protobuf:"bytes,2,opt,name=reference_trajectory,json=referenceTrajectory,proto3,oneof" json:"reference_trajectory,omitempty"` +} + +func (x *TrajectoryRecallInstance) Reset() { + *x = TrajectoryRecallInstance{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[123] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryRecallInstance) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryRecallInstance) ProtoMessage() {} + +func (x *TrajectoryRecallInstance) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[123] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryRecallInstance.ProtoReflect.Descriptor instead. +func (*TrajectoryRecallInstance) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{123} +} + +func (x *TrajectoryRecallInstance) GetPredictedTrajectory() *Trajectory { + if x != nil { + return x.PredictedTrajectory + } + return nil +} + +func (x *TrajectoryRecallInstance) GetReferenceTrajectory() *Trajectory { + if x != nil { + return x.ReferenceTrajectory + } + return nil +} + +// Results for TrajectoryRecall metric. +type TrajectoryRecallResults struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. TrajectoryRecall metric values. + TrajectoryRecallMetricValues []*TrajectoryRecallMetricValue `protobuf:"bytes,1,rep,name=trajectory_recall_metric_values,json=trajectoryRecallMetricValues,proto3" json:"trajectory_recall_metric_values,omitempty"` +} + +func (x *TrajectoryRecallResults) Reset() { + *x = TrajectoryRecallResults{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[124] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryRecallResults) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryRecallResults) ProtoMessage() {} + +func (x *TrajectoryRecallResults) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[124] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryRecallResults.ProtoReflect.Descriptor instead. +func (*TrajectoryRecallResults) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{124} +} + +func (x *TrajectoryRecallResults) GetTrajectoryRecallMetricValues() []*TrajectoryRecallMetricValue { + if x != nil { + return x.TrajectoryRecallMetricValues + } + return nil +} + +// TrajectoryRecall metric value for an instance. +type TrajectoryRecallMetricValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. TrajectoryRecall score. + Score *float32 `protobuf:"fixed32,1,opt,name=score,proto3,oneof" json:"score,omitempty"` +} + +func (x *TrajectoryRecallMetricValue) Reset() { + *x = TrajectoryRecallMetricValue{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[125] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectoryRecallMetricValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectoryRecallMetricValue) ProtoMessage() {} + +func (x *TrajectoryRecallMetricValue) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[125] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectoryRecallMetricValue.ProtoReflect.Descriptor instead. +func (*TrajectoryRecallMetricValue) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{125} +} + +func (x *TrajectoryRecallMetricValue) GetScore() float32 { + if x != nil && x.Score != nil { + return *x.Score + } + return 0 +} + +// Instances and metric spec for TrajectorySingleToolUse metric. +type TrajectorySingleToolUseInput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Spec for TrajectorySingleToolUse metric. + MetricSpec *TrajectorySingleToolUseSpec `protobuf:"bytes,1,opt,name=metric_spec,json=metricSpec,proto3" json:"metric_spec,omitempty"` + // Required. Repeated TrajectorySingleToolUse instance. + Instances []*TrajectorySingleToolUseInstance `protobuf:"bytes,2,rep,name=instances,proto3" json:"instances,omitempty"` +} + +func (x *TrajectorySingleToolUseInput) Reset() { + *x = TrajectorySingleToolUseInput{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[126] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectorySingleToolUseInput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectorySingleToolUseInput) ProtoMessage() {} + +func (x *TrajectorySingleToolUseInput) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[126] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectorySingleToolUseInput.ProtoReflect.Descriptor instead. +func (*TrajectorySingleToolUseInput) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{126} +} + +func (x *TrajectorySingleToolUseInput) GetMetricSpec() *TrajectorySingleToolUseSpec { + if x != nil { + return x.MetricSpec + } + return nil +} + +func (x *TrajectorySingleToolUseInput) GetInstances() []*TrajectorySingleToolUseInstance { + if x != nil { + return x.Instances + } + return nil +} + +// Spec for TrajectorySingleToolUse metric - returns 1 if tool is present in the +// predicted trajectory, else 0. +type TrajectorySingleToolUseSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Spec for tool name to be checked for in the predicted trajectory. + ToolName *string `protobuf:"bytes,1,opt,name=tool_name,json=toolName,proto3,oneof" json:"tool_name,omitempty"` +} + +func (x *TrajectorySingleToolUseSpec) Reset() { + *x = TrajectorySingleToolUseSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[127] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectorySingleToolUseSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectorySingleToolUseSpec) ProtoMessage() {} + +func (x *TrajectorySingleToolUseSpec) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[127] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectorySingleToolUseSpec.ProtoReflect.Descriptor instead. +func (*TrajectorySingleToolUseSpec) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{127} +} + +func (x *TrajectorySingleToolUseSpec) GetToolName() string { + if x != nil && x.ToolName != nil { + return *x.ToolName + } + return "" +} + +// Spec for TrajectorySingleToolUse instance. +type TrajectorySingleToolUseInstance struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Spec for predicted tool call trajectory. + PredictedTrajectory *Trajectory `protobuf:"bytes,1,opt,name=predicted_trajectory,json=predictedTrajectory,proto3,oneof" json:"predicted_trajectory,omitempty"` +} + +func (x *TrajectorySingleToolUseInstance) Reset() { + *x = TrajectorySingleToolUseInstance{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[128] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectorySingleToolUseInstance) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectorySingleToolUseInstance) ProtoMessage() {} + +func (x *TrajectorySingleToolUseInstance) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[128] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectorySingleToolUseInstance.ProtoReflect.Descriptor instead. +func (*TrajectorySingleToolUseInstance) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{128} +} + +func (x *TrajectorySingleToolUseInstance) GetPredictedTrajectory() *Trajectory { + if x != nil { + return x.PredictedTrajectory + } + return nil +} + +// Results for TrajectorySingleToolUse metric. +type TrajectorySingleToolUseResults struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. TrajectorySingleToolUse metric values. + TrajectorySingleToolUseMetricValues []*TrajectorySingleToolUseMetricValue `protobuf:"bytes,1,rep,name=trajectory_single_tool_use_metric_values,json=trajectorySingleToolUseMetricValues,proto3" json:"trajectory_single_tool_use_metric_values,omitempty"` +} + +func (x *TrajectorySingleToolUseResults) Reset() { + *x = TrajectorySingleToolUseResults{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[129] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectorySingleToolUseResults) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectorySingleToolUseResults) ProtoMessage() {} + +func (x *TrajectorySingleToolUseResults) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[129] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectorySingleToolUseResults.ProtoReflect.Descriptor instead. +func (*TrajectorySingleToolUseResults) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{129} +} + +func (x *TrajectorySingleToolUseResults) GetTrajectorySingleToolUseMetricValues() []*TrajectorySingleToolUseMetricValue { + if x != nil { + return x.TrajectorySingleToolUseMetricValues + } + return nil +} + +// TrajectorySingleToolUse metric value for an instance. +type TrajectorySingleToolUseMetricValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. TrajectorySingleToolUse score. + Score *float32 `protobuf:"fixed32,1,opt,name=score,proto3,oneof" json:"score,omitempty"` +} + +func (x *TrajectorySingleToolUseMetricValue) Reset() { + *x = TrajectorySingleToolUseMetricValue{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[130] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TrajectorySingleToolUseMetricValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrajectorySingleToolUseMetricValue) ProtoMessage() {} + +func (x *TrajectorySingleToolUseMetricValue) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[130] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrajectorySingleToolUseMetricValue.ProtoReflect.Descriptor instead. +func (*TrajectorySingleToolUseMetricValue) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{130} +} + +func (x *TrajectorySingleToolUseMetricValue) GetScore() float32 { + if x != nil && x.Score != nil { + return *x.Score + } + return 0 +} + +// Spec for trajectory. +type Trajectory struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Tool calls in the trajectory. + ToolCalls []*ToolCall `protobuf:"bytes,1,rep,name=tool_calls,json=toolCalls,proto3" json:"tool_calls,omitempty"` +} + +func (x *Trajectory) Reset() { + *x = Trajectory{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[131] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Trajectory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Trajectory) ProtoMessage() {} + +func (x *Trajectory) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[131] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Trajectory.ProtoReflect.Descriptor instead. +func (*Trajectory) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{131} +} + +func (x *Trajectory) GetToolCalls() []*ToolCall { + if x != nil { + return x.ToolCalls + } + return nil +} + +// Spec for tool call. +type ToolCall struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Spec for tool name + ToolName *string `protobuf:"bytes,1,opt,name=tool_name,json=toolName,proto3,oneof" json:"tool_name,omitempty"` + // Optional. Spec for tool input + ToolInput *string `protobuf:"bytes,2,opt,name=tool_input,json=toolInput,proto3,oneof" json:"tool_input,omitempty"` +} + +func (x *ToolCall) Reset() { + *x = ToolCall{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[132] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ToolCall) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ToolCall) ProtoMessage() {} + +func (x *ToolCall) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[132] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ToolCall.ProtoReflect.Descriptor instead. +func (*ToolCall) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP(), []int{132} +} + +func (x *ToolCall) GetToolName() string { + if x != nil && x.ToolName != nil { + return *x.ToolName + } + return "" +} + +func (x *ToolCall) GetToolInput() string { + if x != nil && x.ToolInput != nil { + return *x.ToolInput + } + return "" +} + +var File_google_cloud_aiplatform_v1beta1_evaluation_service_proto protoreflect.FileDescriptor + +var file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDesc = []byte{ + 0x0a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2f, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8e, + 0x1c, 0x0a, 0x18, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x11, 0x65, + 0x78, 0x61, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x65, 0x78, 0x61, 0x63, + 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4b, 0x0a, 0x0a, 0x62, + 0x6c, 0x65, 0x75, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x42, 0x6c, 0x65, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x09, 0x62, + 0x6c, 0x65, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4e, 0x0a, 0x0b, 0x72, 0x6f, 0x75, 0x67, + 0x65, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x52, 0x6f, 0x75, 0x67, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x6f, + 0x75, 0x67, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x54, 0x0a, 0x0d, 0x66, 0x6c, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x46, 0x6c, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, + 0x52, 0x0c, 0x66, 0x6c, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x5a, + 0x0a, 0x0f, 0x63, 0x6f, 0x68, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x68, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x68, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x51, 0x0a, 0x0c, 0x73, 0x61, + 0x66, 0x65, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, + 0x52, 0x0b, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x63, 0x0a, + 0x12, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, + 0x6e, 0x64, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, + 0x11, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x12, 0x60, 0x0a, 0x11, 0x66, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x48, 0x00, 0x52, 0x10, 0x66, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x12, 0x7c, 0x0a, 0x1b, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x19, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x12, 0x95, 0x01, 0x0a, 0x24, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x5f, + 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x71, 0x75, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x21, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, + 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x88, 0x01, 0x0a, 0x1f, 0x73, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x6c, + 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x1d, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x82, 0x01, 0x0a, 0x1d, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x69, 0x74, + 0x79, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, + 0x62, 0x6f, 0x73, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x1b, 0x73, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x62, + 0x6f, 0x73, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x89, 0x01, 0x0a, 0x20, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, + 0x67, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x1d, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, + 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, + 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0xa2, 0x01, 0x0a, 0x29, 0x70, 0x61, 0x69, 0x72, 0x77, + 0x69, 0x73, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x73, + 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x69, + 0x72, 0x77, 0x69, 0x73, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, + 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x48, 0x00, 0x52, 0x25, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x51, 0x75, + 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, + 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x8f, 0x01, 0x0a, 0x22, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, + 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6c, 0x65, + 0x76, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x1f, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, + 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x95, 0x01, + 0x0a, 0x24, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, + 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, + 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, + 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, + 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x48, 0x00, 0x52, 0x21, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, + 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x95, 0x01, 0x0a, 0x24, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x72, + 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, + 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6e, + 0x65, 0x73, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x21, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x72, + 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x6d, 0x0a, + 0x16, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, 0x73, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x14, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, 0x73, + 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x6a, 0x0a, 0x15, + 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, + 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x48, 0x00, 0x52, 0x13, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x68, 0x0a, 0x15, 0x74, 0x6f, 0x6f, 0x6c, + 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x12, 0x74, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x68, 0x0a, 0x15, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, @@ -6930,444 +8754,509 @@ var file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDesc = []by 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x56, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x19, 0x74, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x76, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, - 0x12, 0x45, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x22, 0xa1, 0x16, 0x0a, 0x19, 0x45, 0x76, 0x61, - 0x6c, 0x75, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x13, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, 0x11, 0x65, 0x78, 0x61, 0x63, 0x74, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x51, 0x0a, 0x0c, - 0x62, 0x6c, 0x65, 0x75, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x6c, 0x65, 0x75, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x48, 0x00, 0x52, 0x0b, 0x62, 0x6c, 0x65, 0x75, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, - 0x54, 0x0a, 0x0d, 0x72, 0x6f, 0x75, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x12, 0x7d, 0x0a, 0x1c, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x65, + 0x78, 0x61, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x67, 0x65, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x6f, 0x75, 0x67, 0x65, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x57, 0x0a, 0x0e, 0x66, 0x6c, 0x75, 0x65, 0x6e, 0x63, 0x79, - 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x79, 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x48, 0x00, 0x52, 0x19, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, + 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, + 0x84, 0x01, 0x0a, 0x1f, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, + 0x6e, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x1b, 0x74, 0x72, 0x61, 0x6a, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x87, 0x01, 0x0a, 0x20, 0x74, 0x72, 0x61, 0x6a, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x61, 0x6e, 0x79, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x23, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x6e, + 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x48, 0x00, 0x52, 0x1c, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x6e, + 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x12, 0x79, 0x0a, 0x1a, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x70, + 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x25, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x79, 0x50, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, + 0x00, 0x52, 0x18, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x72, 0x65, + 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x70, 0x0a, 0x17, 0x74, + 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x63, 0x61, 0x6c, 0x6c, + 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, + 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x15, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x79, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x87, 0x01, + 0x0a, 0x20, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x73, 0x69, 0x6e, + 0x67, 0x6c, 0x65, 0x5f, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6f, 0x6c, 0x55, + 0x73, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x1c, 0x74, 0x72, 0x61, 0x6a, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6f, 0x6c, 0x55, + 0x73, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x45, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, + 0x0a, 0x0d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x22, + 0xcd, 0x1c, 0x0a, 0x19, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, + 0x13, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x61, + 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, + 0x52, 0x11, 0x65, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x73, 0x12, 0x51, 0x0a, 0x0c, 0x62, 0x6c, 0x65, 0x75, 0x5f, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x6c, 0x65, 0x75, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x62, 0x6c, 0x65, 0x75, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x54, 0x0a, 0x0d, 0x72, 0x6f, 0x75, 0x67, 0x65, 0x5f, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x46, 0x6c, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, - 0x0d, 0x66, 0x6c, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x5d, - 0x0a, 0x10, 0x63, 0x6f, 0x68, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x68, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x63, 0x6f, - 0x68, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x54, 0x0a, - 0x0d, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x52, 0x6f, 0x75, 0x67, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0c, + 0x72, 0x6f, 0x75, 0x67, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x57, 0x0a, 0x0e, + 0x66, 0x6c, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x12, 0x66, 0x0a, 0x13, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x6e, - 0x65, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x12, 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x65, - 0x64, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x63, 0x0a, 0x12, 0x66, - 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x46, 0x6c, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x66, 0x6c, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x5d, 0x0a, 0x10, 0x63, 0x6f, 0x68, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x43, 0x6f, 0x68, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x48, 0x00, 0x52, 0x0f, 0x63, 0x6f, 0x68, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x54, 0x0a, 0x0d, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x5f, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x61, + 0x66, 0x65, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x61, + 0x66, 0x65, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x66, 0x0a, 0x13, 0x67, 0x72, + 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, - 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x11, 0x66, - 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x7f, 0x0a, 0x1c, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, + 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x6e, 0x64, + 0x65, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x12, + 0x67, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x63, 0x0a, 0x12, 0x66, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x48, 0x00, 0x52, 0x11, 0x66, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x7f, 0x0a, 0x1c, 0x73, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, + 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x1a, 0x73, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, + 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x98, 0x01, 0x0a, 0x25, 0x70, 0x61, 0x69, + 0x72, 0x77, 0x69, 0x73, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x77, + 0x69, 0x73, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, + 0x22, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x1a, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x12, 0x98, 0x01, 0x0a, 0x25, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x5f, 0x73, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x71, 0x75, 0x61, - 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x22, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, - 0x73, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, - 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x8b, 0x01, 0x0a, - 0x20, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, - 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, - 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x1e, 0x73, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, - 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x85, 0x01, 0x0a, 0x1e, 0x73, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x65, 0x72, - 0x62, 0x6f, 0x73, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x48, 0x00, 0x52, 0x1c, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x8c, 0x01, 0x0a, 0x21, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, - 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, + 0x75, 0x6c, 0x74, 0x12, 0x8b, 0x01, 0x0a, 0x20, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, + 0x73, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, - 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, - 0x00, 0x52, 0x1e, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, - 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x12, 0xa5, 0x01, 0x0a, 0x2a, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x5f, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, - 0x67, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, - 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, - 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, - 0x00, 0x52, 0x26, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, - 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, - 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x92, 0x01, 0x0a, 0x23, 0x71, 0x75, + 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, + 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, + 0x00, 0x52, 0x1e, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x85, 0x01, 0x0a, 0x1e, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, + 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x1c, 0x73, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, + 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x8c, 0x01, 0x0a, 0x21, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, - 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, - 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x20, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, - 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x98, - 0x01, 0x0a, 0x25, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x73, 0x77, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, - 0x73, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, + 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x1e, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, + 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, + 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0xa5, 0x01, 0x0a, 0x2a, 0x70, 0x61, 0x69, + 0x72, 0x77, 0x69, 0x73, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, + 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x26, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, + 0x73, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, + 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x92, 0x01, 0x0a, 0x23, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, + 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, - 0x6e, 0x67, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x22, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, - 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, - 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x98, 0x01, 0x0a, 0x25, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x5f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, - 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x72, - 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, - 0x52, 0x22, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, - 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0x70, 0x0a, 0x17, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, 0x73, - 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, - 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6e, 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x48, 0x00, 0x52, 0x20, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, + 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x98, 0x01, 0x0a, 0x25, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x65, 0x6c, + 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, 0x73, - 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, - 0x15, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x6d, 0x0a, 0x16, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, - 0x73, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, + 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x22, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, + 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x98, 0x01, 0x0a, 0x25, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, + 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6e, + 0x65, 0x73, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, + 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x22, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, + 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, + 0x74, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x70, 0x0a, 0x17, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, 0x73, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x15, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, 0x73, + 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x6d, 0x0a, + 0x16, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x14, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x6e, 0x0a, 0x17, + 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x54, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, 0x14, 0x74, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, 0x6c, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x6e, 0x0a, 0x17, + 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x54, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, 0x14, 0x74, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x87, 0x01, 0x0a, + 0x20, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, + 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, 0x1c, 0x74, 0x6f, 0x6f, 0x6c, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x1f, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x6b, 0x76, 0x5f, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x4b, 0x56, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, + 0x52, 0x1b, 0x74, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, + 0x76, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x83, 0x01, + 0x0a, 0x1e, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x61, + 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, + 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, - 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, - 0x14, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x6e, 0x0a, 0x17, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x63, 0x61, - 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x79, 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, 0x1b, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x79, 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x73, 0x12, 0x8a, 0x01, 0x0a, 0x21, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, + 0x00, 0x52, 0x1d, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, + 0x12, 0x8d, 0x01, 0x0a, 0x22, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, + 0x61, 0x6e, 0x79, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x6e, 0x79, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, + 0x52, 0x1e, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x6e, 0x79, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, + 0x12, 0x7f, 0x0a, 0x1c, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x70, + 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, + 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, - 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, - 0x14, 0x74, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x6e, 0x0a, 0x17, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x79, 0x50, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, 0x1a, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x79, 0x50, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x12, 0x76, 0x0a, 0x19, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, + 0x72, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x24, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x79, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, + 0x52, 0x17, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x63, 0x61, + 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x8d, 0x01, 0x0a, 0x22, 0x74, 0x72, + 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, + 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, + 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, - 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, - 0x14, 0x74, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x87, 0x01, 0x0a, 0x20, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, - 0x00, 0x52, 0x1c, 0x74, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, - 0x84, 0x01, 0x0a, 0x1f, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x5f, 0x6b, 0x76, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x56, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, 0x1b, 0x74, 0x6f, 0x6f, 0x6c, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x76, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x14, 0x0a, 0x12, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xc0, 0x01, 0x0a, - 0x0f, 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, - 0x12, 0x55, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x56, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x61, - 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, - 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, - 0x83, 0x01, 0x0a, 0x12, 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, - 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, - 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x01, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, - 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x10, 0x0a, 0x0e, 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x22, 0x8b, 0x01, 0x0a, 0x11, 0x45, 0x78, 0x61, 0x63, - 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x76, 0x0a, - 0x19, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x16, 0x65, - 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x41, 0x0a, 0x15, 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, - 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xae, 0x01, 0x0a, 0x09, 0x42, 0x6c, 0x65, - 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x6c, - 0x65, 0x75, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x50, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x6c, 0x65, - 0x75, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x7d, 0x0a, 0x0c, 0x42, 0x6c, 0x65, - 0x75, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x79, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6f, 0x6c, 0x55, 0x73, 0x65, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, 0x1e, 0x74, 0x72, 0x61, 0x6a, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6f, 0x6c, 0x55, + 0x73, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42, 0x14, 0x0a, 0x12, 0x65, 0x76, 0x61, + 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, + 0xc0, 0x01, 0x0a, 0x0f, 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, + 0x70, 0x75, 0x74, 0x12, 0x55, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, + 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x61, 0x63, 0x74, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x56, 0x0a, 0x09, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x12, 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x01, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x3f, 0x0a, 0x08, 0x42, 0x6c, 0x65, 0x75, - 0x53, 0x70, 0x65, 0x63, 0x12, 0x33, 0x0a, 0x13, 0x75, 0x73, 0x65, 0x5f, 0x65, 0x66, 0x66, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x11, 0x75, 0x73, 0x65, 0x45, 0x66, 0x66, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x72, 0x0a, 0x0b, 0x42, 0x6c, 0x65, - 0x75, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x63, 0x0a, 0x12, 0x62, 0x6c, 0x65, 0x75, - 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x6c, 0x65, 0x75, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x10, 0x62, 0x6c, 0x65, - 0x75, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x3b, 0x0a, - 0x0f, 0x42, 0x6c, 0x65, 0x75, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xb1, 0x01, 0x0a, 0x0a, 0x52, - 0x6f, 0x75, 0x67, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x50, 0x0a, 0x0b, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x52, 0x6f, 0x75, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, - 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x51, 0x0a, 0x09, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x10, 0x0a, 0x0e, 0x45, 0x78, 0x61, 0x63, + 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x22, 0x8b, 0x01, 0x0a, 0x11, 0x45, + 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, + 0x12, 0x76, 0x0a, 0x19, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x16, 0x65, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x41, 0x0a, 0x15, 0x45, 0x78, 0x61, 0x63, + 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xae, 0x01, 0x0a, 0x09, + 0x42, 0x6c, 0x65, 0x75, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x52, 0x6f, 0x75, 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x7e, - 0x0a, 0x0d, 0x52, 0x6f, 0x75, 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, - 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, - 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x48, 0x01, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, - 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x83, - 0x01, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x22, 0x0a, 0x0a, - 0x72, 0x6f, 0x75, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x72, 0x6f, 0x75, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x24, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x65, 0x6d, 0x6d, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x53, - 0x74, 0x65, 0x6d, 0x6d, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x5f, - 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x69, 0x65, 0x73, 0x22, 0x76, 0x0a, 0x0c, 0x52, 0x6f, 0x75, 0x67, 0x65, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x73, 0x12, 0x66, 0x0a, 0x13, 0x72, 0x6f, 0x75, 0x67, 0x65, 0x5f, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x42, 0x6c, 0x65, 0x75, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x50, 0x0a, 0x09, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x42, 0x6c, 0x65, 0x75, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x7d, 0x0a, 0x0c, + 0x42, 0x6c, 0x65, 0x75, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, + 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x01, + 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, + 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x3f, 0x0a, 0x08, 0x42, + 0x6c, 0x65, 0x75, 0x53, 0x70, 0x65, 0x63, 0x12, 0x33, 0x0a, 0x13, 0x75, 0x73, 0x65, 0x5f, 0x65, + 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x11, 0x75, 0x73, 0x65, 0x45, 0x66, + 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x72, 0x0a, 0x0b, + 0x42, 0x6c, 0x65, 0x75, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x63, 0x0a, 0x12, 0x62, + 0x6c, 0x65, 0x75, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x6c, 0x65, 0x75, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x10, + 0x62, 0x6c, 0x65, 0x75, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x22, 0x3b, 0x0a, 0x0f, 0x42, 0x6c, 0x65, 0x75, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xb1, 0x01, + 0x0a, 0x0a, 0x52, 0x6f, 0x75, 0x67, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x50, 0x0a, 0x0b, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x11, 0x72, 0x6f, 0x75, 0x67, 0x65, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x3c, 0x0a, 0x10, - 0x52, 0x6f, 0x75, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x0e, 0x43, - 0x6f, 0x68, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x54, 0x0a, - 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x68, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x70, - 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, - 0x70, 0x65, 0x63, 0x12, 0x53, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x74, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x51, + 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x22, 0x7e, 0x0a, 0x0d, 0x52, 0x6f, 0x75, 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x09, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x48, 0x01, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x22, 0x83, 0x01, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x67, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, + 0x22, 0x0a, 0x0a, 0x72, 0x6f, 0x75, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x72, 0x6f, 0x75, 0x67, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x65, 0x6d, 0x6d, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x75, + 0x73, 0x65, 0x53, 0x74, 0x65, 0x6d, 0x6d, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x70, 0x6c, + 0x69, 0x74, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x22, 0x76, 0x0a, 0x0c, 0x52, 0x6f, 0x75, 0x67, 0x65, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x66, 0x0a, 0x13, 0x72, 0x6f, 0x75, 0x67, 0x65, + 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x11, 0x72, 0x6f, + 0x75, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, + 0x3c, 0x0a, 0x10, 0x52, 0x6f, 0x75, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xbb, 0x01, + 0x0a, 0x0e, 0x43, 0x6f, 0x68, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x12, 0x54, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x68, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x11, 0x43, 0x6f, 0x68, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, - 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, - 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2e, 0x0a, 0x0d, 0x43, 0x6f, 0x68, 0x65, 0x72, 0x65, - 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x9b, 0x01, 0x0a, 0x0f, 0x43, 0x6f, 0x68, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, - 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, - 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x78, - 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, - 0x65, 0x6e, 0x63, 0x65, 0x22, 0xb5, 0x01, 0x0a, 0x0c, 0x46, 0x6c, 0x75, 0x65, 0x6e, 0x63, 0x79, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x52, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, - 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x46, 0x6c, 0x75, - 0x65, 0x6e, 0x63, 0x79, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x51, 0x0a, 0x08, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x46, 0x6c, - 0x75, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, - 0x41, 0x02, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x4a, 0x0a, 0x0f, - 0x46, 0x6c, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, - 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, - 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, - 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2c, 0x0a, 0x0b, 0x46, 0x6c, 0x75, 0x65, - 0x6e, 0x63, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x99, 0x01, 0x0a, 0x0d, 0x46, 0x6c, 0x75, 0x65, 0x6e, - 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, - 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, - 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x28, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, - 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, - 0x63, 0x65, 0x22, 0xb2, 0x01, 0x0a, 0x0b, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x12, 0x51, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, - 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, - 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x50, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x49, 0x0a, 0x0e, 0x53, 0x61, 0x66, 0x65, 0x74, - 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, - 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x2b, 0x0a, 0x0a, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, - 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0x98, 0x01, 0x0a, 0x0c, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, - 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x48, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, - 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xc4, 0x01, 0x0a, 0x11, 0x47, - 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, - 0x12, 0x57, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, - 0x6e, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x56, 0x0a, 0x08, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x72, - 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x22, 0x7f, 0x0a, 0x14, 0x47, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x6e, 0x65, 0x73, - 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, - 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x01, 0x52, 0x07, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, - 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x22, 0x31, 0x0a, 0x10, 0x47, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x6e, 0x65, - 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x9e, 0x01, 0x0a, 0x12, 0x47, 0x72, 0x6f, 0x75, 0x6e, 0x64, - 0x65, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x05, - 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, - 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x0a, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xc1, 0x01, 0x0a, 0x10, 0x46, 0x75, 0x6c, 0x66, 0x69, - 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x56, 0x0a, 0x0b, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x70, - 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, - 0x70, 0x65, 0x63, 0x12, 0x55, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, - 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x13, 0x46, - 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x65, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x53, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x68, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x11, 0x43, + 0x6f, 0x68, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, + 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2e, 0x0a, 0x0d, 0x43, 0x6f, 0x68, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x9b, 0x01, 0x0a, 0x0f, 0x43, 0x6f, + 0x68, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, + 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, + 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, + 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, + 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xb5, 0x01, 0x0a, 0x0c, 0x46, 0x6c, 0x75, 0x65, + 0x6e, 0x63, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x52, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x46, 0x6c, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x51, 0x0a, 0x08, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x46, 0x6c, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, + 0x4a, 0x0a, 0x0f, 0x46, 0x6c, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, - 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0b, - 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x01, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, - 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x30, 0x0a, 0x0f, 0x46, 0x75, 0x6c, 0x66, 0x69, - 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, + 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2c, 0x0a, 0x0b, 0x46, + 0x6c, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x9d, 0x01, 0x0a, 0x11, 0x46, 0x75, - 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x99, 0x01, 0x0a, 0x0d, 0x46, 0x6c, + 0x75, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x05, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, + 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x65, + 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xb2, 0x01, 0x0a, 0x0b, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x51, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x61, 0x66, + 0x65, 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x50, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x61, 0x66, + 0x65, 0x74, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x49, 0x0a, 0x0e, 0x53, 0x61, + 0x66, 0x65, 0x74, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, + 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2b, 0x0a, 0x0a, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x53, + 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x22, 0x98, 0x01, 0x0a, 0x0c, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, + 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, + 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, + 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xc4, 0x01, + 0x0a, 0x11, 0x47, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, + 0x70, 0x75, 0x74, 0x12, 0x57, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, + 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x6e, + 0x64, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x56, 0x0a, 0x08, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x22, 0x7f, 0x0a, 0x14, 0x47, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, + 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, + 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x01, 0x52, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x31, 0x0a, 0x10, 0x47, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x65, + 0x64, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x9e, 0x01, 0x0a, 0x12, 0x47, 0x72, 0x6f, + 0x75, 0x6e, 0x64, 0x65, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, @@ -7376,127 +9265,414 @@ var file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDesc = []by 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xdc, 0x01, 0x0a, 0x19, 0x53, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, - 0x74, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x5f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, - 0x69, 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5e, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x6d, - 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, - 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xf9, 0x01, 0x0a, 0x1c, 0x53, 0x75, 0x6d, - 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, - 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, - 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x01, 0x52, 0x09, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x07, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x48, 0x02, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x2a, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x73, + 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xc1, 0x01, 0x0a, 0x10, 0x46, 0x75, + 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x56, + 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, + 0x74, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x55, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x46, 0x75, 0x6c, 0x66, 0x69, + 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x8a, 0x01, + 0x0a, 0x13, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, + 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, + 0x2a, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x01, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x18, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, - 0x12, 0x28, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x75, 0x73, - 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xa6, 0x01, 0x0a, 0x1a, 0x53, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, - 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, - 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, - 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x28, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, - 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, - 0x63, 0x65, 0x22, 0xf4, 0x01, 0x0a, 0x21, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x53, + 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, + 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x30, 0x0a, 0x0f, 0x46, 0x75, + 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1d, 0x0a, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x9d, 0x01, 0x0a, + 0x11, 0x46, 0x75, 0x6c, 0x66, 0x69, 0x6c, 0x6c, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, + 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, + 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x0a, + 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xdc, 0x01, 0x0a, + 0x19, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x5f, 0x0a, 0x0b, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, + 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5e, 0x0a, 0x08, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, + 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xf9, 0x01, 0x0a, 0x1c, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, + 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, + 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x01, + 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, + 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x48, 0x02, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x03, 0x52, 0x0b, + 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, + 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x18, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, + 0x70, 0x65, 0x63, 0x12, 0x28, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x0c, 0x75, 0x73, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xa6, 0x01, 0x0a, + 0x1a, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x05, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, + 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x65, + 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xf4, 0x01, 0x0a, 0x21, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, + 0x73, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, + 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x67, 0x0a, 0x0b, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, + 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x53, 0x70, 0x65, 0x63, 0x12, 0x66, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, + 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xd4, 0x02, 0x0a, + 0x24, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, + 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, + 0x39, 0x0a, 0x13, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x64, + 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x48, 0x01, 0x52, 0x12, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x72, 0x65, + 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x48, 0x02, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x22, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x03, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x48, 0x04, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, + 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x70, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x6b, 0x0a, 0x20, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, - 0x69, 0x74, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x67, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, + 0x69, 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x28, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x5f, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x22, 0xe3, 0x01, 0x0a, 0x22, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, + 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x5d, 0x0a, 0x0f, 0x70, 0x61, 0x69, 0x72, 0x77, + 0x69, 0x73, 0x65, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, + 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, + 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xe8, 0x01, 0x0a, 0x1d, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, + 0x65, 0x73, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x63, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, - 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, - 0x63, 0x12, 0x66, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x6c, + 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x62, 0x0a, + 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, + 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x22, 0xfd, 0x01, 0x0a, 0x20, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, + 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, + 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x01, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x02, + 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0b, + 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, + 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x67, 0x0a, 0x1c, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, + 0x63, 0x12, 0x28, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x75, + 0x73, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xaa, 0x01, 0x0a, 0x1e, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x6c, 0x70, + 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, + 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, + 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, + 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, + 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xe2, 0x01, 0x0a, 0x1b, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x69, + 0x74, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x61, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x62, + 0x6f, 0x73, 0x69, 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x60, 0x0a, 0x08, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x62, + 0x6f, 0x73, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xfb, 0x01, 0x0a, + 0x1e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, + 0x72, 0x62, 0x6f, 0x73, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, + 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, + 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x48, 0x01, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x22, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x02, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, + 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x0a, + 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, + 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x65, 0x0a, 0x1a, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x62, 0x6f, + 0x73, 0x69, 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x28, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x5f, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x22, 0xa8, 0x01, 0x0a, 0x1c, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, + 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, + 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x0a, + 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xe8, 0x01, 0x0a, + 0x1d, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, + 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x63, + 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x53, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, - 0x74, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, - 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xd4, 0x02, 0x0a, 0x24, 0x50, 0x61, - 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, - 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x13, - 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x01, - 0x52, 0x12, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, - 0x02, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x22, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x03, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x04, 0x52, - 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, - 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x16, - 0x0a, 0x14, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x64, - 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x6b, 0x0a, 0x20, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, - 0x53, 0x70, 0x65, 0x63, 0x12, 0x28, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x0c, 0x75, 0x73, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1d, - 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xe3, 0x01, - 0x0a, 0x22, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0x5d, 0x0a, 0x0f, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, - 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, + 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x70, + 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, + 0x70, 0x65, 0x63, 0x12, 0x62, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xfd, 0x01, 0x0a, 0x20, 0x51, 0x75, 0x65, 0x73, + 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, + 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, + 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x01, + 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, + 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x48, 0x02, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x03, 0x52, 0x0b, + 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, + 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x67, 0x0a, 0x1c, 0x51, 0x75, 0x65, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, + 0x69, 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x28, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x5f, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x22, 0xaa, 0x01, 0x0a, 0x1e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, + 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, - 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, - 0x6e, 0x63, 0x65, 0x22, 0xe8, 0x01, 0x0a, 0x1d, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x63, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, - 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x6d, - 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, - 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x62, 0x0a, 0x08, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, + 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, + 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, + 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x80, 0x02, + 0x0a, 0x25, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, + 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, + 0x74, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x6b, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x6c, 0x70, - 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, - 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xfd, - 0x01, 0x0a, 0x20, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, + 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, + 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, + 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x53, 0x70, 0x65, 0x63, 0x12, 0x6a, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, + 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, + 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x22, 0xd8, 0x02, 0x0a, 0x28, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x51, 0x75, 0x65, + 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, + 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x13, 0x62, 0x61, 0x73, 0x65, 0x6c, + 0x69, 0x6e, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x01, 0x52, 0x12, 0x62, 0x61, 0x73, + 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, + 0x01, 0x01, 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x02, 0x52, 0x09, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x07, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x48, 0x03, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2a, + 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x04, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x62, 0x61, + 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, + 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6f, 0x0a, 0x24, 0x50, + 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, + 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, + 0x70, 0x65, 0x63, 0x12, 0x28, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x0c, 0x75, 0x73, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xe7, 0x01, 0x0a, + 0x26, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, + 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, + 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x5d, 0x0a, 0x0f, 0x70, 0x61, 0x69, 0x72, 0x77, + 0x69, 0x73, 0x65, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, + 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, + 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, + 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xee, 0x01, 0x0a, 0x1f, 0x51, 0x75, 0x65, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6c, 0x65, + 0x76, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x65, 0x0a, 0x0b, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, + 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, + 0x63, 0x12, 0x64, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, + 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xff, 0x01, 0x0a, 0x22, 0x51, 0x75, 0x65, 0x73, + 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6c, + 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, + 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x48, 0x01, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x22, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x02, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x03, + 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, + 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x0a, 0x0a, + 0x08, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x69, 0x0a, 0x1e, 0x51, 0x75, 0x65, + 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, + 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x28, 0x0a, 0x0d, 0x75, + 0x73, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xac, 0x01, 0x0a, 0x20, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, + 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, + 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, + 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, + 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x78, 0x70, + 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, + 0x6e, 0x63, 0x65, 0x22, 0xf4, 0x01, 0x0a, 0x21, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, + 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x67, 0x0a, 0x0b, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, + 0x6e, 0x67, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, + 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, + 0x65, 0x63, 0x12, 0x66, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, + 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, + 0x65, 0x73, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x81, 0x02, 0x0a, 0x24, 0x51, + 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, @@ -7504,561 +9680,622 @@ var file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDesc = []by 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x01, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x02, 0x52, 0x07, 0x63, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x02, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x01, 0x48, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, + 0xe0, 0x41, 0x02, 0x48, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x67, - 0x0a, 0x1c, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, - 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x28, - 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x52, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xaa, 0x01, 0x0a, 0x1e, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, - 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, - 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, - 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x78, - 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, - 0x65, 0x6e, 0x63, 0x65, 0x22, 0xe2, 0x01, 0x0a, 0x1b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x69, 0x74, 0x79, 0x49, - 0x6e, 0x70, 0x75, 0x74, 0x12, 0x61, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, - 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x69, - 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x60, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x69, - 0x74, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, - 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xfb, 0x01, 0x0a, 0x1e, 0x53, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x62, 0x6f, - 0x73, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, + 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6b, + 0x0a, 0x20, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, + 0x69, 0x6e, 0x67, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x70, + 0x65, 0x63, 0x12, 0x28, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, + 0x75, 0x73, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xae, 0x01, 0x0a, 0x22, + 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, + 0x67, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, + 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, + 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x0a, + 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xf4, 0x01, 0x0a, + 0x21, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, + 0x6e, 0x67, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x12, 0x67, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, + 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, + 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x72, 0x72, 0x65, + 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x66, 0x0a, 0x08, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, + 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, + 0x67, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x22, 0x81, 0x02, 0x0a, 0x24, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, + 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x01, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x02, 0x48, 0x02, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x88, + 0x03, 0xe0, 0x41, 0x01, 0x48, 0x02, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x03, 0x52, 0x0b, + 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x65, 0x0a, 0x1a, 0x53, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x69, 0x74, - 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x28, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, - 0x01, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, - 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xa8, - 0x01, 0x0a, 0x1c, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, - 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x25, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, - 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, - 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xe8, 0x01, 0x0a, 0x1d, 0x51, 0x75, - 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, - 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x63, 0x0a, 0x0b, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, - 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, 0x42, - 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, - 0x12, 0x62, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, - 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x22, 0xfd, 0x01, 0x0a, 0x20, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, - 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, - 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, - 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x01, 0x52, 0x09, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x07, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x48, 0x02, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x2a, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x73, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x67, 0x0a, 0x1c, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, - 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, - 0x53, 0x70, 0x65, 0x63, 0x12, 0x28, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x0c, 0x75, 0x73, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1d, - 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xaa, 0x01, - 0x0a, 0x1e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, - 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, - 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x48, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, - 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x80, 0x02, 0x0a, 0x25, 0x50, - 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, - 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, - 0x6e, 0x70, 0x75, 0x74, 0x12, 0x6b, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, - 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x69, 0x72, - 0x77, 0x69, 0x73, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, - 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, - 0x63, 0x12, 0x6a, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6b, 0x0a, 0x20, 0x51, 0x75, 0x65, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x72, 0x72, + 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x28, 0x0a, 0x0d, 0x75, + 0x73, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xae, 0x01, 0x0a, 0x22, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, + 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, + 0x74, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x05, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, + 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x65, + 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xcd, 0x01, 0x0a, 0x14, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x77, + 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x5a, + 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x51, 0x75, - 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, - 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xd8, 0x02, - 0x0a, 0x28, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, - 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, - 0x74, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, - 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x13, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, - 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x01, 0x52, 0x12, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, - 0x6e, 0x65, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, - 0x26, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x02, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x03, 0x52, - 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0b, 0x69, - 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x04, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, - 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x6c, - 0x69, 0x6e, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, - 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x73, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6f, 0x0a, 0x24, 0x50, 0x61, 0x69, 0x72, - 0x77, 0x69, 0x73, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, - 0x12, 0x28, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x75, 0x73, - 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xe7, 0x01, 0x0a, 0x26, 0x50, 0x61, - 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, - 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0x5d, 0x0a, 0x0f, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, - 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, 0x73, 0x65, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x59, 0x0a, 0x08, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x17, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, + 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x12, 0x25, 0x0a, 0x0d, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x6a, 0x73, 0x6f, 0x6e, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x22, 0x70, 0x0a, 0x13, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, 0x73, 0x65, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x16, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, + 0x00, 0x52, 0x14, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x54, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x5f, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x68, 0x0a, 0x15, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, + 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, + 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, + 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, + 0xca, 0x01, 0x0a, 0x13, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x59, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, + 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, + 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, + 0x65, 0x63, 0x12, 0x58, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x4b, 0x0a, 0x16, + 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x0c, 0x6a, 0x73, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x0a, 0x0a, + 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x6f, 0x0a, 0x12, 0x50, 0x61, 0x69, + 0x72, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, + 0x3e, 0x0a, 0x16, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, + 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x14, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x72, + 0x6f, 0x6d, 0x70, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, + 0x19, 0x0a, 0x17, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, + 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x14, 0x50, + 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x5d, 0x0a, 0x0f, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x5f, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, + 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x0e, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, + 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc9, 0x01, 0x0a, 0x12, 0x54, 0x6f, + 0x6f, 0x6c, 0x43, 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x12, 0x58, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, 0x6c, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x59, 0x0a, 0x09, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x43, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, - 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, - 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, - 0x6e, 0x63, 0x65, 0x22, 0xee, 0x01, 0x0a, 0x1f, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, - 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, - 0x63, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x65, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, - 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, - 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x64, - 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, - 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x22, 0xff, 0x01, 0x0a, 0x22, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, - 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, - 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, - 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x01, 0x52, - 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, - 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x01, 0x48, 0x02, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x2a, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x03, 0x52, 0x0b, 0x69, - 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, - 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x69, 0x0a, 0x1e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, - 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, - 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x28, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x5f, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x22, 0xac, 0x01, 0x0a, 0x20, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, - 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, - 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, - 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, - 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, - 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, - 0x22, 0xf4, 0x01, 0x0a, 0x21, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, - 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, - 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x67, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, - 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, - 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, - 0x66, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x54, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x13, 0x0a, 0x11, 0x54, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, + 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x53, 0x70, 0x65, 0x63, 0x22, 0x86, 0x01, 0x0a, 0x15, 0x54, + 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, + 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, + 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x01, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x22, 0x99, 0x01, 0x0a, 0x14, 0x54, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, 0x6c, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x80, 0x01, 0x0a, + 0x1d, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, 0x6c, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x19, 0x74, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, 0x6c, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, + 0x44, 0x0a, 0x18, 0x54, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, + 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xc9, 0x01, 0x0a, 0x12, 0x54, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, + 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x58, 0x0a, 0x0b, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x81, 0x02, 0x0a, 0x24, 0x51, 0x75, 0x65, 0x73, - 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x65, 0x6c, - 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x59, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, + 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x22, 0x13, 0x0a, 0x11, 0x54, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x22, 0x86, 0x01, 0x0a, 0x15, 0x54, 0x6f, 0x6f, 0x6c, 0x4e, + 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x48, 0x01, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x22, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x02, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x48, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, + 0x41, 0x02, 0x48, 0x01, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, - 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6b, 0x0a, 0x20, 0x51, - 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x48, 0x65, 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, - 0x28, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x75, 0x73, 0x65, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xae, 0x01, 0x0a, 0x22, 0x51, 0x75, 0x65, - 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x65, - 0x6c, 0x70, 0x66, 0x75, 0x6c, 0x6e, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, - 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x25, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, - 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, - 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xf4, 0x01, 0x0a, 0x21, 0x51, 0x75, - 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x43, - 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, - 0x67, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, - 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6e, - 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x66, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x51, 0x75, 0x65, - 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, - 0x72, 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x22, 0x81, 0x02, 0x0a, 0x24, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, - 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, - 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, - 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x01, 0x52, 0x09, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x07, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x01, 0x48, 0x02, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x2a, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x03, 0x52, 0x0b, 0x69, 0x6e, 0x73, - 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6b, 0x0a, 0x20, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, - 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, - 0x6e, 0x65, 0x73, 0x73, 0x53, 0x70, 0x65, 0x63, 0x12, 0x28, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x5f, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x22, 0xae, 0x01, 0x0a, 0x22, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, - 0x73, 0x77, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, - 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, - 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, - 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x28, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, - 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, - 0x63, 0x65, 0x22, 0xcd, 0x01, 0x0a, 0x14, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, 0x73, 0x65, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x5a, 0x0a, 0x0b, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, + 0x99, 0x01, 0x0a, 0x14, 0x54, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x80, 0x01, 0x0a, 0x1d, 0x74, 0x6f, 0x6f, + 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x59, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x17, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, 0x73, 0x65, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, - 0x0d, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x6a, 0x73, 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x22, 0x70, 0x0a, 0x13, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x16, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x14, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x22, 0x68, 0x0a, 0x15, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x77, 0x69, 0x73, 0x65, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x05, 0x73, - 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, - 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x65, - 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xca, 0x01, 0x0a, - 0x13, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, - 0x6e, 0x70, 0x75, 0x74, 0x12, 0x59, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, - 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x69, 0x72, - 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, - 0x58, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, - 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x4b, 0x0a, 0x16, 0x50, 0x61, 0x69, - 0x72, 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x6a, 0x73, - 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x6f, 0x0a, 0x12, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, - 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3e, 0x0a, 0x16, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x5f, 0x74, 0x65, - 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x48, 0x00, 0x52, 0x14, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x72, 0x6f, 0x6d, 0x70, - 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x19, 0x0a, 0x17, - 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x5f, 0x74, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x14, 0x50, 0x61, 0x69, 0x72, - 0x77, 0x69, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x5d, 0x0a, 0x0f, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x5f, 0x63, 0x68, 0x6f, - 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x61, 0x69, 0x72, - 0x77, 0x69, 0x73, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, - 0x0e, 0x70, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x12, - 0x25, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc9, 0x01, 0x0a, 0x12, 0x54, 0x6f, 0x6f, 0x6c, 0x43, - 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x58, 0x0a, - 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x59, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, - 0x6c, 0x43, 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x73, 0x22, 0x13, 0x0a, 0x11, 0x54, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, 0x6c, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x53, 0x70, 0x65, 0x63, 0x22, 0x86, 0x01, 0x0a, 0x15, 0x54, 0x6f, 0x6f, 0x6c, - 0x43, 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, - 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x09, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x48, 0x01, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x22, 0x99, 0x01, 0x0a, 0x14, 0x54, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x80, 0x01, 0x0a, 0x1d, 0x74, 0x6f, - 0x6f, 0x6c, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x19, 0x74, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x44, 0x0a, 0x18, 0x54, + 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x22, 0xe1, 0x01, 0x0a, 0x1a, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x12, 0x60, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x70, 0x65, + 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, + 0x65, 0x63, 0x12, 0x61, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x1b, 0x0a, 0x19, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x70, + 0x65, 0x63, 0x22, 0x8e, 0x01, 0x0a, 0x1d, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, + 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, + 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x01, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x22, 0xba, 0x01, 0x0a, 0x1c, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x12, 0x99, 0x01, 0x0a, 0x26, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x21, 0x74, + 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x22, 0x4c, 0x0a, 0x20, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xde, + 0x01, 0x0a, 0x19, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x4b, 0x56, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x5f, 0x0a, 0x0b, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x19, 0x74, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x44, 0x0a, 0x18, - 0x54, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, - 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, - 0x72, 0x65, 0x22, 0xc9, 0x01, 0x0a, 0x12, 0x54, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x58, 0x0a, 0x0b, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x70, - 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, - 0x70, 0x65, 0x63, 0x12, 0x59, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x4b, 0x56, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x60, 0x0a, + 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x4b, 0x56, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, + 0x56, 0x0a, 0x18, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x4b, 0x56, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3a, 0x0a, 0x17, 0x75, + 0x73, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x14, 0x75, 0x73, 0x65, 0x53, 0x74, 0x72, 0x69, 0x63, 0x74, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x8d, 0x01, 0x0a, 0x1c, 0x54, 0x6f, 0x6f, 0x6c, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x56, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, + 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, + 0x01, 0x01, 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x01, 0x52, 0x09, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xb6, 0x01, 0x0a, 0x1b, 0x54, 0x6f, 0x6f, 0x6c, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x56, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x96, 0x01, 0x0a, 0x25, 0x74, 0x6f, 0x6f, 0x6c, + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x6b, 0x76, 0x5f, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x56, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x20, + 0x74, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x76, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x22, 0x4b, 0x0a, 0x1f, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x4b, 0x56, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xde, 0x01, + 0x0a, 0x19, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x78, 0x61, 0x63, + 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x5f, 0x0a, 0x0b, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x78, 0x61, + 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x60, 0x0a, 0x09, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x78, 0x61, 0x63, + 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x1a, + 0x0a, 0x18, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x78, 0x61, 0x63, + 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x22, 0xa4, 0x02, 0x0a, 0x1c, 0x54, + 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x68, 0x0a, 0x14, 0x70, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x13, 0x70, + 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x14, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x01, 0x52, 0x13, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x88, 0x01, 0x01, 0x42, + 0x17, 0x0a, 0x15, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x72, + 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x79, 0x22, 0xb5, 0x01, 0x0a, 0x1b, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, + 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x12, 0x95, 0x01, 0x0a, 0x24, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, + 0x5f, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x78, 0x61, + 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x20, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x79, 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x4b, 0x0a, 0x1f, 0x54, 0x72, 0x61, + 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x05, + 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xe4, 0x01, 0x0a, 0x1b, 0x54, 0x72, 0x61, 0x6a, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x61, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, + 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x62, 0x0a, 0x09, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, + 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x1c, 0x0a, + 0x1a, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x22, 0xa6, 0x02, 0x0a, 0x1e, + 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x68, + 0x0a, 0x14, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6a, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, + 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, + 0x52, 0x13, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6a, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x14, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, - 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x13, - 0x0a, 0x11, 0x54, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, - 0x70, 0x65, 0x63, 0x22, 0x86, 0x01, 0x0a, 0x15, 0x54, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, - 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, - 0x01, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, - 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, - 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x99, 0x01, 0x0a, - 0x14, 0x54, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x80, 0x01, 0x0a, 0x1d, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x01, 0x52, 0x13, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x88, + 0x01, 0x01, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x65, 0x64, + 0x5f, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x17, 0x0a, 0x15, 0x5f, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x79, 0x22, 0xbe, 0x01, 0x0a, 0x1d, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x9c, 0x01, 0x0a, 0x27, 0x74, 0x72, 0x61, 0x6a, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x69, 0x6e, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x22, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x4d, 0x0a, 0x21, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x79, 0x49, 0x6e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, + 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x22, 0xe7, 0x01, 0x0a, 0x1c, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x79, 0x41, 0x6e, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x62, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, + 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x6e, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x63, 0x0a, 0x09, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, + 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x6e, 0x79, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x1d, + 0x0a, 0x1b, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x6e, 0x79, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x22, 0xa7, 0x02, + 0x0a, 0x1f, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x6e, 0x79, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x12, 0x68, 0x0a, 0x14, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x74, + 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x48, 0x00, 0x52, 0x13, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x65, 0x64, 0x54, 0x72, + 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x14, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x01, 0x52, 0x13, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x79, 0x88, 0x01, 0x01, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, + 0x74, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x17, + 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x72, 0x61, + 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x22, 0xc2, 0x01, 0x0a, 0x1e, 0x54, 0x72, 0x61, 0x6a, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x6e, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x9f, 0x01, 0x0a, 0x28, 0x74, + 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x61, 0x6e, 0x79, 0x5f, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x54, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x19, 0x74, - 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x44, 0x0a, 0x18, 0x54, 0x6f, 0x6f, 0x6c, - 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, - 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xe1, - 0x01, 0x0a, 0x1a, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x60, 0x0a, - 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, - 0x61, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x73, 0x22, 0x1b, 0x0a, 0x19, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x22, - 0x8e, 0x01, 0x0a, 0x1d, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, - 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x09, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x48, 0x01, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x22, 0xba, 0x01, 0x0a, 0x1c, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x73, 0x12, 0x99, 0x01, 0x0a, 0x26, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x65, 0x74, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x21, 0x74, 0x6f, 0x6f, 0x6c, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x4c, 0x0a, - 0x20, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x65, - 0x79, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, - 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, - 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xde, 0x01, 0x0a, 0x19, - 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x56, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x5f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, + 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x6e, 0x79, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x23, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x79, 0x41, 0x6e, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x4e, 0x0a, 0x22, + 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x41, 0x6e, 0x79, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, + 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xdb, 0x01, 0x0a, + 0x18, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x72, 0x65, 0x63, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x5e, 0x0a, 0x0b, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x56, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x60, 0x0a, 0x09, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, + 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x72, 0x65, 0x63, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5f, 0x0a, 0x09, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, + 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x54, 0x72, + 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x53, 0x70, 0x65, 0x63, 0x22, 0xa3, 0x02, 0x0a, 0x1b, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x79, 0x50, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x68, 0x0a, 0x14, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, + 0x65, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x13, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, + 0x65, 0x64, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, + 0x68, 0x0a, 0x14, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x72, 0x61, + 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x56, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x56, 0x0a, 0x18, - 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x56, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3a, 0x0a, 0x17, 0x75, 0x73, 0x65, 0x5f, - 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x14, - 0x75, 0x73, 0x65, 0x53, 0x74, 0x72, 0x69, 0x63, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x22, 0x8d, 0x01, 0x0a, 0x1c, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x56, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, - 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, - 0x26, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x01, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x65, 0x64, - 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x22, 0xb6, 0x01, 0x0a, 0x1b, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x56, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x73, 0x12, 0x96, 0x01, 0x0a, 0x25, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x70, 0x61, - 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x6b, 0x76, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, + 0x01, 0x52, 0x13, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6a, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x88, 0x01, 0x01, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x70, 0x72, + 0x65, 0x64, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x79, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x5f, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x22, 0xb0, 0x01, 0x0a, 0x1a, + 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x72, 0x65, 0x63, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x91, 0x01, 0x0a, 0x22, 0x74, + 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x79, 0x50, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x1f, 0x74, + 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x4a, + 0x0a, 0x1e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x72, 0x65, 0x63, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xd2, 0x01, 0x0a, 0x15, 0x54, + 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x12, 0x5b, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, + 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x53, 0x70, 0x65, 0x63, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, + 0x63, 0x12, 0x5c, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x65, 0x74, 0x65, 0x72, 0x4b, 0x56, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x20, 0x74, 0x6f, 0x6f, - 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x76, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x4b, 0x0a, - 0x1f, 0x54, 0x6f, 0x6f, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4b, 0x56, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x79, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, + 0x16, 0x0a, 0x14, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x63, + 0x61, 0x6c, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x22, 0xa0, 0x02, 0x0a, 0x18, 0x54, 0x72, 0x61, 0x6a, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x12, 0x68, 0x0a, 0x14, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x65, + 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x13, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x65, + 0x64, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x68, + 0x0a, 0x14, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6a, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, + 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x01, + 0x52, 0x13, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6a, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x88, 0x01, 0x01, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x70, 0x72, 0x65, + 0x64, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x79, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, + 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x22, 0xa4, 0x01, 0x0a, 0x17, 0x54, + 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x88, 0x01, 0x0a, 0x1f, 0x74, 0x72, 0x61, 0x6a, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x63, + 0x61, 0x6c, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x1c, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, + 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x22, 0x47, 0x0a, 0x1b, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, + 0x65, 0x63, 0x61, 0x6c, 0x6c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x2a, 0x57, 0x0a, 0x0e, 0x50, 0x61, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xe7, 0x01, 0x0a, 0x1c, 0x54, + 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x54, + 0x6f, 0x6f, 0x6c, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x62, 0x0a, 0x0b, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x69, 0x6e, + 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6f, 0x6c, 0x55, 0x73, 0x65, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x70, 0x65, 0x63, 0x12, + 0x63, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, + 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6f, 0x6c, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x73, 0x22, 0x52, 0x0a, 0x1b, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x79, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6f, 0x6c, 0x55, 0x73, 0x65, 0x53, + 0x70, 0x65, 0x63, 0x12, 0x25, 0x0a, 0x09, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x08, 0x74, + 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, + 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x1f, 0x54, 0x72, 0x61, + 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6f, + 0x6c, 0x55, 0x73, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x68, 0x0a, 0x14, + 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, + 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x13, + 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x79, 0x88, 0x01, 0x01, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, + 0x63, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x22, + 0xc2, 0x01, 0x0a, 0x1e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x69, + 0x6e, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6f, 0x6c, 0x55, 0x73, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x73, 0x12, 0x9f, 0x01, 0x0a, 0x28, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x79, 0x5f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x75, 0x73, + 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x79, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6f, 0x6c, 0x55, 0x73, 0x65, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x23, 0x74, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x69, 0x6e, 0x67, 0x6c, + 0x65, 0x54, 0x6f, 0x6f, 0x6c, 0x55, 0x73, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x22, 0x4e, 0x0a, 0x22, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x79, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x54, 0x6f, 0x6f, 0x6c, 0x55, 0x73, 0x65, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, + 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x22, 0x5b, 0x0a, 0x0a, 0x54, 0x72, 0x61, 0x6a, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x79, 0x12, 0x4d, 0x0a, 0x0a, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, + 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x74, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, 0x6c, + 0x73, 0x22, 0x77, 0x0a, 0x08, 0x54, 0x6f, 0x6f, 0x6c, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x25, 0x0a, + 0x09, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x48, 0x00, 0x52, 0x08, 0x74, 0x6f, 0x6f, 0x6c, 0x4e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0a, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x6e, 0x70, + 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x01, 0x52, + 0x09, 0x74, 0x6f, 0x6f, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x2a, 0x57, 0x0a, 0x0e, 0x50, 0x61, 0x69, 0x72, 0x77, 0x69, 0x73, 0x65, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x41, 0x49, 0x52, 0x57, 0x49, 0x53, 0x45, 0x5f, 0x43, 0x48, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, @@ -8115,7 +10352,7 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDescGZIP() } var file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes = make([]protoimpl.MessageInfo, 101) +var file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes = make([]protoimpl.MessageInfo, 133) var file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_goTypes = []any{ (PairwiseChoice)(0), // 0: google.cloud.aiplatform.v1beta1.PairwiseChoice (*EvaluateInstancesRequest)(nil), // 1: google.cloud.aiplatform.v1beta1.EvaluateInstancesRequest @@ -8219,6 +10456,38 @@ var file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_goTypes = []an (*ToolParameterKVMatchInstance)(nil), // 99: google.cloud.aiplatform.v1beta1.ToolParameterKVMatchInstance (*ToolParameterKVMatchResults)(nil), // 100: google.cloud.aiplatform.v1beta1.ToolParameterKVMatchResults (*ToolParameterKVMatchMetricValue)(nil), // 101: google.cloud.aiplatform.v1beta1.ToolParameterKVMatchMetricValue + (*TrajectoryExactMatchInput)(nil), // 102: google.cloud.aiplatform.v1beta1.TrajectoryExactMatchInput + (*TrajectoryExactMatchSpec)(nil), // 103: google.cloud.aiplatform.v1beta1.TrajectoryExactMatchSpec + (*TrajectoryExactMatchInstance)(nil), // 104: google.cloud.aiplatform.v1beta1.TrajectoryExactMatchInstance + (*TrajectoryExactMatchResults)(nil), // 105: google.cloud.aiplatform.v1beta1.TrajectoryExactMatchResults + (*TrajectoryExactMatchMetricValue)(nil), // 106: google.cloud.aiplatform.v1beta1.TrajectoryExactMatchMetricValue + (*TrajectoryInOrderMatchInput)(nil), // 107: google.cloud.aiplatform.v1beta1.TrajectoryInOrderMatchInput + (*TrajectoryInOrderMatchSpec)(nil), // 108: google.cloud.aiplatform.v1beta1.TrajectoryInOrderMatchSpec + (*TrajectoryInOrderMatchInstance)(nil), // 109: google.cloud.aiplatform.v1beta1.TrajectoryInOrderMatchInstance + (*TrajectoryInOrderMatchResults)(nil), // 110: google.cloud.aiplatform.v1beta1.TrajectoryInOrderMatchResults + (*TrajectoryInOrderMatchMetricValue)(nil), // 111: google.cloud.aiplatform.v1beta1.TrajectoryInOrderMatchMetricValue + (*TrajectoryAnyOrderMatchInput)(nil), // 112: google.cloud.aiplatform.v1beta1.TrajectoryAnyOrderMatchInput + (*TrajectoryAnyOrderMatchSpec)(nil), // 113: google.cloud.aiplatform.v1beta1.TrajectoryAnyOrderMatchSpec + (*TrajectoryAnyOrderMatchInstance)(nil), // 114: google.cloud.aiplatform.v1beta1.TrajectoryAnyOrderMatchInstance + (*TrajectoryAnyOrderMatchResults)(nil), // 115: google.cloud.aiplatform.v1beta1.TrajectoryAnyOrderMatchResults + (*TrajectoryAnyOrderMatchMetricValue)(nil), // 116: google.cloud.aiplatform.v1beta1.TrajectoryAnyOrderMatchMetricValue + (*TrajectoryPrecisionInput)(nil), // 117: google.cloud.aiplatform.v1beta1.TrajectoryPrecisionInput + (*TrajectoryPrecisionSpec)(nil), // 118: google.cloud.aiplatform.v1beta1.TrajectoryPrecisionSpec + (*TrajectoryPrecisionInstance)(nil), // 119: google.cloud.aiplatform.v1beta1.TrajectoryPrecisionInstance + (*TrajectoryPrecisionResults)(nil), // 120: google.cloud.aiplatform.v1beta1.TrajectoryPrecisionResults + (*TrajectoryPrecisionMetricValue)(nil), // 121: google.cloud.aiplatform.v1beta1.TrajectoryPrecisionMetricValue + (*TrajectoryRecallInput)(nil), // 122: google.cloud.aiplatform.v1beta1.TrajectoryRecallInput + (*TrajectoryRecallSpec)(nil), // 123: google.cloud.aiplatform.v1beta1.TrajectoryRecallSpec + (*TrajectoryRecallInstance)(nil), // 124: google.cloud.aiplatform.v1beta1.TrajectoryRecallInstance + (*TrajectoryRecallResults)(nil), // 125: google.cloud.aiplatform.v1beta1.TrajectoryRecallResults + (*TrajectoryRecallMetricValue)(nil), // 126: google.cloud.aiplatform.v1beta1.TrajectoryRecallMetricValue + (*TrajectorySingleToolUseInput)(nil), // 127: google.cloud.aiplatform.v1beta1.TrajectorySingleToolUseInput + (*TrajectorySingleToolUseSpec)(nil), // 128: google.cloud.aiplatform.v1beta1.TrajectorySingleToolUseSpec + (*TrajectorySingleToolUseInstance)(nil), // 129: google.cloud.aiplatform.v1beta1.TrajectorySingleToolUseInstance + (*TrajectorySingleToolUseResults)(nil), // 130: google.cloud.aiplatform.v1beta1.TrajectorySingleToolUseResults + (*TrajectorySingleToolUseMetricValue)(nil), // 131: google.cloud.aiplatform.v1beta1.TrajectorySingleToolUseMetricValue + (*Trajectory)(nil), // 132: google.cloud.aiplatform.v1beta1.Trajectory + (*ToolCall)(nil), // 133: google.cloud.aiplatform.v1beta1.ToolCall } var file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_depIdxs = []int32{ 3, // 0: google.cloud.aiplatform.v1beta1.EvaluateInstancesRequest.exact_match_input:type_name -> google.cloud.aiplatform.v1beta1.ExactMatchInput @@ -8244,92 +10513,134 @@ var file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_depIdxs = []in 87, // 20: google.cloud.aiplatform.v1beta1.EvaluateInstancesRequest.tool_name_match_input:type_name -> google.cloud.aiplatform.v1beta1.ToolNameMatchInput 92, // 21: google.cloud.aiplatform.v1beta1.EvaluateInstancesRequest.tool_parameter_key_match_input:type_name -> google.cloud.aiplatform.v1beta1.ToolParameterKeyMatchInput 97, // 22: google.cloud.aiplatform.v1beta1.EvaluateInstancesRequest.tool_parameter_kv_match_input:type_name -> google.cloud.aiplatform.v1beta1.ToolParameterKVMatchInput - 6, // 23: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.exact_match_results:type_name -> google.cloud.aiplatform.v1beta1.ExactMatchResults - 11, // 24: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.bleu_results:type_name -> google.cloud.aiplatform.v1beta1.BleuResults - 16, // 25: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.rouge_results:type_name -> google.cloud.aiplatform.v1beta1.RougeResults - 25, // 26: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.fluency_result:type_name -> google.cloud.aiplatform.v1beta1.FluencyResult - 21, // 27: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.coherence_result:type_name -> google.cloud.aiplatform.v1beta1.CoherenceResult - 29, // 28: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.safety_result:type_name -> google.cloud.aiplatform.v1beta1.SafetyResult - 33, // 29: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.groundedness_result:type_name -> google.cloud.aiplatform.v1beta1.GroundednessResult - 37, // 30: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.fulfillment_result:type_name -> google.cloud.aiplatform.v1beta1.FulfillmentResult - 41, // 31: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.summarization_quality_result:type_name -> google.cloud.aiplatform.v1beta1.SummarizationQualityResult - 45, // 32: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.pairwise_summarization_quality_result:type_name -> google.cloud.aiplatform.v1beta1.PairwiseSummarizationQualityResult - 49, // 33: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.summarization_helpfulness_result:type_name -> google.cloud.aiplatform.v1beta1.SummarizationHelpfulnessResult - 53, // 34: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.summarization_verbosity_result:type_name -> google.cloud.aiplatform.v1beta1.SummarizationVerbosityResult - 57, // 35: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.question_answering_quality_result:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringQualityResult - 61, // 36: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.pairwise_question_answering_quality_result:type_name -> google.cloud.aiplatform.v1beta1.PairwiseQuestionAnsweringQualityResult - 65, // 37: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.question_answering_relevance_result:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringRelevanceResult - 69, // 38: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.question_answering_helpfulness_result:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringHelpfulnessResult - 73, // 39: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.question_answering_correctness_result:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringCorrectnessResult - 77, // 40: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.pointwise_metric_result:type_name -> google.cloud.aiplatform.v1beta1.PointwiseMetricResult - 81, // 41: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.pairwise_metric_result:type_name -> google.cloud.aiplatform.v1beta1.PairwiseMetricResult - 85, // 42: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.tool_call_valid_results:type_name -> google.cloud.aiplatform.v1beta1.ToolCallValidResults - 90, // 43: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.tool_name_match_results:type_name -> google.cloud.aiplatform.v1beta1.ToolNameMatchResults - 95, // 44: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.tool_parameter_key_match_results:type_name -> google.cloud.aiplatform.v1beta1.ToolParameterKeyMatchResults - 100, // 45: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.tool_parameter_kv_match_results:type_name -> google.cloud.aiplatform.v1beta1.ToolParameterKVMatchResults - 5, // 46: google.cloud.aiplatform.v1beta1.ExactMatchInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.ExactMatchSpec - 4, // 47: google.cloud.aiplatform.v1beta1.ExactMatchInput.instances:type_name -> google.cloud.aiplatform.v1beta1.ExactMatchInstance - 7, // 48: google.cloud.aiplatform.v1beta1.ExactMatchResults.exact_match_metric_values:type_name -> google.cloud.aiplatform.v1beta1.ExactMatchMetricValue - 10, // 49: google.cloud.aiplatform.v1beta1.BleuInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.BleuSpec - 9, // 50: google.cloud.aiplatform.v1beta1.BleuInput.instances:type_name -> google.cloud.aiplatform.v1beta1.BleuInstance - 12, // 51: google.cloud.aiplatform.v1beta1.BleuResults.bleu_metric_values:type_name -> google.cloud.aiplatform.v1beta1.BleuMetricValue - 15, // 52: google.cloud.aiplatform.v1beta1.RougeInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.RougeSpec - 14, // 53: google.cloud.aiplatform.v1beta1.RougeInput.instances:type_name -> google.cloud.aiplatform.v1beta1.RougeInstance - 17, // 54: google.cloud.aiplatform.v1beta1.RougeResults.rouge_metric_values:type_name -> google.cloud.aiplatform.v1beta1.RougeMetricValue - 20, // 55: google.cloud.aiplatform.v1beta1.CoherenceInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.CoherenceSpec - 19, // 56: google.cloud.aiplatform.v1beta1.CoherenceInput.instance:type_name -> google.cloud.aiplatform.v1beta1.CoherenceInstance - 24, // 57: google.cloud.aiplatform.v1beta1.FluencyInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.FluencySpec - 23, // 58: google.cloud.aiplatform.v1beta1.FluencyInput.instance:type_name -> google.cloud.aiplatform.v1beta1.FluencyInstance - 28, // 59: google.cloud.aiplatform.v1beta1.SafetyInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.SafetySpec - 27, // 60: google.cloud.aiplatform.v1beta1.SafetyInput.instance:type_name -> google.cloud.aiplatform.v1beta1.SafetyInstance - 32, // 61: google.cloud.aiplatform.v1beta1.GroundednessInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.GroundednessSpec - 31, // 62: google.cloud.aiplatform.v1beta1.GroundednessInput.instance:type_name -> google.cloud.aiplatform.v1beta1.GroundednessInstance - 36, // 63: google.cloud.aiplatform.v1beta1.FulfillmentInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.FulfillmentSpec - 35, // 64: google.cloud.aiplatform.v1beta1.FulfillmentInput.instance:type_name -> google.cloud.aiplatform.v1beta1.FulfillmentInstance - 40, // 65: google.cloud.aiplatform.v1beta1.SummarizationQualityInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.SummarizationQualitySpec - 39, // 66: google.cloud.aiplatform.v1beta1.SummarizationQualityInput.instance:type_name -> google.cloud.aiplatform.v1beta1.SummarizationQualityInstance - 44, // 67: google.cloud.aiplatform.v1beta1.PairwiseSummarizationQualityInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.PairwiseSummarizationQualitySpec - 43, // 68: google.cloud.aiplatform.v1beta1.PairwiseSummarizationQualityInput.instance:type_name -> google.cloud.aiplatform.v1beta1.PairwiseSummarizationQualityInstance - 0, // 69: google.cloud.aiplatform.v1beta1.PairwiseSummarizationQualityResult.pairwise_choice:type_name -> google.cloud.aiplatform.v1beta1.PairwiseChoice - 48, // 70: google.cloud.aiplatform.v1beta1.SummarizationHelpfulnessInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.SummarizationHelpfulnessSpec - 47, // 71: google.cloud.aiplatform.v1beta1.SummarizationHelpfulnessInput.instance:type_name -> google.cloud.aiplatform.v1beta1.SummarizationHelpfulnessInstance - 52, // 72: google.cloud.aiplatform.v1beta1.SummarizationVerbosityInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.SummarizationVerbositySpec - 51, // 73: google.cloud.aiplatform.v1beta1.SummarizationVerbosityInput.instance:type_name -> google.cloud.aiplatform.v1beta1.SummarizationVerbosityInstance - 56, // 74: google.cloud.aiplatform.v1beta1.QuestionAnsweringQualityInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringQualitySpec - 55, // 75: google.cloud.aiplatform.v1beta1.QuestionAnsweringQualityInput.instance:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringQualityInstance - 60, // 76: google.cloud.aiplatform.v1beta1.PairwiseQuestionAnsweringQualityInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.PairwiseQuestionAnsweringQualitySpec - 59, // 77: google.cloud.aiplatform.v1beta1.PairwiseQuestionAnsweringQualityInput.instance:type_name -> google.cloud.aiplatform.v1beta1.PairwiseQuestionAnsweringQualityInstance - 0, // 78: google.cloud.aiplatform.v1beta1.PairwiseQuestionAnsweringQualityResult.pairwise_choice:type_name -> google.cloud.aiplatform.v1beta1.PairwiseChoice - 64, // 79: google.cloud.aiplatform.v1beta1.QuestionAnsweringRelevanceInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringRelevanceSpec - 63, // 80: google.cloud.aiplatform.v1beta1.QuestionAnsweringRelevanceInput.instance:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringRelevanceInstance - 68, // 81: google.cloud.aiplatform.v1beta1.QuestionAnsweringHelpfulnessInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringHelpfulnessSpec - 67, // 82: google.cloud.aiplatform.v1beta1.QuestionAnsweringHelpfulnessInput.instance:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringHelpfulnessInstance - 72, // 83: google.cloud.aiplatform.v1beta1.QuestionAnsweringCorrectnessInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringCorrectnessSpec - 71, // 84: google.cloud.aiplatform.v1beta1.QuestionAnsweringCorrectnessInput.instance:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringCorrectnessInstance - 76, // 85: google.cloud.aiplatform.v1beta1.PointwiseMetricInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.PointwiseMetricSpec - 75, // 86: google.cloud.aiplatform.v1beta1.PointwiseMetricInput.instance:type_name -> google.cloud.aiplatform.v1beta1.PointwiseMetricInstance - 80, // 87: google.cloud.aiplatform.v1beta1.PairwiseMetricInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.PairwiseMetricSpec - 79, // 88: google.cloud.aiplatform.v1beta1.PairwiseMetricInput.instance:type_name -> google.cloud.aiplatform.v1beta1.PairwiseMetricInstance - 0, // 89: google.cloud.aiplatform.v1beta1.PairwiseMetricResult.pairwise_choice:type_name -> google.cloud.aiplatform.v1beta1.PairwiseChoice - 83, // 90: google.cloud.aiplatform.v1beta1.ToolCallValidInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.ToolCallValidSpec - 84, // 91: google.cloud.aiplatform.v1beta1.ToolCallValidInput.instances:type_name -> google.cloud.aiplatform.v1beta1.ToolCallValidInstance - 86, // 92: google.cloud.aiplatform.v1beta1.ToolCallValidResults.tool_call_valid_metric_values:type_name -> google.cloud.aiplatform.v1beta1.ToolCallValidMetricValue - 88, // 93: google.cloud.aiplatform.v1beta1.ToolNameMatchInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.ToolNameMatchSpec - 89, // 94: google.cloud.aiplatform.v1beta1.ToolNameMatchInput.instances:type_name -> google.cloud.aiplatform.v1beta1.ToolNameMatchInstance - 91, // 95: google.cloud.aiplatform.v1beta1.ToolNameMatchResults.tool_name_match_metric_values:type_name -> google.cloud.aiplatform.v1beta1.ToolNameMatchMetricValue - 93, // 96: google.cloud.aiplatform.v1beta1.ToolParameterKeyMatchInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.ToolParameterKeyMatchSpec - 94, // 97: google.cloud.aiplatform.v1beta1.ToolParameterKeyMatchInput.instances:type_name -> google.cloud.aiplatform.v1beta1.ToolParameterKeyMatchInstance - 96, // 98: google.cloud.aiplatform.v1beta1.ToolParameterKeyMatchResults.tool_parameter_key_match_metric_values:type_name -> google.cloud.aiplatform.v1beta1.ToolParameterKeyMatchMetricValue - 98, // 99: google.cloud.aiplatform.v1beta1.ToolParameterKVMatchInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.ToolParameterKVMatchSpec - 99, // 100: google.cloud.aiplatform.v1beta1.ToolParameterKVMatchInput.instances:type_name -> google.cloud.aiplatform.v1beta1.ToolParameterKVMatchInstance - 101, // 101: google.cloud.aiplatform.v1beta1.ToolParameterKVMatchResults.tool_parameter_kv_match_metric_values:type_name -> google.cloud.aiplatform.v1beta1.ToolParameterKVMatchMetricValue - 1, // 102: google.cloud.aiplatform.v1beta1.EvaluationService.EvaluateInstances:input_type -> google.cloud.aiplatform.v1beta1.EvaluateInstancesRequest - 2, // 103: google.cloud.aiplatform.v1beta1.EvaluationService.EvaluateInstances:output_type -> google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse - 103, // [103:104] is the sub-list for method output_type - 102, // [102:103] is the sub-list for method input_type - 102, // [102:102] is the sub-list for extension type_name - 102, // [102:102] is the sub-list for extension extendee - 0, // [0:102] is the sub-list for field type_name + 102, // 23: google.cloud.aiplatform.v1beta1.EvaluateInstancesRequest.trajectory_exact_match_input:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryExactMatchInput + 107, // 24: google.cloud.aiplatform.v1beta1.EvaluateInstancesRequest.trajectory_in_order_match_input:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryInOrderMatchInput + 112, // 25: google.cloud.aiplatform.v1beta1.EvaluateInstancesRequest.trajectory_any_order_match_input:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryAnyOrderMatchInput + 117, // 26: google.cloud.aiplatform.v1beta1.EvaluateInstancesRequest.trajectory_precision_input:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryPrecisionInput + 122, // 27: google.cloud.aiplatform.v1beta1.EvaluateInstancesRequest.trajectory_recall_input:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryRecallInput + 127, // 28: google.cloud.aiplatform.v1beta1.EvaluateInstancesRequest.trajectory_single_tool_use_input:type_name -> google.cloud.aiplatform.v1beta1.TrajectorySingleToolUseInput + 6, // 29: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.exact_match_results:type_name -> google.cloud.aiplatform.v1beta1.ExactMatchResults + 11, // 30: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.bleu_results:type_name -> google.cloud.aiplatform.v1beta1.BleuResults + 16, // 31: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.rouge_results:type_name -> google.cloud.aiplatform.v1beta1.RougeResults + 25, // 32: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.fluency_result:type_name -> google.cloud.aiplatform.v1beta1.FluencyResult + 21, // 33: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.coherence_result:type_name -> google.cloud.aiplatform.v1beta1.CoherenceResult + 29, // 34: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.safety_result:type_name -> google.cloud.aiplatform.v1beta1.SafetyResult + 33, // 35: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.groundedness_result:type_name -> google.cloud.aiplatform.v1beta1.GroundednessResult + 37, // 36: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.fulfillment_result:type_name -> google.cloud.aiplatform.v1beta1.FulfillmentResult + 41, // 37: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.summarization_quality_result:type_name -> google.cloud.aiplatform.v1beta1.SummarizationQualityResult + 45, // 38: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.pairwise_summarization_quality_result:type_name -> google.cloud.aiplatform.v1beta1.PairwiseSummarizationQualityResult + 49, // 39: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.summarization_helpfulness_result:type_name -> google.cloud.aiplatform.v1beta1.SummarizationHelpfulnessResult + 53, // 40: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.summarization_verbosity_result:type_name -> google.cloud.aiplatform.v1beta1.SummarizationVerbosityResult + 57, // 41: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.question_answering_quality_result:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringQualityResult + 61, // 42: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.pairwise_question_answering_quality_result:type_name -> google.cloud.aiplatform.v1beta1.PairwiseQuestionAnsweringQualityResult + 65, // 43: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.question_answering_relevance_result:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringRelevanceResult + 69, // 44: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.question_answering_helpfulness_result:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringHelpfulnessResult + 73, // 45: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.question_answering_correctness_result:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringCorrectnessResult + 77, // 46: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.pointwise_metric_result:type_name -> google.cloud.aiplatform.v1beta1.PointwiseMetricResult + 81, // 47: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.pairwise_metric_result:type_name -> google.cloud.aiplatform.v1beta1.PairwiseMetricResult + 85, // 48: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.tool_call_valid_results:type_name -> google.cloud.aiplatform.v1beta1.ToolCallValidResults + 90, // 49: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.tool_name_match_results:type_name -> google.cloud.aiplatform.v1beta1.ToolNameMatchResults + 95, // 50: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.tool_parameter_key_match_results:type_name -> google.cloud.aiplatform.v1beta1.ToolParameterKeyMatchResults + 100, // 51: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.tool_parameter_kv_match_results:type_name -> google.cloud.aiplatform.v1beta1.ToolParameterKVMatchResults + 105, // 52: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.trajectory_exact_match_results:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryExactMatchResults + 110, // 53: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.trajectory_in_order_match_results:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryInOrderMatchResults + 115, // 54: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.trajectory_any_order_match_results:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryAnyOrderMatchResults + 120, // 55: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.trajectory_precision_results:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryPrecisionResults + 125, // 56: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.trajectory_recall_results:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryRecallResults + 130, // 57: google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse.trajectory_single_tool_use_results:type_name -> google.cloud.aiplatform.v1beta1.TrajectorySingleToolUseResults + 5, // 58: google.cloud.aiplatform.v1beta1.ExactMatchInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.ExactMatchSpec + 4, // 59: google.cloud.aiplatform.v1beta1.ExactMatchInput.instances:type_name -> google.cloud.aiplatform.v1beta1.ExactMatchInstance + 7, // 60: google.cloud.aiplatform.v1beta1.ExactMatchResults.exact_match_metric_values:type_name -> google.cloud.aiplatform.v1beta1.ExactMatchMetricValue + 10, // 61: google.cloud.aiplatform.v1beta1.BleuInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.BleuSpec + 9, // 62: google.cloud.aiplatform.v1beta1.BleuInput.instances:type_name -> google.cloud.aiplatform.v1beta1.BleuInstance + 12, // 63: google.cloud.aiplatform.v1beta1.BleuResults.bleu_metric_values:type_name -> google.cloud.aiplatform.v1beta1.BleuMetricValue + 15, // 64: google.cloud.aiplatform.v1beta1.RougeInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.RougeSpec + 14, // 65: google.cloud.aiplatform.v1beta1.RougeInput.instances:type_name -> google.cloud.aiplatform.v1beta1.RougeInstance + 17, // 66: google.cloud.aiplatform.v1beta1.RougeResults.rouge_metric_values:type_name -> google.cloud.aiplatform.v1beta1.RougeMetricValue + 20, // 67: google.cloud.aiplatform.v1beta1.CoherenceInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.CoherenceSpec + 19, // 68: google.cloud.aiplatform.v1beta1.CoherenceInput.instance:type_name -> google.cloud.aiplatform.v1beta1.CoherenceInstance + 24, // 69: google.cloud.aiplatform.v1beta1.FluencyInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.FluencySpec + 23, // 70: google.cloud.aiplatform.v1beta1.FluencyInput.instance:type_name -> google.cloud.aiplatform.v1beta1.FluencyInstance + 28, // 71: google.cloud.aiplatform.v1beta1.SafetyInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.SafetySpec + 27, // 72: google.cloud.aiplatform.v1beta1.SafetyInput.instance:type_name -> google.cloud.aiplatform.v1beta1.SafetyInstance + 32, // 73: google.cloud.aiplatform.v1beta1.GroundednessInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.GroundednessSpec + 31, // 74: google.cloud.aiplatform.v1beta1.GroundednessInput.instance:type_name -> google.cloud.aiplatform.v1beta1.GroundednessInstance + 36, // 75: google.cloud.aiplatform.v1beta1.FulfillmentInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.FulfillmentSpec + 35, // 76: google.cloud.aiplatform.v1beta1.FulfillmentInput.instance:type_name -> google.cloud.aiplatform.v1beta1.FulfillmentInstance + 40, // 77: google.cloud.aiplatform.v1beta1.SummarizationQualityInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.SummarizationQualitySpec + 39, // 78: google.cloud.aiplatform.v1beta1.SummarizationQualityInput.instance:type_name -> google.cloud.aiplatform.v1beta1.SummarizationQualityInstance + 44, // 79: google.cloud.aiplatform.v1beta1.PairwiseSummarizationQualityInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.PairwiseSummarizationQualitySpec + 43, // 80: google.cloud.aiplatform.v1beta1.PairwiseSummarizationQualityInput.instance:type_name -> google.cloud.aiplatform.v1beta1.PairwiseSummarizationQualityInstance + 0, // 81: google.cloud.aiplatform.v1beta1.PairwiseSummarizationQualityResult.pairwise_choice:type_name -> google.cloud.aiplatform.v1beta1.PairwiseChoice + 48, // 82: google.cloud.aiplatform.v1beta1.SummarizationHelpfulnessInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.SummarizationHelpfulnessSpec + 47, // 83: google.cloud.aiplatform.v1beta1.SummarizationHelpfulnessInput.instance:type_name -> google.cloud.aiplatform.v1beta1.SummarizationHelpfulnessInstance + 52, // 84: google.cloud.aiplatform.v1beta1.SummarizationVerbosityInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.SummarizationVerbositySpec + 51, // 85: google.cloud.aiplatform.v1beta1.SummarizationVerbosityInput.instance:type_name -> google.cloud.aiplatform.v1beta1.SummarizationVerbosityInstance + 56, // 86: google.cloud.aiplatform.v1beta1.QuestionAnsweringQualityInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringQualitySpec + 55, // 87: google.cloud.aiplatform.v1beta1.QuestionAnsweringQualityInput.instance:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringQualityInstance + 60, // 88: google.cloud.aiplatform.v1beta1.PairwiseQuestionAnsweringQualityInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.PairwiseQuestionAnsweringQualitySpec + 59, // 89: google.cloud.aiplatform.v1beta1.PairwiseQuestionAnsweringQualityInput.instance:type_name -> google.cloud.aiplatform.v1beta1.PairwiseQuestionAnsweringQualityInstance + 0, // 90: google.cloud.aiplatform.v1beta1.PairwiseQuestionAnsweringQualityResult.pairwise_choice:type_name -> google.cloud.aiplatform.v1beta1.PairwiseChoice + 64, // 91: google.cloud.aiplatform.v1beta1.QuestionAnsweringRelevanceInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringRelevanceSpec + 63, // 92: google.cloud.aiplatform.v1beta1.QuestionAnsweringRelevanceInput.instance:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringRelevanceInstance + 68, // 93: google.cloud.aiplatform.v1beta1.QuestionAnsweringHelpfulnessInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringHelpfulnessSpec + 67, // 94: google.cloud.aiplatform.v1beta1.QuestionAnsweringHelpfulnessInput.instance:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringHelpfulnessInstance + 72, // 95: google.cloud.aiplatform.v1beta1.QuestionAnsweringCorrectnessInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringCorrectnessSpec + 71, // 96: google.cloud.aiplatform.v1beta1.QuestionAnsweringCorrectnessInput.instance:type_name -> google.cloud.aiplatform.v1beta1.QuestionAnsweringCorrectnessInstance + 76, // 97: google.cloud.aiplatform.v1beta1.PointwiseMetricInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.PointwiseMetricSpec + 75, // 98: google.cloud.aiplatform.v1beta1.PointwiseMetricInput.instance:type_name -> google.cloud.aiplatform.v1beta1.PointwiseMetricInstance + 80, // 99: google.cloud.aiplatform.v1beta1.PairwiseMetricInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.PairwiseMetricSpec + 79, // 100: google.cloud.aiplatform.v1beta1.PairwiseMetricInput.instance:type_name -> google.cloud.aiplatform.v1beta1.PairwiseMetricInstance + 0, // 101: google.cloud.aiplatform.v1beta1.PairwiseMetricResult.pairwise_choice:type_name -> google.cloud.aiplatform.v1beta1.PairwiseChoice + 83, // 102: google.cloud.aiplatform.v1beta1.ToolCallValidInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.ToolCallValidSpec + 84, // 103: google.cloud.aiplatform.v1beta1.ToolCallValidInput.instances:type_name -> google.cloud.aiplatform.v1beta1.ToolCallValidInstance + 86, // 104: google.cloud.aiplatform.v1beta1.ToolCallValidResults.tool_call_valid_metric_values:type_name -> google.cloud.aiplatform.v1beta1.ToolCallValidMetricValue + 88, // 105: google.cloud.aiplatform.v1beta1.ToolNameMatchInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.ToolNameMatchSpec + 89, // 106: google.cloud.aiplatform.v1beta1.ToolNameMatchInput.instances:type_name -> google.cloud.aiplatform.v1beta1.ToolNameMatchInstance + 91, // 107: google.cloud.aiplatform.v1beta1.ToolNameMatchResults.tool_name_match_metric_values:type_name -> google.cloud.aiplatform.v1beta1.ToolNameMatchMetricValue + 93, // 108: google.cloud.aiplatform.v1beta1.ToolParameterKeyMatchInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.ToolParameterKeyMatchSpec + 94, // 109: google.cloud.aiplatform.v1beta1.ToolParameterKeyMatchInput.instances:type_name -> google.cloud.aiplatform.v1beta1.ToolParameterKeyMatchInstance + 96, // 110: google.cloud.aiplatform.v1beta1.ToolParameterKeyMatchResults.tool_parameter_key_match_metric_values:type_name -> google.cloud.aiplatform.v1beta1.ToolParameterKeyMatchMetricValue + 98, // 111: google.cloud.aiplatform.v1beta1.ToolParameterKVMatchInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.ToolParameterKVMatchSpec + 99, // 112: google.cloud.aiplatform.v1beta1.ToolParameterKVMatchInput.instances:type_name -> google.cloud.aiplatform.v1beta1.ToolParameterKVMatchInstance + 101, // 113: google.cloud.aiplatform.v1beta1.ToolParameterKVMatchResults.tool_parameter_kv_match_metric_values:type_name -> google.cloud.aiplatform.v1beta1.ToolParameterKVMatchMetricValue + 103, // 114: google.cloud.aiplatform.v1beta1.TrajectoryExactMatchInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryExactMatchSpec + 104, // 115: google.cloud.aiplatform.v1beta1.TrajectoryExactMatchInput.instances:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryExactMatchInstance + 132, // 116: google.cloud.aiplatform.v1beta1.TrajectoryExactMatchInstance.predicted_trajectory:type_name -> google.cloud.aiplatform.v1beta1.Trajectory + 132, // 117: google.cloud.aiplatform.v1beta1.TrajectoryExactMatchInstance.reference_trajectory:type_name -> google.cloud.aiplatform.v1beta1.Trajectory + 106, // 118: google.cloud.aiplatform.v1beta1.TrajectoryExactMatchResults.trajectory_exact_match_metric_values:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryExactMatchMetricValue + 108, // 119: google.cloud.aiplatform.v1beta1.TrajectoryInOrderMatchInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryInOrderMatchSpec + 109, // 120: google.cloud.aiplatform.v1beta1.TrajectoryInOrderMatchInput.instances:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryInOrderMatchInstance + 132, // 121: google.cloud.aiplatform.v1beta1.TrajectoryInOrderMatchInstance.predicted_trajectory:type_name -> google.cloud.aiplatform.v1beta1.Trajectory + 132, // 122: google.cloud.aiplatform.v1beta1.TrajectoryInOrderMatchInstance.reference_trajectory:type_name -> google.cloud.aiplatform.v1beta1.Trajectory + 111, // 123: google.cloud.aiplatform.v1beta1.TrajectoryInOrderMatchResults.trajectory_in_order_match_metric_values:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryInOrderMatchMetricValue + 113, // 124: google.cloud.aiplatform.v1beta1.TrajectoryAnyOrderMatchInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryAnyOrderMatchSpec + 114, // 125: google.cloud.aiplatform.v1beta1.TrajectoryAnyOrderMatchInput.instances:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryAnyOrderMatchInstance + 132, // 126: google.cloud.aiplatform.v1beta1.TrajectoryAnyOrderMatchInstance.predicted_trajectory:type_name -> google.cloud.aiplatform.v1beta1.Trajectory + 132, // 127: google.cloud.aiplatform.v1beta1.TrajectoryAnyOrderMatchInstance.reference_trajectory:type_name -> google.cloud.aiplatform.v1beta1.Trajectory + 116, // 128: google.cloud.aiplatform.v1beta1.TrajectoryAnyOrderMatchResults.trajectory_any_order_match_metric_values:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryAnyOrderMatchMetricValue + 118, // 129: google.cloud.aiplatform.v1beta1.TrajectoryPrecisionInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryPrecisionSpec + 119, // 130: google.cloud.aiplatform.v1beta1.TrajectoryPrecisionInput.instances:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryPrecisionInstance + 132, // 131: google.cloud.aiplatform.v1beta1.TrajectoryPrecisionInstance.predicted_trajectory:type_name -> google.cloud.aiplatform.v1beta1.Trajectory + 132, // 132: google.cloud.aiplatform.v1beta1.TrajectoryPrecisionInstance.reference_trajectory:type_name -> google.cloud.aiplatform.v1beta1.Trajectory + 121, // 133: google.cloud.aiplatform.v1beta1.TrajectoryPrecisionResults.trajectory_precision_metric_values:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryPrecisionMetricValue + 123, // 134: google.cloud.aiplatform.v1beta1.TrajectoryRecallInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryRecallSpec + 124, // 135: google.cloud.aiplatform.v1beta1.TrajectoryRecallInput.instances:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryRecallInstance + 132, // 136: google.cloud.aiplatform.v1beta1.TrajectoryRecallInstance.predicted_trajectory:type_name -> google.cloud.aiplatform.v1beta1.Trajectory + 132, // 137: google.cloud.aiplatform.v1beta1.TrajectoryRecallInstance.reference_trajectory:type_name -> google.cloud.aiplatform.v1beta1.Trajectory + 126, // 138: google.cloud.aiplatform.v1beta1.TrajectoryRecallResults.trajectory_recall_metric_values:type_name -> google.cloud.aiplatform.v1beta1.TrajectoryRecallMetricValue + 128, // 139: google.cloud.aiplatform.v1beta1.TrajectorySingleToolUseInput.metric_spec:type_name -> google.cloud.aiplatform.v1beta1.TrajectorySingleToolUseSpec + 129, // 140: google.cloud.aiplatform.v1beta1.TrajectorySingleToolUseInput.instances:type_name -> google.cloud.aiplatform.v1beta1.TrajectorySingleToolUseInstance + 132, // 141: google.cloud.aiplatform.v1beta1.TrajectorySingleToolUseInstance.predicted_trajectory:type_name -> google.cloud.aiplatform.v1beta1.Trajectory + 131, // 142: google.cloud.aiplatform.v1beta1.TrajectorySingleToolUseResults.trajectory_single_tool_use_metric_values:type_name -> google.cloud.aiplatform.v1beta1.TrajectorySingleToolUseMetricValue + 133, // 143: google.cloud.aiplatform.v1beta1.Trajectory.tool_calls:type_name -> google.cloud.aiplatform.v1beta1.ToolCall + 1, // 144: google.cloud.aiplatform.v1beta1.EvaluationService.EvaluateInstances:input_type -> google.cloud.aiplatform.v1beta1.EvaluateInstancesRequest + 2, // 145: google.cloud.aiplatform.v1beta1.EvaluationService.EvaluateInstances:output_type -> google.cloud.aiplatform.v1beta1.EvaluateInstancesResponse + 145, // [145:146] is the sub-list for method output_type + 144, // [144:145] is the sub-list for method input_type + 144, // [144:144] is the sub-list for extension type_name + 144, // [144:144] is the sub-list for extension extendee + 0, // [0:144] is the sub-list for field type_name } func init() { file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() } @@ -8350,8 +10661,224 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*EvaluateInstancesResponse); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*EvaluateInstancesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*ExactMatchInput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*ExactMatchInstance); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*ExactMatchSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*ExactMatchResults); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*ExactMatchMetricValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[7].Exporter = func(v any, i int) any { + switch v := v.(*BleuInput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[8].Exporter = func(v any, i int) any { + switch v := v.(*BleuInstance); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[9].Exporter = func(v any, i int) any { + switch v := v.(*BleuSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[10].Exporter = func(v any, i int) any { + switch v := v.(*BleuResults); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[11].Exporter = func(v any, i int) any { + switch v := v.(*BleuMetricValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[12].Exporter = func(v any, i int) any { + switch v := v.(*RougeInput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[13].Exporter = func(v any, i int) any { + switch v := v.(*RougeInstance); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[14].Exporter = func(v any, i int) any { + switch v := v.(*RougeSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[15].Exporter = func(v any, i int) any { + switch v := v.(*RougeResults); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[16].Exporter = func(v any, i int) any { + switch v := v.(*RougeMetricValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[17].Exporter = func(v any, i int) any { + switch v := v.(*CoherenceInput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[18].Exporter = func(v any, i int) any { + switch v := v.(*CoherenceInstance); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[19].Exporter = func(v any, i int) any { + switch v := v.(*CoherenceSpec); i { case 0: return &v.state case 1: @@ -8362,8 +10889,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ExactMatchInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[20].Exporter = func(v any, i int) any { + switch v := v.(*CoherenceResult); i { case 0: return &v.state case 1: @@ -8374,8 +10901,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ExactMatchInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[21].Exporter = func(v any, i int) any { + switch v := v.(*FluencyInput); i { case 0: return &v.state case 1: @@ -8386,8 +10913,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*ExactMatchSpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[22].Exporter = func(v any, i int) any { + switch v := v.(*FluencyInstance); i { case 0: return &v.state case 1: @@ -8398,8 +10925,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*ExactMatchResults); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[23].Exporter = func(v any, i int) any { + switch v := v.(*FluencySpec); i { case 0: return &v.state case 1: @@ -8410,8 +10937,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*ExactMatchMetricValue); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[24].Exporter = func(v any, i int) any { + switch v := v.(*FluencyResult); i { case 0: return &v.state case 1: @@ -8422,8 +10949,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*BleuInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[25].Exporter = func(v any, i int) any { + switch v := v.(*SafetyInput); i { case 0: return &v.state case 1: @@ -8434,8 +10961,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*BleuInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[26].Exporter = func(v any, i int) any { + switch v := v.(*SafetyInstance); i { case 0: return &v.state case 1: @@ -8446,8 +10973,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*BleuSpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[27].Exporter = func(v any, i int) any { + switch v := v.(*SafetySpec); i { case 0: return &v.state case 1: @@ -8458,8 +10985,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*BleuResults); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[28].Exporter = func(v any, i int) any { + switch v := v.(*SafetyResult); i { case 0: return &v.state case 1: @@ -8470,8 +10997,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*BleuMetricValue); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[29].Exporter = func(v any, i int) any { + switch v := v.(*GroundednessInput); i { case 0: return &v.state case 1: @@ -8482,8 +11009,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*RougeInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[30].Exporter = func(v any, i int) any { + switch v := v.(*GroundednessInstance); i { case 0: return &v.state case 1: @@ -8494,8 +11021,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*RougeInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[31].Exporter = func(v any, i int) any { + switch v := v.(*GroundednessSpec); i { case 0: return &v.state case 1: @@ -8506,8 +11033,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*RougeSpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[32].Exporter = func(v any, i int) any { + switch v := v.(*GroundednessResult); i { case 0: return &v.state case 1: @@ -8518,8 +11045,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*RougeResults); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[33].Exporter = func(v any, i int) any { + switch v := v.(*FulfillmentInput); i { case 0: return &v.state case 1: @@ -8530,8 +11057,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*RougeMetricValue); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[34].Exporter = func(v any, i int) any { + switch v := v.(*FulfillmentInstance); i { case 0: return &v.state case 1: @@ -8542,8 +11069,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*CoherenceInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[35].Exporter = func(v any, i int) any { + switch v := v.(*FulfillmentSpec); i { case 0: return &v.state case 1: @@ -8554,8 +11081,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*CoherenceInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[36].Exporter = func(v any, i int) any { + switch v := v.(*FulfillmentResult); i { case 0: return &v.state case 1: @@ -8566,8 +11093,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*CoherenceSpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[37].Exporter = func(v any, i int) any { + switch v := v.(*SummarizationQualityInput); i { case 0: return &v.state case 1: @@ -8578,8 +11105,176 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*CoherenceResult); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[38].Exporter = func(v any, i int) any { + switch v := v.(*SummarizationQualityInstance); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[39].Exporter = func(v any, i int) any { + switch v := v.(*SummarizationQualitySpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[40].Exporter = func(v any, i int) any { + switch v := v.(*SummarizationQualityResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[41].Exporter = func(v any, i int) any { + switch v := v.(*PairwiseSummarizationQualityInput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[42].Exporter = func(v any, i int) any { + switch v := v.(*PairwiseSummarizationQualityInstance); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[43].Exporter = func(v any, i int) any { + switch v := v.(*PairwiseSummarizationQualitySpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[44].Exporter = func(v any, i int) any { + switch v := v.(*PairwiseSummarizationQualityResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[45].Exporter = func(v any, i int) any { + switch v := v.(*SummarizationHelpfulnessInput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[46].Exporter = func(v any, i int) any { + switch v := v.(*SummarizationHelpfulnessInstance); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[47].Exporter = func(v any, i int) any { + switch v := v.(*SummarizationHelpfulnessSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[48].Exporter = func(v any, i int) any { + switch v := v.(*SummarizationHelpfulnessResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[49].Exporter = func(v any, i int) any { + switch v := v.(*SummarizationVerbosityInput); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[50].Exporter = func(v any, i int) any { + switch v := v.(*SummarizationVerbosityInstance); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[51].Exporter = func(v any, i int) any { + switch v := v.(*SummarizationVerbositySpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[52].Exporter = func(v any, i int) any { + switch v := v.(*SummarizationVerbosityResult); i { case 0: return &v.state case 1: @@ -8590,8 +11285,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*FluencyInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[53].Exporter = func(v any, i int) any { + switch v := v.(*QuestionAnsweringQualityInput); i { case 0: return &v.state case 1: @@ -8602,8 +11297,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*FluencyInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[54].Exporter = func(v any, i int) any { + switch v := v.(*QuestionAnsweringQualityInstance); i { case 0: return &v.state case 1: @@ -8614,8 +11309,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*FluencySpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[55].Exporter = func(v any, i int) any { + switch v := v.(*QuestionAnsweringQualitySpec); i { case 0: return &v.state case 1: @@ -8626,8 +11321,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*FluencyResult); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[56].Exporter = func(v any, i int) any { + switch v := v.(*QuestionAnsweringQualityResult); i { case 0: return &v.state case 1: @@ -8638,8 +11333,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[25].Exporter = func(v any, i int) any { - switch v := v.(*SafetyInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[57].Exporter = func(v any, i int) any { + switch v := v.(*PairwiseQuestionAnsweringQualityInput); i { case 0: return &v.state case 1: @@ -8650,8 +11345,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[26].Exporter = func(v any, i int) any { - switch v := v.(*SafetyInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[58].Exporter = func(v any, i int) any { + switch v := v.(*PairwiseQuestionAnsweringQualityInstance); i { case 0: return &v.state case 1: @@ -8662,8 +11357,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[27].Exporter = func(v any, i int) any { - switch v := v.(*SafetySpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[59].Exporter = func(v any, i int) any { + switch v := v.(*PairwiseQuestionAnsweringQualitySpec); i { case 0: return &v.state case 1: @@ -8674,8 +11369,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[28].Exporter = func(v any, i int) any { - switch v := v.(*SafetyResult); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[60].Exporter = func(v any, i int) any { + switch v := v.(*PairwiseQuestionAnsweringQualityResult); i { case 0: return &v.state case 1: @@ -8686,8 +11381,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[29].Exporter = func(v any, i int) any { - switch v := v.(*GroundednessInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[61].Exporter = func(v any, i int) any { + switch v := v.(*QuestionAnsweringRelevanceInput); i { case 0: return &v.state case 1: @@ -8698,8 +11393,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[30].Exporter = func(v any, i int) any { - switch v := v.(*GroundednessInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[62].Exporter = func(v any, i int) any { + switch v := v.(*QuestionAnsweringRelevanceInstance); i { case 0: return &v.state case 1: @@ -8710,8 +11405,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[31].Exporter = func(v any, i int) any { - switch v := v.(*GroundednessSpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[63].Exporter = func(v any, i int) any { + switch v := v.(*QuestionAnsweringRelevanceSpec); i { case 0: return &v.state case 1: @@ -8722,8 +11417,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[32].Exporter = func(v any, i int) any { - switch v := v.(*GroundednessResult); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[64].Exporter = func(v any, i int) any { + switch v := v.(*QuestionAnsweringRelevanceResult); i { case 0: return &v.state case 1: @@ -8734,8 +11429,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[33].Exporter = func(v any, i int) any { - switch v := v.(*FulfillmentInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[65].Exporter = func(v any, i int) any { + switch v := v.(*QuestionAnsweringHelpfulnessInput); i { case 0: return &v.state case 1: @@ -8746,8 +11441,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[34].Exporter = func(v any, i int) any { - switch v := v.(*FulfillmentInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[66].Exporter = func(v any, i int) any { + switch v := v.(*QuestionAnsweringHelpfulnessInstance); i { case 0: return &v.state case 1: @@ -8758,8 +11453,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[35].Exporter = func(v any, i int) any { - switch v := v.(*FulfillmentSpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[67].Exporter = func(v any, i int) any { + switch v := v.(*QuestionAnsweringHelpfulnessSpec); i { case 0: return &v.state case 1: @@ -8770,8 +11465,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[36].Exporter = func(v any, i int) any { - switch v := v.(*FulfillmentResult); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[68].Exporter = func(v any, i int) any { + switch v := v.(*QuestionAnsweringHelpfulnessResult); i { case 0: return &v.state case 1: @@ -8782,8 +11477,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[37].Exporter = func(v any, i int) any { - switch v := v.(*SummarizationQualityInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[69].Exporter = func(v any, i int) any { + switch v := v.(*QuestionAnsweringCorrectnessInput); i { case 0: return &v.state case 1: @@ -8794,8 +11489,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[38].Exporter = func(v any, i int) any { - switch v := v.(*SummarizationQualityInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[70].Exporter = func(v any, i int) any { + switch v := v.(*QuestionAnsweringCorrectnessInstance); i { case 0: return &v.state case 1: @@ -8806,8 +11501,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[39].Exporter = func(v any, i int) any { - switch v := v.(*SummarizationQualitySpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[71].Exporter = func(v any, i int) any { + switch v := v.(*QuestionAnsweringCorrectnessSpec); i { case 0: return &v.state case 1: @@ -8818,8 +11513,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[40].Exporter = func(v any, i int) any { - switch v := v.(*SummarizationQualityResult); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[72].Exporter = func(v any, i int) any { + switch v := v.(*QuestionAnsweringCorrectnessResult); i { case 0: return &v.state case 1: @@ -8830,8 +11525,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[41].Exporter = func(v any, i int) any { - switch v := v.(*PairwiseSummarizationQualityInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[73].Exporter = func(v any, i int) any { + switch v := v.(*PointwiseMetricInput); i { case 0: return &v.state case 1: @@ -8842,8 +11537,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[42].Exporter = func(v any, i int) any { - switch v := v.(*PairwiseSummarizationQualityInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[74].Exporter = func(v any, i int) any { + switch v := v.(*PointwiseMetricInstance); i { case 0: return &v.state case 1: @@ -8854,8 +11549,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[43].Exporter = func(v any, i int) any { - switch v := v.(*PairwiseSummarizationQualitySpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[75].Exporter = func(v any, i int) any { + switch v := v.(*PointwiseMetricSpec); i { case 0: return &v.state case 1: @@ -8866,8 +11561,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[44].Exporter = func(v any, i int) any { - switch v := v.(*PairwiseSummarizationQualityResult); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[76].Exporter = func(v any, i int) any { + switch v := v.(*PointwiseMetricResult); i { case 0: return &v.state case 1: @@ -8878,8 +11573,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[45].Exporter = func(v any, i int) any { - switch v := v.(*SummarizationHelpfulnessInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[77].Exporter = func(v any, i int) any { + switch v := v.(*PairwiseMetricInput); i { case 0: return &v.state case 1: @@ -8890,8 +11585,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[46].Exporter = func(v any, i int) any { - switch v := v.(*SummarizationHelpfulnessInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[78].Exporter = func(v any, i int) any { + switch v := v.(*PairwiseMetricInstance); i { case 0: return &v.state case 1: @@ -8902,8 +11597,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[47].Exporter = func(v any, i int) any { - switch v := v.(*SummarizationHelpfulnessSpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[79].Exporter = func(v any, i int) any { + switch v := v.(*PairwiseMetricSpec); i { case 0: return &v.state case 1: @@ -8914,8 +11609,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[48].Exporter = func(v any, i int) any { - switch v := v.(*SummarizationHelpfulnessResult); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[80].Exporter = func(v any, i int) any { + switch v := v.(*PairwiseMetricResult); i { case 0: return &v.state case 1: @@ -8926,8 +11621,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[49].Exporter = func(v any, i int) any { - switch v := v.(*SummarizationVerbosityInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[81].Exporter = func(v any, i int) any { + switch v := v.(*ToolCallValidInput); i { case 0: return &v.state case 1: @@ -8938,8 +11633,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[50].Exporter = func(v any, i int) any { - switch v := v.(*SummarizationVerbosityInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[82].Exporter = func(v any, i int) any { + switch v := v.(*ToolCallValidSpec); i { case 0: return &v.state case 1: @@ -8950,8 +11645,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[51].Exporter = func(v any, i int) any { - switch v := v.(*SummarizationVerbositySpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[83].Exporter = func(v any, i int) any { + switch v := v.(*ToolCallValidInstance); i { case 0: return &v.state case 1: @@ -8962,8 +11657,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[52].Exporter = func(v any, i int) any { - switch v := v.(*SummarizationVerbosityResult); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[84].Exporter = func(v any, i int) any { + switch v := v.(*ToolCallValidResults); i { case 0: return &v.state case 1: @@ -8974,8 +11669,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[53].Exporter = func(v any, i int) any { - switch v := v.(*QuestionAnsweringQualityInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[85].Exporter = func(v any, i int) any { + switch v := v.(*ToolCallValidMetricValue); i { case 0: return &v.state case 1: @@ -8986,8 +11681,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[54].Exporter = func(v any, i int) any { - switch v := v.(*QuestionAnsweringQualityInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[86].Exporter = func(v any, i int) any { + switch v := v.(*ToolNameMatchInput); i { case 0: return &v.state case 1: @@ -8998,8 +11693,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[55].Exporter = func(v any, i int) any { - switch v := v.(*QuestionAnsweringQualitySpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[87].Exporter = func(v any, i int) any { + switch v := v.(*ToolNameMatchSpec); i { case 0: return &v.state case 1: @@ -9010,8 +11705,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[56].Exporter = func(v any, i int) any { - switch v := v.(*QuestionAnsweringQualityResult); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[88].Exporter = func(v any, i int) any { + switch v := v.(*ToolNameMatchInstance); i { case 0: return &v.state case 1: @@ -9022,8 +11717,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[57].Exporter = func(v any, i int) any { - switch v := v.(*PairwiseQuestionAnsweringQualityInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[89].Exporter = func(v any, i int) any { + switch v := v.(*ToolNameMatchResults); i { case 0: return &v.state case 1: @@ -9034,8 +11729,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[58].Exporter = func(v any, i int) any { - switch v := v.(*PairwiseQuestionAnsweringQualityInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[90].Exporter = func(v any, i int) any { + switch v := v.(*ToolNameMatchMetricValue); i { case 0: return &v.state case 1: @@ -9046,8 +11741,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[59].Exporter = func(v any, i int) any { - switch v := v.(*PairwiseQuestionAnsweringQualitySpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[91].Exporter = func(v any, i int) any { + switch v := v.(*ToolParameterKeyMatchInput); i { case 0: return &v.state case 1: @@ -9058,8 +11753,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[60].Exporter = func(v any, i int) any { - switch v := v.(*PairwiseQuestionAnsweringQualityResult); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[92].Exporter = func(v any, i int) any { + switch v := v.(*ToolParameterKeyMatchSpec); i { case 0: return &v.state case 1: @@ -9070,8 +11765,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[61].Exporter = func(v any, i int) any { - switch v := v.(*QuestionAnsweringRelevanceInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[93].Exporter = func(v any, i int) any { + switch v := v.(*ToolParameterKeyMatchInstance); i { case 0: return &v.state case 1: @@ -9082,8 +11777,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[62].Exporter = func(v any, i int) any { - switch v := v.(*QuestionAnsweringRelevanceInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[94].Exporter = func(v any, i int) any { + switch v := v.(*ToolParameterKeyMatchResults); i { case 0: return &v.state case 1: @@ -9094,8 +11789,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[63].Exporter = func(v any, i int) any { - switch v := v.(*QuestionAnsweringRelevanceSpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[95].Exporter = func(v any, i int) any { + switch v := v.(*ToolParameterKeyMatchMetricValue); i { case 0: return &v.state case 1: @@ -9106,8 +11801,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[64].Exporter = func(v any, i int) any { - switch v := v.(*QuestionAnsweringRelevanceResult); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[96].Exporter = func(v any, i int) any { + switch v := v.(*ToolParameterKVMatchInput); i { case 0: return &v.state case 1: @@ -9118,8 +11813,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[65].Exporter = func(v any, i int) any { - switch v := v.(*QuestionAnsweringHelpfulnessInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[97].Exporter = func(v any, i int) any { + switch v := v.(*ToolParameterKVMatchSpec); i { case 0: return &v.state case 1: @@ -9130,8 +11825,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[66].Exporter = func(v any, i int) any { - switch v := v.(*QuestionAnsweringHelpfulnessInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[98].Exporter = func(v any, i int) any { + switch v := v.(*ToolParameterKVMatchInstance); i { case 0: return &v.state case 1: @@ -9142,8 +11837,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[67].Exporter = func(v any, i int) any { - switch v := v.(*QuestionAnsweringHelpfulnessSpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[99].Exporter = func(v any, i int) any { + switch v := v.(*ToolParameterKVMatchResults); i { case 0: return &v.state case 1: @@ -9154,8 +11849,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[68].Exporter = func(v any, i int) any { - switch v := v.(*QuestionAnsweringHelpfulnessResult); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[100].Exporter = func(v any, i int) any { + switch v := v.(*ToolParameterKVMatchMetricValue); i { case 0: return &v.state case 1: @@ -9166,8 +11861,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[69].Exporter = func(v any, i int) any { - switch v := v.(*QuestionAnsweringCorrectnessInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[101].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryExactMatchInput); i { case 0: return &v.state case 1: @@ -9178,8 +11873,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[70].Exporter = func(v any, i int) any { - switch v := v.(*QuestionAnsweringCorrectnessInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[102].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryExactMatchSpec); i { case 0: return &v.state case 1: @@ -9190,8 +11885,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[71].Exporter = func(v any, i int) any { - switch v := v.(*QuestionAnsweringCorrectnessSpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[103].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryExactMatchInstance); i { case 0: return &v.state case 1: @@ -9202,8 +11897,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[72].Exporter = func(v any, i int) any { - switch v := v.(*QuestionAnsweringCorrectnessResult); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[104].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryExactMatchResults); i { case 0: return &v.state case 1: @@ -9214,8 +11909,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[73].Exporter = func(v any, i int) any { - switch v := v.(*PointwiseMetricInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[105].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryExactMatchMetricValue); i { case 0: return &v.state case 1: @@ -9226,8 +11921,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[74].Exporter = func(v any, i int) any { - switch v := v.(*PointwiseMetricInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[106].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryInOrderMatchInput); i { case 0: return &v.state case 1: @@ -9238,8 +11933,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[75].Exporter = func(v any, i int) any { - switch v := v.(*PointwiseMetricSpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[107].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryInOrderMatchSpec); i { case 0: return &v.state case 1: @@ -9250,8 +11945,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[76].Exporter = func(v any, i int) any { - switch v := v.(*PointwiseMetricResult); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[108].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryInOrderMatchInstance); i { case 0: return &v.state case 1: @@ -9262,8 +11957,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[77].Exporter = func(v any, i int) any { - switch v := v.(*PairwiseMetricInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[109].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryInOrderMatchResults); i { case 0: return &v.state case 1: @@ -9274,8 +11969,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[78].Exporter = func(v any, i int) any { - switch v := v.(*PairwiseMetricInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[110].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryInOrderMatchMetricValue); i { case 0: return &v.state case 1: @@ -9286,8 +11981,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[79].Exporter = func(v any, i int) any { - switch v := v.(*PairwiseMetricSpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[111].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryAnyOrderMatchInput); i { case 0: return &v.state case 1: @@ -9298,8 +11993,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[80].Exporter = func(v any, i int) any { - switch v := v.(*PairwiseMetricResult); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[112].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryAnyOrderMatchSpec); i { case 0: return &v.state case 1: @@ -9310,8 +12005,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[81].Exporter = func(v any, i int) any { - switch v := v.(*ToolCallValidInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[113].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryAnyOrderMatchInstance); i { case 0: return &v.state case 1: @@ -9322,8 +12017,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[82].Exporter = func(v any, i int) any { - switch v := v.(*ToolCallValidSpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[114].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryAnyOrderMatchResults); i { case 0: return &v.state case 1: @@ -9334,8 +12029,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[83].Exporter = func(v any, i int) any { - switch v := v.(*ToolCallValidInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[115].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryAnyOrderMatchMetricValue); i { case 0: return &v.state case 1: @@ -9346,8 +12041,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[84].Exporter = func(v any, i int) any { - switch v := v.(*ToolCallValidResults); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[116].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryPrecisionInput); i { case 0: return &v.state case 1: @@ -9358,8 +12053,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[85].Exporter = func(v any, i int) any { - switch v := v.(*ToolCallValidMetricValue); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[117].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryPrecisionSpec); i { case 0: return &v.state case 1: @@ -9370,8 +12065,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[86].Exporter = func(v any, i int) any { - switch v := v.(*ToolNameMatchInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[118].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryPrecisionInstance); i { case 0: return &v.state case 1: @@ -9382,8 +12077,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[87].Exporter = func(v any, i int) any { - switch v := v.(*ToolNameMatchSpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[119].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryPrecisionResults); i { case 0: return &v.state case 1: @@ -9394,8 +12089,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[88].Exporter = func(v any, i int) any { - switch v := v.(*ToolNameMatchInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[120].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryPrecisionMetricValue); i { case 0: return &v.state case 1: @@ -9406,8 +12101,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[89].Exporter = func(v any, i int) any { - switch v := v.(*ToolNameMatchResults); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[121].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryRecallInput); i { case 0: return &v.state case 1: @@ -9418,8 +12113,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[90].Exporter = func(v any, i int) any { - switch v := v.(*ToolNameMatchMetricValue); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[122].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryRecallSpec); i { case 0: return &v.state case 1: @@ -9430,8 +12125,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[91].Exporter = func(v any, i int) any { - switch v := v.(*ToolParameterKeyMatchInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[123].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryRecallInstance); i { case 0: return &v.state case 1: @@ -9442,8 +12137,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[92].Exporter = func(v any, i int) any { - switch v := v.(*ToolParameterKeyMatchSpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[124].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryRecallResults); i { case 0: return &v.state case 1: @@ -9454,8 +12149,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[93].Exporter = func(v any, i int) any { - switch v := v.(*ToolParameterKeyMatchInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[125].Exporter = func(v any, i int) any { + switch v := v.(*TrajectoryRecallMetricValue); i { case 0: return &v.state case 1: @@ -9466,8 +12161,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[94].Exporter = func(v any, i int) any { - switch v := v.(*ToolParameterKeyMatchResults); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[126].Exporter = func(v any, i int) any { + switch v := v.(*TrajectorySingleToolUseInput); i { case 0: return &v.state case 1: @@ -9478,8 +12173,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[95].Exporter = func(v any, i int) any { - switch v := v.(*ToolParameterKeyMatchMetricValue); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[127].Exporter = func(v any, i int) any { + switch v := v.(*TrajectorySingleToolUseSpec); i { case 0: return &v.state case 1: @@ -9490,8 +12185,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[96].Exporter = func(v any, i int) any { - switch v := v.(*ToolParameterKVMatchInput); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[128].Exporter = func(v any, i int) any { + switch v := v.(*TrajectorySingleToolUseInstance); i { case 0: return &v.state case 1: @@ -9502,8 +12197,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[97].Exporter = func(v any, i int) any { - switch v := v.(*ToolParameterKVMatchSpec); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[129].Exporter = func(v any, i int) any { + switch v := v.(*TrajectorySingleToolUseResults); i { case 0: return &v.state case 1: @@ -9514,8 +12209,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[98].Exporter = func(v any, i int) any { - switch v := v.(*ToolParameterKVMatchInstance); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[130].Exporter = func(v any, i int) any { + switch v := v.(*TrajectorySingleToolUseMetricValue); i { case 0: return &v.state case 1: @@ -9526,8 +12221,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[99].Exporter = func(v any, i int) any { - switch v := v.(*ToolParameterKVMatchResults); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[131].Exporter = func(v any, i int) any { + switch v := v.(*Trajectory); i { case 0: return &v.state case 1: @@ -9538,8 +12233,8 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { return nil } } - file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[100].Exporter = func(v any, i int) any { - switch v := v.(*ToolParameterKVMatchMetricValue); i { + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[132].Exporter = func(v any, i int) any { + switch v := v.(*ToolCall); i { case 0: return &v.state case 1: @@ -9575,6 +12270,12 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { (*EvaluateInstancesRequest_ToolNameMatchInput)(nil), (*EvaluateInstancesRequest_ToolParameterKeyMatchInput)(nil), (*EvaluateInstancesRequest_ToolParameterKvMatchInput)(nil), + (*EvaluateInstancesRequest_TrajectoryExactMatchInput)(nil), + (*EvaluateInstancesRequest_TrajectoryInOrderMatchInput)(nil), + (*EvaluateInstancesRequest_TrajectoryAnyOrderMatchInput)(nil), + (*EvaluateInstancesRequest_TrajectoryPrecisionInput)(nil), + (*EvaluateInstancesRequest_TrajectoryRecallInput)(nil), + (*EvaluateInstancesRequest_TrajectorySingleToolUseInput)(nil), } file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[1].OneofWrappers = []any{ (*EvaluateInstancesResponse_ExactMatchResults)(nil), @@ -9600,6 +12301,12 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { (*EvaluateInstancesResponse_ToolNameMatchResults)(nil), (*EvaluateInstancesResponse_ToolParameterKeyMatchResults)(nil), (*EvaluateInstancesResponse_ToolParameterKvMatchResults)(nil), + (*EvaluateInstancesResponse_TrajectoryExactMatchResults)(nil), + (*EvaluateInstancesResponse_TrajectoryInOrderMatchResults)(nil), + (*EvaluateInstancesResponse_TrajectoryAnyOrderMatchResults)(nil), + (*EvaluateInstancesResponse_TrajectoryPrecisionResults)(nil), + (*EvaluateInstancesResponse_TrajectoryRecallResults)(nil), + (*EvaluateInstancesResponse_TrajectorySingleToolUseResults)(nil), } file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[3].OneofWrappers = []any{} file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[6].OneofWrappers = []any{} @@ -9652,13 +12359,27 @@ func file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_init() { file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[95].OneofWrappers = []any{} file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[98].OneofWrappers = []any{} file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[100].OneofWrappers = []any{} + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[103].OneofWrappers = []any{} + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[105].OneofWrappers = []any{} + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[108].OneofWrappers = []any{} + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[110].OneofWrappers = []any{} + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[113].OneofWrappers = []any{} + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[115].OneofWrappers = []any{} + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[118].OneofWrappers = []any{} + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[120].OneofWrappers = []any{} + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[123].OneofWrappers = []any{} + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[125].OneofWrappers = []any{} + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[127].OneofWrappers = []any{} + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[128].OneofWrappers = []any{} + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[130].OneofWrappers = []any{} + file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_msgTypes[132].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_aiplatform_v1beta1_evaluation_service_proto_rawDesc, NumEnums: 1, - NumMessages: 101, + NumMessages: 133, NumExtensions: 0, NumServices: 1, }, diff --git a/aiplatform/apiv1beta1/aiplatformpb/notebook_execution_job.pb.go b/aiplatform/apiv1beta1/aiplatformpb/notebook_execution_job.pb.go index b526ff4687f4..8b726f46b1f7 100755 --- a/aiplatform/apiv1beta1/aiplatformpb/notebook_execution_job.pb.go +++ b/aiplatform/apiv1beta1/aiplatformpb/notebook_execution_job.pb.go @@ -58,6 +58,7 @@ type NotebookExecutionJob struct { // Types that are assignable to EnvironmentSpec: // // *NotebookExecutionJob_NotebookRuntimeTemplateResourceName + // *NotebookExecutionJob_CustomEnvironmentSpec_ EnvironmentSpec isNotebookExecutionJob_EnvironmentSpec `protobuf_oneof:"environment_spec"` // The location to store the notebook execution result. // @@ -185,6 +186,13 @@ func (x *NotebookExecutionJob) GetNotebookRuntimeTemplateResourceName() string { return "" } +func (x *NotebookExecutionJob) GetCustomEnvironmentSpec() *NotebookExecutionJob_CustomEnvironmentSpec { + if x, ok := x.GetEnvironmentSpec().(*NotebookExecutionJob_CustomEnvironmentSpec_); ok { + return x.CustomEnvironmentSpec + } + return nil +} + func (m *NotebookExecutionJob) GetExecutionSink() isNotebookExecutionJob_ExecutionSink { if m != nil { return m.ExecutionSink @@ -325,9 +333,16 @@ type NotebookExecutionJob_NotebookRuntimeTemplateResourceName struct { NotebookRuntimeTemplateResourceName string `protobuf:"bytes,14,opt,name=notebook_runtime_template_resource_name,json=notebookRuntimeTemplateResourceName,proto3,oneof"` } +type NotebookExecutionJob_CustomEnvironmentSpec_ struct { + // The custom compute configuration for an execution job. + CustomEnvironmentSpec *NotebookExecutionJob_CustomEnvironmentSpec `protobuf:"bytes,16,opt,name=custom_environment_spec,json=customEnvironmentSpec,proto3,oneof"` +} + func (*NotebookExecutionJob_NotebookRuntimeTemplateResourceName) isNotebookExecutionJob_EnvironmentSpec() { } +func (*NotebookExecutionJob_CustomEnvironmentSpec_) isNotebookExecutionJob_EnvironmentSpec() {} + type isNotebookExecutionJob_ExecutionSink interface { isNotebookExecutionJob_ExecutionSink() } @@ -528,6 +543,73 @@ func (x *NotebookExecutionJob_DirectNotebookSource) GetContent() []byte { return nil } +// Compute configuration to use for an execution job. +type NotebookExecutionJob_CustomEnvironmentSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The specification of a single machine for the execution job. + MachineSpec *MachineSpec `protobuf:"bytes,1,opt,name=machine_spec,json=machineSpec,proto3" json:"machine_spec,omitempty"` + // The specification of a persistent disk to attach for the execution job. + PersistentDiskSpec *PersistentDiskSpec `protobuf:"bytes,2,opt,name=persistent_disk_spec,json=persistentDiskSpec,proto3" json:"persistent_disk_spec,omitempty"` + // The network configuration to use for the execution job. + NetworkSpec *NetworkSpec `protobuf:"bytes,3,opt,name=network_spec,json=networkSpec,proto3" json:"network_spec,omitempty"` +} + +func (x *NotebookExecutionJob_CustomEnvironmentSpec) Reset() { + *x = NotebookExecutionJob_CustomEnvironmentSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_aiplatform_v1beta1_notebook_execution_job_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NotebookExecutionJob_CustomEnvironmentSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NotebookExecutionJob_CustomEnvironmentSpec) ProtoMessage() {} + +func (x *NotebookExecutionJob_CustomEnvironmentSpec) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_aiplatform_v1beta1_notebook_execution_job_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NotebookExecutionJob_CustomEnvironmentSpec.ProtoReflect.Descriptor instead. +func (*NotebookExecutionJob_CustomEnvironmentSpec) Descriptor() ([]byte, []int) { + return file_google_cloud_aiplatform_v1beta1_notebook_execution_job_proto_rawDescGZIP(), []int{0, 3} +} + +func (x *NotebookExecutionJob_CustomEnvironmentSpec) GetMachineSpec() *MachineSpec { + if x != nil { + return x.MachineSpec + } + return nil +} + +func (x *NotebookExecutionJob_CustomEnvironmentSpec) GetPersistentDiskSpec() *PersistentDiskSpec { + if x != nil { + return x.PersistentDiskSpec + } + return nil +} + +func (x *NotebookExecutionJob_CustomEnvironmentSpec) GetNetworkSpec() *NetworkSpec { + if x != nil { + return x.NetworkSpec + } + return nil +} + var File_google_cloud_aiplatform_v1beta1_notebook_execution_job_proto protoreflect.FileDescriptor var file_google_cloud_aiplatform_v1beta1_notebook_execution_job_proto_rawDesc = []byte{ @@ -547,150 +629,183 @@ var file_google_cloud_aiplatform_v1beta1_notebook_execution_job_proto_rawDesc = 0x74, 0x6f, 0x1a, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x97, 0x0f, - 0x0a, 0x14, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x8e, 0x01, 0x0a, 0x1a, 0x64, 0x61, 0x74, 0x61, 0x66, - 0x6f, 0x72, 0x6d, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4e, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, - 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, - 0x6f, 0x62, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x18, 0x64, - 0x61, 0x74, 0x61, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x79, 0x0a, 0x13, 0x67, 0x63, 0x73, 0x5f, 0x6e, - 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x2e, 0x47, 0x63, 0x73, 0x4e, - 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, - 0x11, 0x67, 0x63, 0x73, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x16, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x6f, - 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x11, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, - 0x00, 0x52, 0x14, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, - 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x8e, 0x01, 0x0a, 0x27, 0x6e, 0x6f, 0x74, 0x65, - 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x36, 0xfa, 0x41, 0x33, 0x0a, 0x31, - 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, - 0x6f, 0x6b, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x48, 0x01, 0x52, 0x23, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x67, 0x63, 0x73, 0x5f, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x02, 0x52, 0x0c, 0x67, 0x63, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x55, 0x72, 0x69, - 0x12, 0x27, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x73, - 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0d, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x0f, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x03, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, - 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x46, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x60, 0x0a, 0x16, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x24, - 0x0a, 0x22, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x52, 0x14, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x09, 0x6a, 0x6f, - 0x62, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, 0x6a, - 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x06, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, + 0x6f, 0x74, 0x6f, 0x1a, 0x37, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x32, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc2, 0x12, 0x0a, 0x14, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x4a, 0x6f, 0x62, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x58, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x4a, 0x6f, 0x62, 0x12, 0x8e, 0x01, 0x0a, 0x1a, 0x64, 0x61, 0x74, 0x61, 0x66, 0x6f, 0x72, 0x6d, + 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x62, + 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x2e, + 0x44, 0x61, 0x74, 0x61, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x18, 0x64, 0x61, 0x74, 0x61, + 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x12, 0x79, 0x0a, 0x13, 0x67, 0x63, 0x73, 0x5f, 0x6e, 0x6f, 0x74, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x2e, 0x47, 0x63, 0x73, 0x4e, 0x6f, 0x74, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x11, 0x67, 0x63, + 0x73, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x82, 0x01, 0x0a, 0x16, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x6f, 0x74, 0x65, 0x62, + 0x6f, 0x6f, 0x6b, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x4a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, - 0x63, 0x52, 0x0e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, - 0x63, 0x1a, 0x84, 0x01, 0x0a, 0x18, 0x44, 0x61, 0x74, 0x61, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x49, - 0x0a, 0x21, 0x64, 0x61, 0x74, 0x61, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1e, 0x64, 0x61, 0x74, 0x61, 0x66, - 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, - 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x61, 0x1a, 0x45, 0x0a, 0x11, 0x47, 0x63, 0x73, 0x4e, - 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x10, 0x0a, - 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, - 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, - 0x30, 0x0a, 0x14, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, - 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0xb9, 0x01, 0xea, - 0x41, 0xb5, 0x01, 0x0a, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, - 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x4a, 0x6f, 0x62, 0x12, 0x56, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6e, 0x6f, 0x74, - 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, - 0x62, 0x73, 0x2f, 0x7b, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6a, 0x6f, 0x62, 0x7d, 0x2a, 0x15, 0x6e, 0x6f, 0x74, - 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, - 0x62, 0x73, 0x32, 0x14, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x42, 0x11, 0x0a, 0x0f, 0x6e, 0x6f, 0x74, 0x65, - 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x65, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x42, - 0x10, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x6e, - 0x6b, 0x42, 0x14, 0x0a, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x42, 0xf0, 0x01, 0x0a, 0x23, 0x63, 0x6f, 0x6d, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, - 0x19, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x43, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, - 0x6f, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x61, 0x70, 0x69, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x70, 0x62, 0x3b, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, - 0x62, 0xaa, 0x02, 0x1f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x56, 0x31, 0x42, 0x65, - 0x74, 0x61, 0x31, 0xca, 0x02, 0x1f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x5c, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5c, 0x56, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0xea, 0x02, 0x22, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4e, 0x6f, + 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x14, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x12, 0x8e, 0x01, 0x0a, 0x27, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, + 0x6b, 0x5f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x36, 0xfa, 0x41, 0x33, 0x0a, 0x31, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x48, 0x01, + 0x52, 0x23, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x17, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x5f, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x70, 0x65, + 0x63, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, + 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x2e, 0x43, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x53, 0x70, 0x65, 0x63, 0x48, 0x01, 0x52, 0x15, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x45, 0x6e, + 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x26, 0x0a, + 0x0e, 0x67, 0x63, 0x73, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0c, 0x67, 0x63, 0x73, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x55, 0x72, 0x69, 0x12, 0x27, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, + 0x0d, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x29, + 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x60, 0x0a, + 0x16, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, + 0x41, 0x03, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x14, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x4b, 0x0a, 0x09, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x08, 0x6a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2f, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x40, 0x0a, + 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x59, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x58, 0x0a, 0x0f, + 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, + 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x1a, 0x84, 0x01, 0x0a, 0x18, 0x44, 0x61, 0x74, 0x61, 0x66, + 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x21, 0x64, 0x61, 0x74, 0x61, 0x66, 0x6f, 0x72, 0x6d, 0x5f, + 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1e, + 0x64, 0x61, 0x74, 0x61, 0x66, 0x6f, 0x72, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, + 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x61, 0x1a, 0x45, 0x0a, + 0x11, 0x47, 0x63, 0x73, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x69, 0x12, 0x1e, 0x0a, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x30, 0x0a, 0x14, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4e, 0x6f, + 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0xa0, 0x02, 0x0a, 0x15, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, + 0x12, 0x4f, 0x0a, 0x0c, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, + 0x53, 0x70, 0x65, 0x63, 0x52, 0x0b, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x53, 0x70, 0x65, + 0x63, 0x12, 0x65, 0x0a, 0x14, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x5f, + 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, + 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x73, 0x6b, + 0x53, 0x70, 0x65, 0x63, 0x52, 0x12, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x74, + 0x44, 0x69, 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4f, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0b, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x3a, 0xb9, 0x01, 0xea, 0x41, 0xb5, 0x01, 0x0a, 0x2e, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x56, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x6e, 0x6f, 0x74, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6a, + 0x6f, 0x62, 0x7d, 0x2a, 0x15, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x32, 0x14, 0x6e, 0x6f, 0x74, 0x65, + 0x62, 0x6f, 0x6f, 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, + 0x42, 0x11, 0x0a, 0x0f, 0x6e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x42, 0x10, 0x0a, 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x6b, 0x42, 0x14, 0x0a, 0x12, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x42, + 0xf0, 0x01, 0x0a, 0x23, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x19, 0x4e, 0x6f, 0x74, 0x65, 0x62, 0x6f, 0x6f, + 0x6b, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x6f, 0x62, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x43, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, + 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0x3b, 0x61, 0x69, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0xaa, 0x02, 0x1f, 0x47, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x2e, 0x56, 0x31, 0x42, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x1f, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x41, 0x49, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xea, 0x02, 0x22, + 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x41, + 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -705,35 +820,43 @@ func file_google_cloud_aiplatform_v1beta1_notebook_execution_job_proto_rawDescGZ return file_google_cloud_aiplatform_v1beta1_notebook_execution_job_proto_rawDescData } -var file_google_cloud_aiplatform_v1beta1_notebook_execution_job_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_google_cloud_aiplatform_v1beta1_notebook_execution_job_proto_msgTypes = make([]protoimpl.MessageInfo, 6) var file_google_cloud_aiplatform_v1beta1_notebook_execution_job_proto_goTypes = []any{ (*NotebookExecutionJob)(nil), // 0: google.cloud.aiplatform.v1beta1.NotebookExecutionJob (*NotebookExecutionJob_DataformRepositorySource)(nil), // 1: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.DataformRepositorySource (*NotebookExecutionJob_GcsNotebookSource)(nil), // 2: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.GcsNotebookSource (*NotebookExecutionJob_DirectNotebookSource)(nil), // 3: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.DirectNotebookSource - nil, // 4: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.LabelsEntry - (*durationpb.Duration)(nil), // 5: google.protobuf.Duration - (JobState)(0), // 6: google.cloud.aiplatform.v1beta1.JobState - (*status.Status)(nil), // 7: google.rpc.Status - (*timestamppb.Timestamp)(nil), // 8: google.protobuf.Timestamp - (*EncryptionSpec)(nil), // 9: google.cloud.aiplatform.v1beta1.EncryptionSpec + (*NotebookExecutionJob_CustomEnvironmentSpec)(nil), // 4: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.CustomEnvironmentSpec + nil, // 5: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.LabelsEntry + (*durationpb.Duration)(nil), // 6: google.protobuf.Duration + (JobState)(0), // 7: google.cloud.aiplatform.v1beta1.JobState + (*status.Status)(nil), // 8: google.rpc.Status + (*timestamppb.Timestamp)(nil), // 9: google.protobuf.Timestamp + (*EncryptionSpec)(nil), // 10: google.cloud.aiplatform.v1beta1.EncryptionSpec + (*MachineSpec)(nil), // 11: google.cloud.aiplatform.v1beta1.MachineSpec + (*PersistentDiskSpec)(nil), // 12: google.cloud.aiplatform.v1beta1.PersistentDiskSpec + (*NetworkSpec)(nil), // 13: google.cloud.aiplatform.v1beta1.NetworkSpec } var file_google_cloud_aiplatform_v1beta1_notebook_execution_job_proto_depIdxs = []int32{ 1, // 0: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.dataform_repository_source:type_name -> google.cloud.aiplatform.v1beta1.NotebookExecutionJob.DataformRepositorySource 2, // 1: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.gcs_notebook_source:type_name -> google.cloud.aiplatform.v1beta1.NotebookExecutionJob.GcsNotebookSource 3, // 2: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.direct_notebook_source:type_name -> google.cloud.aiplatform.v1beta1.NotebookExecutionJob.DirectNotebookSource - 5, // 3: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.execution_timeout:type_name -> google.protobuf.Duration - 6, // 4: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.job_state:type_name -> google.cloud.aiplatform.v1beta1.JobState - 7, // 5: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.status:type_name -> google.rpc.Status - 8, // 6: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.create_time:type_name -> google.protobuf.Timestamp - 8, // 7: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.update_time:type_name -> google.protobuf.Timestamp - 4, // 8: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.labels:type_name -> google.cloud.aiplatform.v1beta1.NotebookExecutionJob.LabelsEntry - 9, // 9: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.encryption_spec:type_name -> google.cloud.aiplatform.v1beta1.EncryptionSpec - 10, // [10:10] is the sub-list for method output_type - 10, // [10:10] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name + 4, // 3: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.custom_environment_spec:type_name -> google.cloud.aiplatform.v1beta1.NotebookExecutionJob.CustomEnvironmentSpec + 6, // 4: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.execution_timeout:type_name -> google.protobuf.Duration + 7, // 5: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.job_state:type_name -> google.cloud.aiplatform.v1beta1.JobState + 8, // 6: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.status:type_name -> google.rpc.Status + 9, // 7: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.create_time:type_name -> google.protobuf.Timestamp + 9, // 8: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.update_time:type_name -> google.protobuf.Timestamp + 5, // 9: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.labels:type_name -> google.cloud.aiplatform.v1beta1.NotebookExecutionJob.LabelsEntry + 10, // 10: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.encryption_spec:type_name -> google.cloud.aiplatform.v1beta1.EncryptionSpec + 11, // 11: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.CustomEnvironmentSpec.machine_spec:type_name -> google.cloud.aiplatform.v1beta1.MachineSpec + 12, // 12: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.CustomEnvironmentSpec.persistent_disk_spec:type_name -> google.cloud.aiplatform.v1beta1.PersistentDiskSpec + 13, // 13: google.cloud.aiplatform.v1beta1.NotebookExecutionJob.CustomEnvironmentSpec.network_spec:type_name -> google.cloud.aiplatform.v1beta1.NetworkSpec + 14, // [14:14] is the sub-list for method output_type + 14, // [14:14] is the sub-list for method input_type + 14, // [14:14] is the sub-list for extension type_name + 14, // [14:14] is the sub-list for extension extendee + 0, // [0:14] is the sub-list for field type_name } func init() { file_google_cloud_aiplatform_v1beta1_notebook_execution_job_proto_init() } @@ -743,6 +866,8 @@ func file_google_cloud_aiplatform_v1beta1_notebook_execution_job_proto_init() { } file_google_cloud_aiplatform_v1beta1_encryption_spec_proto_init() file_google_cloud_aiplatform_v1beta1_job_state_proto_init() + file_google_cloud_aiplatform_v1beta1_machine_resources_proto_init() + file_google_cloud_aiplatform_v1beta1_network_spec_proto_init() if !protoimpl.UnsafeEnabled { file_google_cloud_aiplatform_v1beta1_notebook_execution_job_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*NotebookExecutionJob); i { @@ -792,12 +917,25 @@ func file_google_cloud_aiplatform_v1beta1_notebook_execution_job_proto_init() { return nil } } + file_google_cloud_aiplatform_v1beta1_notebook_execution_job_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*NotebookExecutionJob_CustomEnvironmentSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_google_cloud_aiplatform_v1beta1_notebook_execution_job_proto_msgTypes[0].OneofWrappers = []any{ (*NotebookExecutionJob_DataformRepositorySource_)(nil), (*NotebookExecutionJob_GcsNotebookSource_)(nil), (*NotebookExecutionJob_DirectNotebookSource_)(nil), (*NotebookExecutionJob_NotebookRuntimeTemplateResourceName)(nil), + (*NotebookExecutionJob_CustomEnvironmentSpec_)(nil), (*NotebookExecutionJob_GcsOutputUri)(nil), (*NotebookExecutionJob_ExecutionUser)(nil), (*NotebookExecutionJob_ServiceAccount)(nil), @@ -808,7 +946,7 @@ func file_google_cloud_aiplatform_v1beta1_notebook_execution_job_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_aiplatform_v1beta1_notebook_execution_job_proto_rawDesc, NumEnums: 0, - NumMessages: 5, + NumMessages: 6, NumExtensions: 0, NumServices: 0, }, diff --git a/contactcenterinsights/apiv1/auxiliary.go b/contactcenterinsights/apiv1/auxiliary.go index 7e1ba730d967..c06eb00478da 100755 --- a/contactcenterinsights/apiv1/auxiliary.go +++ b/contactcenterinsights/apiv1/auxiliary.go @@ -155,6 +155,134 @@ func (op *BulkDeleteConversationsOperation) Name() string { return op.lro.Name() } +// BulkDownloadFeedbackLabelsOperation manages a long-running operation from BulkDownloadFeedbackLabels. +type BulkDownloadFeedbackLabelsOperation struct { + lro *longrunning.Operation + pollPath string +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *BulkDownloadFeedbackLabelsOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*contactcenterinsightspb.BulkDownloadFeedbackLabelsResponse, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp contactcenterinsightspb.BulkDownloadFeedbackLabelsResponse + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *BulkDownloadFeedbackLabelsOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*contactcenterinsightspb.BulkDownloadFeedbackLabelsResponse, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp contactcenterinsightspb.BulkDownloadFeedbackLabelsResponse + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *BulkDownloadFeedbackLabelsOperation) Metadata() (*contactcenterinsightspb.BulkDownloadFeedbackLabelsMetadata, error) { + var meta contactcenterinsightspb.BulkDownloadFeedbackLabelsMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *BulkDownloadFeedbackLabelsOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *BulkDownloadFeedbackLabelsOperation) Name() string { + return op.lro.Name() +} + +// BulkUploadFeedbackLabelsOperation manages a long-running operation from BulkUploadFeedbackLabels. +type BulkUploadFeedbackLabelsOperation struct { + lro *longrunning.Operation + pollPath string +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *BulkUploadFeedbackLabelsOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*contactcenterinsightspb.BulkUploadFeedbackLabelsResponse, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp contactcenterinsightspb.BulkUploadFeedbackLabelsResponse + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *BulkUploadFeedbackLabelsOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*contactcenterinsightspb.BulkUploadFeedbackLabelsResponse, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp contactcenterinsightspb.BulkUploadFeedbackLabelsResponse + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *BulkUploadFeedbackLabelsOperation) Metadata() (*contactcenterinsightspb.BulkUploadFeedbackLabelsMetadata, error) { + var meta contactcenterinsightspb.BulkUploadFeedbackLabelsMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *BulkUploadFeedbackLabelsOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *BulkUploadFeedbackLabelsOperation) Name() string { + return op.lro.Name() +} + // CreateAnalysisOperation manages a long-running operation from CreateAnalysis. type CreateAnalysisOperation struct { lro *longrunning.Operation @@ -720,6 +848,134 @@ func (op *InitializeEncryptionSpecOperation) Name() string { return op.lro.Name() } +// QueryMetricsOperation manages a long-running operation from QueryMetrics. +type QueryMetricsOperation struct { + lro *longrunning.Operation + pollPath string +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *QueryMetricsOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*contactcenterinsightspb.QueryMetricsResponse, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp contactcenterinsightspb.QueryMetricsResponse + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *QueryMetricsOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*contactcenterinsightspb.QueryMetricsResponse, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp contactcenterinsightspb.QueryMetricsResponse + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *QueryMetricsOperation) Metadata() (*contactcenterinsightspb.QueryMetricsMetadata, error) { + var meta contactcenterinsightspb.QueryMetricsMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *QueryMetricsOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *QueryMetricsOperation) Name() string { + return op.lro.Name() +} + +// TuneQaScorecardRevisionOperation manages a long-running operation from TuneQaScorecardRevision. +type TuneQaScorecardRevisionOperation struct { + lro *longrunning.Operation + pollPath string +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *TuneQaScorecardRevisionOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*contactcenterinsightspb.TuneQaScorecardRevisionResponse, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp contactcenterinsightspb.TuneQaScorecardRevisionResponse + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *TuneQaScorecardRevisionOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*contactcenterinsightspb.TuneQaScorecardRevisionResponse, error) { + opts = append([]gax.CallOption{gax.WithPath(op.pollPath)}, opts...) + var resp contactcenterinsightspb.TuneQaScorecardRevisionResponse + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *TuneQaScorecardRevisionOperation) Metadata() (*contactcenterinsightspb.TuneQaScorecardRevisionMetadata, error) { + var meta contactcenterinsightspb.TuneQaScorecardRevisionMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *TuneQaScorecardRevisionOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *TuneQaScorecardRevisionOperation) Name() string { + return op.lro.Name() +} + // UndeployIssueModelOperation manages a long-running operation from UndeployIssueModel. type UndeployIssueModelOperation struct { lro *longrunning.Operation @@ -895,6 +1151,53 @@ func (it *AnalysisIterator) takeBuf() interface{} { return b } +// AnalysisRuleIterator manages a stream of *contactcenterinsightspb.AnalysisRule. +type AnalysisRuleIterator struct { + items []*contactcenterinsightspb.AnalysisRule + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*contactcenterinsightspb.AnalysisRule, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the [google.golang.org/api/iterator] package for details. +func (it *AnalysisRuleIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *AnalysisRuleIterator) Next() (*contactcenterinsightspb.AnalysisRule, error) { + var item *contactcenterinsightspb.AnalysisRule + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *AnalysisRuleIterator) bufLen() int { + return len(it.items) +} + +func (it *AnalysisRuleIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + // ConversationIterator manages a stream of *contactcenterinsightspb.Conversation. type ConversationIterator struct { items []*contactcenterinsightspb.Conversation @@ -942,6 +1245,53 @@ func (it *ConversationIterator) takeBuf() interface{} { return b } +// FeedbackLabelIterator manages a stream of *contactcenterinsightspb.FeedbackLabel. +type FeedbackLabelIterator struct { + items []*contactcenterinsightspb.FeedbackLabel + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*contactcenterinsightspb.FeedbackLabel, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the [google.golang.org/api/iterator] package for details. +func (it *FeedbackLabelIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *FeedbackLabelIterator) Next() (*contactcenterinsightspb.FeedbackLabel, error) { + var item *contactcenterinsightspb.FeedbackLabel + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *FeedbackLabelIterator) bufLen() int { + return len(it.items) +} + +func (it *FeedbackLabelIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + // OperationIterator manages a stream of *longrunningpb.Operation. type OperationIterator struct { items []*longrunningpb.Operation @@ -1036,6 +1386,147 @@ func (it *PhraseMatcherIterator) takeBuf() interface{} { return b } +// QaQuestionIterator manages a stream of *contactcenterinsightspb.QaQuestion. +type QaQuestionIterator struct { + items []*contactcenterinsightspb.QaQuestion + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*contactcenterinsightspb.QaQuestion, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the [google.golang.org/api/iterator] package for details. +func (it *QaQuestionIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *QaQuestionIterator) Next() (*contactcenterinsightspb.QaQuestion, error) { + var item *contactcenterinsightspb.QaQuestion + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *QaQuestionIterator) bufLen() int { + return len(it.items) +} + +func (it *QaQuestionIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// QaScorecardIterator manages a stream of *contactcenterinsightspb.QaScorecard. +type QaScorecardIterator struct { + items []*contactcenterinsightspb.QaScorecard + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*contactcenterinsightspb.QaScorecard, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the [google.golang.org/api/iterator] package for details. +func (it *QaScorecardIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *QaScorecardIterator) Next() (*contactcenterinsightspb.QaScorecard, error) { + var item *contactcenterinsightspb.QaScorecard + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *QaScorecardIterator) bufLen() int { + return len(it.items) +} + +func (it *QaScorecardIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + +// QaScorecardRevisionIterator manages a stream of *contactcenterinsightspb.QaScorecardRevision. +type QaScorecardRevisionIterator struct { + items []*contactcenterinsightspb.QaScorecardRevision + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*contactcenterinsightspb.QaScorecardRevision, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the [google.golang.org/api/iterator] package for details. +func (it *QaScorecardRevisionIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *QaScorecardRevisionIterator) Next() (*contactcenterinsightspb.QaScorecardRevision, error) { + var item *contactcenterinsightspb.QaScorecardRevision + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *QaScorecardRevisionIterator) bufLen() int { + return len(it.items) +} + +func (it *QaScorecardRevisionIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + // ViewIterator manages a stream of *contactcenterinsightspb.View. type ViewIterator struct { items []*contactcenterinsightspb.View diff --git a/contactcenterinsights/apiv1/auxiliary_go123.go b/contactcenterinsights/apiv1/auxiliary_go123.go index 5ef36e38265a..733f543f5879 100755 --- a/contactcenterinsights/apiv1/auxiliary_go123.go +++ b/contactcenterinsights/apiv1/auxiliary_go123.go @@ -32,12 +32,24 @@ func (it *AnalysisIterator) All() iter.Seq2[*contactcenterinsightspb.Analysis, e return iterator.RangeAdapter(it.Next) } +// All returns an iterator. If an error is returned by the iterator, the +// iterator will stop after that iteration. +func (it *AnalysisRuleIterator) All() iter.Seq2[*contactcenterinsightspb.AnalysisRule, error] { + return iterator.RangeAdapter(it.Next) +} + // All returns an iterator. If an error is returned by the iterator, the // iterator will stop after that iteration. func (it *ConversationIterator) All() iter.Seq2[*contactcenterinsightspb.Conversation, error] { return iterator.RangeAdapter(it.Next) } +// All returns an iterator. If an error is returned by the iterator, the +// iterator will stop after that iteration. +func (it *FeedbackLabelIterator) All() iter.Seq2[*contactcenterinsightspb.FeedbackLabel, error] { + return iterator.RangeAdapter(it.Next) +} + // All returns an iterator. If an error is returned by the iterator, the // iterator will stop after that iteration. func (it *OperationIterator) All() iter.Seq2[*longrunningpb.Operation, error] { @@ -50,6 +62,24 @@ func (it *PhraseMatcherIterator) All() iter.Seq2[*contactcenterinsightspb.Phrase return iterator.RangeAdapter(it.Next) } +// All returns an iterator. If an error is returned by the iterator, the +// iterator will stop after that iteration. +func (it *QaQuestionIterator) All() iter.Seq2[*contactcenterinsightspb.QaQuestion, error] { + return iterator.RangeAdapter(it.Next) +} + +// All returns an iterator. If an error is returned by the iterator, the +// iterator will stop after that iteration. +func (it *QaScorecardIterator) All() iter.Seq2[*contactcenterinsightspb.QaScorecard, error] { + return iterator.RangeAdapter(it.Next) +} + +// All returns an iterator. If an error is returned by the iterator, the +// iterator will stop after that iteration. +func (it *QaScorecardRevisionIterator) All() iter.Seq2[*contactcenterinsightspb.QaScorecardRevision, error] { + return iterator.RangeAdapter(it.Next) +} + // All returns an iterator. If an error is returned by the iterator, the // iterator will stop after that iteration. func (it *ViewIterator) All() iter.Seq2[*contactcenterinsightspb.View, error] { diff --git a/contactcenterinsights/apiv1/contact_center_insights_client.go b/contactcenterinsights/apiv1/contact_center_insights_client.go index c222456f60fb..ce4e3b19f8ab 100755 --- a/contactcenterinsights/apiv1/contact_center_insights_client.go +++ b/contactcenterinsights/apiv1/contact_center_insights_client.go @@ -47,52 +47,83 @@ var newClientHook clientHook // CallOptions contains the retry settings for each method of Client. type CallOptions struct { - CreateConversation []gax.CallOption - UploadConversation []gax.CallOption - UpdateConversation []gax.CallOption - GetConversation []gax.CallOption - ListConversations []gax.CallOption - DeleteConversation []gax.CallOption - CreateAnalysis []gax.CallOption - GetAnalysis []gax.CallOption - ListAnalyses []gax.CallOption - DeleteAnalysis []gax.CallOption - BulkAnalyzeConversations []gax.CallOption - BulkDeleteConversations []gax.CallOption - IngestConversations []gax.CallOption - ExportInsightsData []gax.CallOption - CreateIssueModel []gax.CallOption - UpdateIssueModel []gax.CallOption - GetIssueModel []gax.CallOption - ListIssueModels []gax.CallOption - DeleteIssueModel []gax.CallOption - DeployIssueModel []gax.CallOption - UndeployIssueModel []gax.CallOption - ExportIssueModel []gax.CallOption - ImportIssueModel []gax.CallOption - GetIssue []gax.CallOption - ListIssues []gax.CallOption - UpdateIssue []gax.CallOption - DeleteIssue []gax.CallOption - CalculateIssueModelStats []gax.CallOption - CreatePhraseMatcher []gax.CallOption - GetPhraseMatcher []gax.CallOption - ListPhraseMatchers []gax.CallOption - DeletePhraseMatcher []gax.CallOption - UpdatePhraseMatcher []gax.CallOption - CalculateStats []gax.CallOption - GetSettings []gax.CallOption - UpdateSettings []gax.CallOption - GetEncryptionSpec []gax.CallOption - InitializeEncryptionSpec []gax.CallOption - CreateView []gax.CallOption - GetView []gax.CallOption - ListViews []gax.CallOption - UpdateView []gax.CallOption - DeleteView []gax.CallOption - CancelOperation []gax.CallOption - GetOperation []gax.CallOption - ListOperations []gax.CallOption + CreateConversation []gax.CallOption + UploadConversation []gax.CallOption + UpdateConversation []gax.CallOption + GetConversation []gax.CallOption + ListConversations []gax.CallOption + DeleteConversation []gax.CallOption + CreateAnalysis []gax.CallOption + GetAnalysis []gax.CallOption + ListAnalyses []gax.CallOption + DeleteAnalysis []gax.CallOption + BulkAnalyzeConversations []gax.CallOption + BulkDeleteConversations []gax.CallOption + IngestConversations []gax.CallOption + ExportInsightsData []gax.CallOption + CreateIssueModel []gax.CallOption + UpdateIssueModel []gax.CallOption + GetIssueModel []gax.CallOption + ListIssueModels []gax.CallOption + DeleteIssueModel []gax.CallOption + DeployIssueModel []gax.CallOption + UndeployIssueModel []gax.CallOption + ExportIssueModel []gax.CallOption + ImportIssueModel []gax.CallOption + GetIssue []gax.CallOption + ListIssues []gax.CallOption + UpdateIssue []gax.CallOption + DeleteIssue []gax.CallOption + CalculateIssueModelStats []gax.CallOption + CreatePhraseMatcher []gax.CallOption + GetPhraseMatcher []gax.CallOption + ListPhraseMatchers []gax.CallOption + DeletePhraseMatcher []gax.CallOption + UpdatePhraseMatcher []gax.CallOption + CalculateStats []gax.CallOption + GetSettings []gax.CallOption + UpdateSettings []gax.CallOption + CreateAnalysisRule []gax.CallOption + GetAnalysisRule []gax.CallOption + ListAnalysisRules []gax.CallOption + UpdateAnalysisRule []gax.CallOption + DeleteAnalysisRule []gax.CallOption + GetEncryptionSpec []gax.CallOption + InitializeEncryptionSpec []gax.CallOption + CreateView []gax.CallOption + GetView []gax.CallOption + ListViews []gax.CallOption + UpdateView []gax.CallOption + DeleteView []gax.CallOption + QueryMetrics []gax.CallOption + CreateQaQuestion []gax.CallOption + GetQaQuestion []gax.CallOption + UpdateQaQuestion []gax.CallOption + DeleteQaQuestion []gax.CallOption + ListQaQuestions []gax.CallOption + CreateQaScorecard []gax.CallOption + GetQaScorecard []gax.CallOption + UpdateQaScorecard []gax.CallOption + DeleteQaScorecard []gax.CallOption + ListQaScorecards []gax.CallOption + CreateQaScorecardRevision []gax.CallOption + GetQaScorecardRevision []gax.CallOption + TuneQaScorecardRevision []gax.CallOption + DeployQaScorecardRevision []gax.CallOption + UndeployQaScorecardRevision []gax.CallOption + DeleteQaScorecardRevision []gax.CallOption + ListQaScorecardRevisions []gax.CallOption + CreateFeedbackLabel []gax.CallOption + ListFeedbackLabels []gax.CallOption + GetFeedbackLabel []gax.CallOption + UpdateFeedbackLabel []gax.CallOption + DeleteFeedbackLabel []gax.CallOption + ListAllFeedbackLabels []gax.CallOption + BulkUploadFeedbackLabels []gax.CallOption + BulkDownloadFeedbackLabels []gax.CallOption + CancelOperation []gax.CallOption + GetOperation []gax.CallOption + ListOperations []gax.CallOption } func defaultGRPCClientOptions() []option.ClientOption { @@ -544,7 +575,7 @@ func defaultCallOptions() *CallOptions { }) }), }, - GetEncryptionSpec: []gax.CallOption{ + CreateAnalysisRule: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ @@ -556,7 +587,7 @@ func defaultCallOptions() *CallOptions { }) }), }, - InitializeEncryptionSpec: []gax.CallOption{ + GetAnalysisRule: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ @@ -568,7 +599,7 @@ func defaultCallOptions() *CallOptions { }) }), }, - CreateView: []gax.CallOption{ + ListAnalysisRules: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ @@ -580,7 +611,7 @@ func defaultCallOptions() *CallOptions { }) }), }, - GetView: []gax.CallOption{ + UpdateAnalysisRule: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ @@ -592,7 +623,7 @@ func defaultCallOptions() *CallOptions { }) }), }, - ListViews: []gax.CallOption{ + DeleteAnalysisRule: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ @@ -604,7 +635,7 @@ func defaultCallOptions() *CallOptions { }) }), }, - UpdateView: []gax.CallOption{ + GetEncryptionSpec: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ @@ -616,7 +647,7 @@ func defaultCallOptions() *CallOptions { }) }), }, - DeleteView: []gax.CallOption{ + InitializeEncryptionSpec: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ @@ -628,7 +659,7 @@ func defaultCallOptions() *CallOptions { }) }), }, - CancelOperation: []gax.CallOption{ + CreateView: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ @@ -640,7 +671,7 @@ func defaultCallOptions() *CallOptions { }) }), }, - GetOperation: []gax.CallOption{ + GetView: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ @@ -652,7 +683,7 @@ func defaultCallOptions() *CallOptions { }) }), }, - ListOperations: []gax.CallOption{ + ListViews: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnCodes([]codes.Code{ @@ -664,331 +695,384 @@ func defaultCallOptions() *CallOptions { }) }), }, - } -} - -func defaultRESTCallOptions() *CallOptions { - return &CallOptions{ - CreateConversation: []gax.CallOption{ + UpdateView: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - UploadConversation: []gax.CallOption{ + DeleteView: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - UpdateConversation: []gax.CallOption{ + QueryMetrics: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - GetConversation: []gax.CallOption{ + CreateQaQuestion: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - ListConversations: []gax.CallOption{ + GetQaQuestion: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - DeleteConversation: []gax.CallOption{ + UpdateQaQuestion: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - CreateAnalysis: []gax.CallOption{ + DeleteQaQuestion: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - GetAnalysis: []gax.CallOption{ + ListQaQuestions: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - ListAnalyses: []gax.CallOption{ + CreateQaScorecard: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - DeleteAnalysis: []gax.CallOption{ + GetQaScorecard: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - BulkAnalyzeConversations: []gax.CallOption{ + UpdateQaScorecard: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - BulkDeleteConversations: []gax.CallOption{ + DeleteQaScorecard: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - IngestConversations: []gax.CallOption{ + ListQaScorecards: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - ExportInsightsData: []gax.CallOption{ + CreateQaScorecardRevision: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - CreateIssueModel: []gax.CallOption{ + GetQaScorecardRevision: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - UpdateIssueModel: []gax.CallOption{ + TuneQaScorecardRevision: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - GetIssueModel: []gax.CallOption{ + DeployQaScorecardRevision: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - ListIssueModels: []gax.CallOption{ + UndeployQaScorecardRevision: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - DeleteIssueModel: []gax.CallOption{ + DeleteQaScorecardRevision: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - DeployIssueModel: []gax.CallOption{ + ListQaScorecardRevisions: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - UndeployIssueModel: []gax.CallOption{ + CreateFeedbackLabel: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - ExportIssueModel: []gax.CallOption{ + ListFeedbackLabels: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - ImportIssueModel: []gax.CallOption{ + GetFeedbackLabel: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - GetIssue: []gax.CallOption{ + UpdateFeedbackLabel: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - ListIssues: []gax.CallOption{ + DeleteFeedbackLabel: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - UpdateIssue: []gax.CallOption{ + ListAllFeedbackLabels: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - DeleteIssue: []gax.CallOption{ + BulkUploadFeedbackLabels: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - CalculateIssueModelStats: []gax.CallOption{ + BulkDownloadFeedbackLabels: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - CreatePhraseMatcher: []gax.CallOption{ + CancelOperation: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { - return gax.OnHTTPCodes(gax.Backoff{ + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ Initial: 1000 * time.Millisecond, Max: 10000 * time.Millisecond, Multiplier: 1.30, - }, - http.StatusServiceUnavailable) + }) }), }, - GetPhraseMatcher: []gax.CallOption{ + GetOperation: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + ListOperations: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnCodes([]codes.Code{ + codes.Unavailable, + }, gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }) + }), + }, + } +} + +func defaultRESTCallOptions() *CallOptions { + return &CallOptions{ + CreateConversation: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnHTTPCodes(gax.Backoff{ @@ -999,7 +1083,7 @@ func defaultRESTCallOptions() *CallOptions { http.StatusServiceUnavailable) }), }, - ListPhraseMatchers: []gax.CallOption{ + UploadConversation: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnHTTPCodes(gax.Backoff{ @@ -1010,7 +1094,7 @@ func defaultRESTCallOptions() *CallOptions { http.StatusServiceUnavailable) }), }, - DeletePhraseMatcher: []gax.CallOption{ + UpdateConversation: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnHTTPCodes(gax.Backoff{ @@ -1021,7 +1105,7 @@ func defaultRESTCallOptions() *CallOptions { http.StatusServiceUnavailable) }), }, - UpdatePhraseMatcher: []gax.CallOption{ + GetConversation: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnHTTPCodes(gax.Backoff{ @@ -1032,7 +1116,7 @@ func defaultRESTCallOptions() *CallOptions { http.StatusServiceUnavailable) }), }, - CalculateStats: []gax.CallOption{ + ListConversations: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnHTTPCodes(gax.Backoff{ @@ -1043,7 +1127,7 @@ func defaultRESTCallOptions() *CallOptions { http.StatusServiceUnavailable) }), }, - GetSettings: []gax.CallOption{ + DeleteConversation: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnHTTPCodes(gax.Backoff{ @@ -1054,7 +1138,7 @@ func defaultRESTCallOptions() *CallOptions { http.StatusServiceUnavailable) }), }, - UpdateSettings: []gax.CallOption{ + CreateAnalysis: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnHTTPCodes(gax.Backoff{ @@ -1065,7 +1149,7 @@ func defaultRESTCallOptions() *CallOptions { http.StatusServiceUnavailable) }), }, - GetEncryptionSpec: []gax.CallOption{ + GetAnalysis: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnHTTPCodes(gax.Backoff{ @@ -1076,7 +1160,7 @@ func defaultRESTCallOptions() *CallOptions { http.StatusServiceUnavailable) }), }, - InitializeEncryptionSpec: []gax.CallOption{ + ListAnalyses: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnHTTPCodes(gax.Backoff{ @@ -1087,7 +1171,7 @@ func defaultRESTCallOptions() *CallOptions { http.StatusServiceUnavailable) }), }, - CreateView: []gax.CallOption{ + DeleteAnalysis: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnHTTPCodes(gax.Backoff{ @@ -1098,7 +1182,7 @@ func defaultRESTCallOptions() *CallOptions { http.StatusServiceUnavailable) }), }, - GetView: []gax.CallOption{ + BulkAnalyzeConversations: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnHTTPCodes(gax.Backoff{ @@ -1109,7 +1193,7 @@ func defaultRESTCallOptions() *CallOptions { http.StatusServiceUnavailable) }), }, - ListViews: []gax.CallOption{ + BulkDeleteConversations: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnHTTPCodes(gax.Backoff{ @@ -1120,7 +1204,7 @@ func defaultRESTCallOptions() *CallOptions { http.StatusServiceUnavailable) }), }, - UpdateView: []gax.CallOption{ + IngestConversations: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnHTTPCodes(gax.Backoff{ @@ -1131,7 +1215,7 @@ func defaultRESTCallOptions() *CallOptions { http.StatusServiceUnavailable) }), }, - DeleteView: []gax.CallOption{ + ExportInsightsData: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnHTTPCodes(gax.Backoff{ @@ -1142,7 +1226,7 @@ func defaultRESTCallOptions() *CallOptions { http.StatusServiceUnavailable) }), }, - CancelOperation: []gax.CallOption{ + CreateIssueModel: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnHTTPCodes(gax.Backoff{ @@ -1153,7 +1237,7 @@ func defaultRESTCallOptions() *CallOptions { http.StatusServiceUnavailable) }), }, - GetOperation: []gax.CallOption{ + UpdateIssueModel: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnHTTPCodes(gax.Backoff{ @@ -1164,7 +1248,7 @@ func defaultRESTCallOptions() *CallOptions { http.StatusServiceUnavailable) }), }, - ListOperations: []gax.CallOption{ + GetIssueModel: []gax.CallOption{ gax.WithTimeout(60000 * time.Millisecond), gax.WithRetry(func() gax.Retryer { return gax.OnHTTPCodes(gax.Backoff{ @@ -1175,1550 +1259,5186 @@ func defaultRESTCallOptions() *CallOptions { http.StatusServiceUnavailable) }), }, - } -} - -// internalClient is an interface that defines the methods available from Contact Center AI Insights API. -type internalClient interface { - Close() error - setGoogleClientInfo(...string) - Connection() *grpc.ClientConn - CreateConversation(context.Context, *contactcenterinsightspb.CreateConversationRequest, ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) - UploadConversation(context.Context, *contactcenterinsightspb.UploadConversationRequest, ...gax.CallOption) (*UploadConversationOperation, error) - UploadConversationOperation(name string) *UploadConversationOperation - UpdateConversation(context.Context, *contactcenterinsightspb.UpdateConversationRequest, ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) - GetConversation(context.Context, *contactcenterinsightspb.GetConversationRequest, ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) - ListConversations(context.Context, *contactcenterinsightspb.ListConversationsRequest, ...gax.CallOption) *ConversationIterator - DeleteConversation(context.Context, *contactcenterinsightspb.DeleteConversationRequest, ...gax.CallOption) error - CreateAnalysis(context.Context, *contactcenterinsightspb.CreateAnalysisRequest, ...gax.CallOption) (*CreateAnalysisOperation, error) - CreateAnalysisOperation(name string) *CreateAnalysisOperation - GetAnalysis(context.Context, *contactcenterinsightspb.GetAnalysisRequest, ...gax.CallOption) (*contactcenterinsightspb.Analysis, error) - ListAnalyses(context.Context, *contactcenterinsightspb.ListAnalysesRequest, ...gax.CallOption) *AnalysisIterator - DeleteAnalysis(context.Context, *contactcenterinsightspb.DeleteAnalysisRequest, ...gax.CallOption) error - BulkAnalyzeConversations(context.Context, *contactcenterinsightspb.BulkAnalyzeConversationsRequest, ...gax.CallOption) (*BulkAnalyzeConversationsOperation, error) - BulkAnalyzeConversationsOperation(name string) *BulkAnalyzeConversationsOperation - BulkDeleteConversations(context.Context, *contactcenterinsightspb.BulkDeleteConversationsRequest, ...gax.CallOption) (*BulkDeleteConversationsOperation, error) - BulkDeleteConversationsOperation(name string) *BulkDeleteConversationsOperation - IngestConversations(context.Context, *contactcenterinsightspb.IngestConversationsRequest, ...gax.CallOption) (*IngestConversationsOperation, error) - IngestConversationsOperation(name string) *IngestConversationsOperation - ExportInsightsData(context.Context, *contactcenterinsightspb.ExportInsightsDataRequest, ...gax.CallOption) (*ExportInsightsDataOperation, error) - ExportInsightsDataOperation(name string) *ExportInsightsDataOperation - CreateIssueModel(context.Context, *contactcenterinsightspb.CreateIssueModelRequest, ...gax.CallOption) (*CreateIssueModelOperation, error) - CreateIssueModelOperation(name string) *CreateIssueModelOperation - UpdateIssueModel(context.Context, *contactcenterinsightspb.UpdateIssueModelRequest, ...gax.CallOption) (*contactcenterinsightspb.IssueModel, error) - GetIssueModel(context.Context, *contactcenterinsightspb.GetIssueModelRequest, ...gax.CallOption) (*contactcenterinsightspb.IssueModel, error) - ListIssueModels(context.Context, *contactcenterinsightspb.ListIssueModelsRequest, ...gax.CallOption) (*contactcenterinsightspb.ListIssueModelsResponse, error) - DeleteIssueModel(context.Context, *contactcenterinsightspb.DeleteIssueModelRequest, ...gax.CallOption) (*DeleteIssueModelOperation, error) - DeleteIssueModelOperation(name string) *DeleteIssueModelOperation - DeployIssueModel(context.Context, *contactcenterinsightspb.DeployIssueModelRequest, ...gax.CallOption) (*DeployIssueModelOperation, error) - DeployIssueModelOperation(name string) *DeployIssueModelOperation - UndeployIssueModel(context.Context, *contactcenterinsightspb.UndeployIssueModelRequest, ...gax.CallOption) (*UndeployIssueModelOperation, error) - UndeployIssueModelOperation(name string) *UndeployIssueModelOperation - ExportIssueModel(context.Context, *contactcenterinsightspb.ExportIssueModelRequest, ...gax.CallOption) (*ExportIssueModelOperation, error) - ExportIssueModelOperation(name string) *ExportIssueModelOperation - ImportIssueModel(context.Context, *contactcenterinsightspb.ImportIssueModelRequest, ...gax.CallOption) (*ImportIssueModelOperation, error) - ImportIssueModelOperation(name string) *ImportIssueModelOperation - GetIssue(context.Context, *contactcenterinsightspb.GetIssueRequest, ...gax.CallOption) (*contactcenterinsightspb.Issue, error) - ListIssues(context.Context, *contactcenterinsightspb.ListIssuesRequest, ...gax.CallOption) (*contactcenterinsightspb.ListIssuesResponse, error) - UpdateIssue(context.Context, *contactcenterinsightspb.UpdateIssueRequest, ...gax.CallOption) (*contactcenterinsightspb.Issue, error) - DeleteIssue(context.Context, *contactcenterinsightspb.DeleteIssueRequest, ...gax.CallOption) error - CalculateIssueModelStats(context.Context, *contactcenterinsightspb.CalculateIssueModelStatsRequest, ...gax.CallOption) (*contactcenterinsightspb.CalculateIssueModelStatsResponse, error) - CreatePhraseMatcher(context.Context, *contactcenterinsightspb.CreatePhraseMatcherRequest, ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) - GetPhraseMatcher(context.Context, *contactcenterinsightspb.GetPhraseMatcherRequest, ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) - ListPhraseMatchers(context.Context, *contactcenterinsightspb.ListPhraseMatchersRequest, ...gax.CallOption) *PhraseMatcherIterator - DeletePhraseMatcher(context.Context, *contactcenterinsightspb.DeletePhraseMatcherRequest, ...gax.CallOption) error - UpdatePhraseMatcher(context.Context, *contactcenterinsightspb.UpdatePhraseMatcherRequest, ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) - CalculateStats(context.Context, *contactcenterinsightspb.CalculateStatsRequest, ...gax.CallOption) (*contactcenterinsightspb.CalculateStatsResponse, error) - GetSettings(context.Context, *contactcenterinsightspb.GetSettingsRequest, ...gax.CallOption) (*contactcenterinsightspb.Settings, error) - UpdateSettings(context.Context, *contactcenterinsightspb.UpdateSettingsRequest, ...gax.CallOption) (*contactcenterinsightspb.Settings, error) - GetEncryptionSpec(context.Context, *contactcenterinsightspb.GetEncryptionSpecRequest, ...gax.CallOption) (*contactcenterinsightspb.EncryptionSpec, error) - InitializeEncryptionSpec(context.Context, *contactcenterinsightspb.InitializeEncryptionSpecRequest, ...gax.CallOption) (*InitializeEncryptionSpecOperation, error) - InitializeEncryptionSpecOperation(name string) *InitializeEncryptionSpecOperation - CreateView(context.Context, *contactcenterinsightspb.CreateViewRequest, ...gax.CallOption) (*contactcenterinsightspb.View, error) - GetView(context.Context, *contactcenterinsightspb.GetViewRequest, ...gax.CallOption) (*contactcenterinsightspb.View, error) - ListViews(context.Context, *contactcenterinsightspb.ListViewsRequest, ...gax.CallOption) *ViewIterator - UpdateView(context.Context, *contactcenterinsightspb.UpdateViewRequest, ...gax.CallOption) (*contactcenterinsightspb.View, error) - DeleteView(context.Context, *contactcenterinsightspb.DeleteViewRequest, ...gax.CallOption) error - CancelOperation(context.Context, *longrunningpb.CancelOperationRequest, ...gax.CallOption) error - GetOperation(context.Context, *longrunningpb.GetOperationRequest, ...gax.CallOption) (*longrunningpb.Operation, error) - ListOperations(context.Context, *longrunningpb.ListOperationsRequest, ...gax.CallOption) *OperationIterator -} - -// Client is a client for interacting with Contact Center AI Insights API. -// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. -// -// An API that lets users analyze and explore their business conversation data. -type Client struct { - // The internal transport-dependent client. - internalClient internalClient - - // The call options for this service. - CallOptions *CallOptions - - // LROClient is used internally to handle long-running operations. - // It is exposed so that its CallOptions can be modified if required. - // Users should not Close this client. - LROClient *lroauto.OperationsClient -} - -// Wrapper methods routed to the internal client. - -// Close closes the connection to the API service. The user should invoke this when -// the client is no longer required. -func (c *Client) Close() error { - return c.internalClient.Close() -} - -// setGoogleClientInfo sets the name and version of the application in -// the `x-goog-api-client` header passed on each request. Intended for -// use by Google-written clients. -func (c *Client) setGoogleClientInfo(keyval ...string) { - c.internalClient.setGoogleClientInfo(keyval...) -} - -// Connection returns a connection to the API service. -// -// Deprecated: Connections are now pooled so this method does not always -// return the same resource. -func (c *Client) Connection() *grpc.ClientConn { - return c.internalClient.Connection() -} - -// CreateConversation creates a conversation. -// Note that this method does not support audio transcription or redaction. -// Use conversations.upload instead. -func (c *Client) CreateConversation(ctx context.Context, req *contactcenterinsightspb.CreateConversationRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) { - return c.internalClient.CreateConversation(ctx, req, opts...) -} - -// UploadConversation create a long-running conversation upload operation. This method differs -// from CreateConversation by allowing audio transcription and optional DLP -// redaction. -func (c *Client) UploadConversation(ctx context.Context, req *contactcenterinsightspb.UploadConversationRequest, opts ...gax.CallOption) (*UploadConversationOperation, error) { - return c.internalClient.UploadConversation(ctx, req, opts...) -} - -// UploadConversationOperation returns a new UploadConversationOperation from a given name. -// The name must be that of a previously created UploadConversationOperation, possibly from a different process. -func (c *Client) UploadConversationOperation(name string) *UploadConversationOperation { - return c.internalClient.UploadConversationOperation(name) -} - -// UpdateConversation updates a conversation. -func (c *Client) UpdateConversation(ctx context.Context, req *contactcenterinsightspb.UpdateConversationRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) { - return c.internalClient.UpdateConversation(ctx, req, opts...) -} - -// GetConversation gets a conversation. -func (c *Client) GetConversation(ctx context.Context, req *contactcenterinsightspb.GetConversationRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) { - return c.internalClient.GetConversation(ctx, req, opts...) -} - -// ListConversations lists conversations. -func (c *Client) ListConversations(ctx context.Context, req *contactcenterinsightspb.ListConversationsRequest, opts ...gax.CallOption) *ConversationIterator { - return c.internalClient.ListConversations(ctx, req, opts...) -} - -// DeleteConversation deletes a conversation. -func (c *Client) DeleteConversation(ctx context.Context, req *contactcenterinsightspb.DeleteConversationRequest, opts ...gax.CallOption) error { - return c.internalClient.DeleteConversation(ctx, req, opts...) -} - -// CreateAnalysis creates an analysis. The long running operation is done when the analysis -// has completed. -func (c *Client) CreateAnalysis(ctx context.Context, req *contactcenterinsightspb.CreateAnalysisRequest, opts ...gax.CallOption) (*CreateAnalysisOperation, error) { - return c.internalClient.CreateAnalysis(ctx, req, opts...) -} - -// CreateAnalysisOperation returns a new CreateAnalysisOperation from a given name. -// The name must be that of a previously created CreateAnalysisOperation, possibly from a different process. -func (c *Client) CreateAnalysisOperation(name string) *CreateAnalysisOperation { - return c.internalClient.CreateAnalysisOperation(name) -} - -// GetAnalysis gets an analysis. -func (c *Client) GetAnalysis(ctx context.Context, req *contactcenterinsightspb.GetAnalysisRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Analysis, error) { - return c.internalClient.GetAnalysis(ctx, req, opts...) -} - -// ListAnalyses lists analyses. -func (c *Client) ListAnalyses(ctx context.Context, req *contactcenterinsightspb.ListAnalysesRequest, opts ...gax.CallOption) *AnalysisIterator { - return c.internalClient.ListAnalyses(ctx, req, opts...) -} - -// DeleteAnalysis deletes an analysis. -func (c *Client) DeleteAnalysis(ctx context.Context, req *contactcenterinsightspb.DeleteAnalysisRequest, opts ...gax.CallOption) error { - return c.internalClient.DeleteAnalysis(ctx, req, opts...) -} - -// BulkAnalyzeConversations analyzes multiple conversations in a single request. -func (c *Client) BulkAnalyzeConversations(ctx context.Context, req *contactcenterinsightspb.BulkAnalyzeConversationsRequest, opts ...gax.CallOption) (*BulkAnalyzeConversationsOperation, error) { - return c.internalClient.BulkAnalyzeConversations(ctx, req, opts...) -} - -// BulkAnalyzeConversationsOperation returns a new BulkAnalyzeConversationsOperation from a given name. -// The name must be that of a previously created BulkAnalyzeConversationsOperation, possibly from a different process. -func (c *Client) BulkAnalyzeConversationsOperation(name string) *BulkAnalyzeConversationsOperation { - return c.internalClient.BulkAnalyzeConversationsOperation(name) -} - -// BulkDeleteConversations deletes multiple conversations in a single request. -func (c *Client) BulkDeleteConversations(ctx context.Context, req *contactcenterinsightspb.BulkDeleteConversationsRequest, opts ...gax.CallOption) (*BulkDeleteConversationsOperation, error) { - return c.internalClient.BulkDeleteConversations(ctx, req, opts...) -} - -// BulkDeleteConversationsOperation returns a new BulkDeleteConversationsOperation from a given name. -// The name must be that of a previously created BulkDeleteConversationsOperation, possibly from a different process. + ListIssueModels: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + DeleteIssueModel: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + DeployIssueModel: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + UndeployIssueModel: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ExportIssueModel: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ImportIssueModel: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetIssue: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ListIssues: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + UpdateIssue: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + DeleteIssue: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + CalculateIssueModelStats: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + CreatePhraseMatcher: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetPhraseMatcher: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ListPhraseMatchers: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + DeletePhraseMatcher: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + UpdatePhraseMatcher: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + CalculateStats: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetSettings: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + UpdateSettings: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + CreateAnalysisRule: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetAnalysisRule: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ListAnalysisRules: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + UpdateAnalysisRule: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + DeleteAnalysisRule: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetEncryptionSpec: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + InitializeEncryptionSpec: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + CreateView: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetView: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ListViews: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + UpdateView: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + DeleteView: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + QueryMetrics: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + CreateQaQuestion: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetQaQuestion: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + UpdateQaQuestion: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + DeleteQaQuestion: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ListQaQuestions: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + CreateQaScorecard: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetQaScorecard: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + UpdateQaScorecard: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + DeleteQaScorecard: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ListQaScorecards: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + CreateQaScorecardRevision: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetQaScorecardRevision: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + TuneQaScorecardRevision: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + DeployQaScorecardRevision: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + UndeployQaScorecardRevision: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + DeleteQaScorecardRevision: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ListQaScorecardRevisions: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + CreateFeedbackLabel: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ListFeedbackLabels: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetFeedbackLabel: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + UpdateFeedbackLabel: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + DeleteFeedbackLabel: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ListAllFeedbackLabels: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + BulkUploadFeedbackLabels: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + BulkDownloadFeedbackLabels: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + CancelOperation: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + GetOperation: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + ListOperations: []gax.CallOption{ + gax.WithTimeout(60000 * time.Millisecond), + gax.WithRetry(func() gax.Retryer { + return gax.OnHTTPCodes(gax.Backoff{ + Initial: 1000 * time.Millisecond, + Max: 10000 * time.Millisecond, + Multiplier: 1.30, + }, + http.StatusServiceUnavailable) + }), + }, + } +} + +// internalClient is an interface that defines the methods available from Contact Center AI Insights API. +type internalClient interface { + Close() error + setGoogleClientInfo(...string) + Connection() *grpc.ClientConn + CreateConversation(context.Context, *contactcenterinsightspb.CreateConversationRequest, ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) + UploadConversation(context.Context, *contactcenterinsightspb.UploadConversationRequest, ...gax.CallOption) (*UploadConversationOperation, error) + UploadConversationOperation(name string) *UploadConversationOperation + UpdateConversation(context.Context, *contactcenterinsightspb.UpdateConversationRequest, ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) + GetConversation(context.Context, *contactcenterinsightspb.GetConversationRequest, ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) + ListConversations(context.Context, *contactcenterinsightspb.ListConversationsRequest, ...gax.CallOption) *ConversationIterator + DeleteConversation(context.Context, *contactcenterinsightspb.DeleteConversationRequest, ...gax.CallOption) error + CreateAnalysis(context.Context, *contactcenterinsightspb.CreateAnalysisRequest, ...gax.CallOption) (*CreateAnalysisOperation, error) + CreateAnalysisOperation(name string) *CreateAnalysisOperation + GetAnalysis(context.Context, *contactcenterinsightspb.GetAnalysisRequest, ...gax.CallOption) (*contactcenterinsightspb.Analysis, error) + ListAnalyses(context.Context, *contactcenterinsightspb.ListAnalysesRequest, ...gax.CallOption) *AnalysisIterator + DeleteAnalysis(context.Context, *contactcenterinsightspb.DeleteAnalysisRequest, ...gax.CallOption) error + BulkAnalyzeConversations(context.Context, *contactcenterinsightspb.BulkAnalyzeConversationsRequest, ...gax.CallOption) (*BulkAnalyzeConversationsOperation, error) + BulkAnalyzeConversationsOperation(name string) *BulkAnalyzeConversationsOperation + BulkDeleteConversations(context.Context, *contactcenterinsightspb.BulkDeleteConversationsRequest, ...gax.CallOption) (*BulkDeleteConversationsOperation, error) + BulkDeleteConversationsOperation(name string) *BulkDeleteConversationsOperation + IngestConversations(context.Context, *contactcenterinsightspb.IngestConversationsRequest, ...gax.CallOption) (*IngestConversationsOperation, error) + IngestConversationsOperation(name string) *IngestConversationsOperation + ExportInsightsData(context.Context, *contactcenterinsightspb.ExportInsightsDataRequest, ...gax.CallOption) (*ExportInsightsDataOperation, error) + ExportInsightsDataOperation(name string) *ExportInsightsDataOperation + CreateIssueModel(context.Context, *contactcenterinsightspb.CreateIssueModelRequest, ...gax.CallOption) (*CreateIssueModelOperation, error) + CreateIssueModelOperation(name string) *CreateIssueModelOperation + UpdateIssueModel(context.Context, *contactcenterinsightspb.UpdateIssueModelRequest, ...gax.CallOption) (*contactcenterinsightspb.IssueModel, error) + GetIssueModel(context.Context, *contactcenterinsightspb.GetIssueModelRequest, ...gax.CallOption) (*contactcenterinsightspb.IssueModel, error) + ListIssueModels(context.Context, *contactcenterinsightspb.ListIssueModelsRequest, ...gax.CallOption) (*contactcenterinsightspb.ListIssueModelsResponse, error) + DeleteIssueModel(context.Context, *contactcenterinsightspb.DeleteIssueModelRequest, ...gax.CallOption) (*DeleteIssueModelOperation, error) + DeleteIssueModelOperation(name string) *DeleteIssueModelOperation + DeployIssueModel(context.Context, *contactcenterinsightspb.DeployIssueModelRequest, ...gax.CallOption) (*DeployIssueModelOperation, error) + DeployIssueModelOperation(name string) *DeployIssueModelOperation + UndeployIssueModel(context.Context, *contactcenterinsightspb.UndeployIssueModelRequest, ...gax.CallOption) (*UndeployIssueModelOperation, error) + UndeployIssueModelOperation(name string) *UndeployIssueModelOperation + ExportIssueModel(context.Context, *contactcenterinsightspb.ExportIssueModelRequest, ...gax.CallOption) (*ExportIssueModelOperation, error) + ExportIssueModelOperation(name string) *ExportIssueModelOperation + ImportIssueModel(context.Context, *contactcenterinsightspb.ImportIssueModelRequest, ...gax.CallOption) (*ImportIssueModelOperation, error) + ImportIssueModelOperation(name string) *ImportIssueModelOperation + GetIssue(context.Context, *contactcenterinsightspb.GetIssueRequest, ...gax.CallOption) (*contactcenterinsightspb.Issue, error) + ListIssues(context.Context, *contactcenterinsightspb.ListIssuesRequest, ...gax.CallOption) (*contactcenterinsightspb.ListIssuesResponse, error) + UpdateIssue(context.Context, *contactcenterinsightspb.UpdateIssueRequest, ...gax.CallOption) (*contactcenterinsightspb.Issue, error) + DeleteIssue(context.Context, *contactcenterinsightspb.DeleteIssueRequest, ...gax.CallOption) error + CalculateIssueModelStats(context.Context, *contactcenterinsightspb.CalculateIssueModelStatsRequest, ...gax.CallOption) (*contactcenterinsightspb.CalculateIssueModelStatsResponse, error) + CreatePhraseMatcher(context.Context, *contactcenterinsightspb.CreatePhraseMatcherRequest, ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) + GetPhraseMatcher(context.Context, *contactcenterinsightspb.GetPhraseMatcherRequest, ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) + ListPhraseMatchers(context.Context, *contactcenterinsightspb.ListPhraseMatchersRequest, ...gax.CallOption) *PhraseMatcherIterator + DeletePhraseMatcher(context.Context, *contactcenterinsightspb.DeletePhraseMatcherRequest, ...gax.CallOption) error + UpdatePhraseMatcher(context.Context, *contactcenterinsightspb.UpdatePhraseMatcherRequest, ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) + CalculateStats(context.Context, *contactcenterinsightspb.CalculateStatsRequest, ...gax.CallOption) (*contactcenterinsightspb.CalculateStatsResponse, error) + GetSettings(context.Context, *contactcenterinsightspb.GetSettingsRequest, ...gax.CallOption) (*contactcenterinsightspb.Settings, error) + UpdateSettings(context.Context, *contactcenterinsightspb.UpdateSettingsRequest, ...gax.CallOption) (*contactcenterinsightspb.Settings, error) + CreateAnalysisRule(context.Context, *contactcenterinsightspb.CreateAnalysisRuleRequest, ...gax.CallOption) (*contactcenterinsightspb.AnalysisRule, error) + GetAnalysisRule(context.Context, *contactcenterinsightspb.GetAnalysisRuleRequest, ...gax.CallOption) (*contactcenterinsightspb.AnalysisRule, error) + ListAnalysisRules(context.Context, *contactcenterinsightspb.ListAnalysisRulesRequest, ...gax.CallOption) *AnalysisRuleIterator + UpdateAnalysisRule(context.Context, *contactcenterinsightspb.UpdateAnalysisRuleRequest, ...gax.CallOption) (*contactcenterinsightspb.AnalysisRule, error) + DeleteAnalysisRule(context.Context, *contactcenterinsightspb.DeleteAnalysisRuleRequest, ...gax.CallOption) error + GetEncryptionSpec(context.Context, *contactcenterinsightspb.GetEncryptionSpecRequest, ...gax.CallOption) (*contactcenterinsightspb.EncryptionSpec, error) + InitializeEncryptionSpec(context.Context, *contactcenterinsightspb.InitializeEncryptionSpecRequest, ...gax.CallOption) (*InitializeEncryptionSpecOperation, error) + InitializeEncryptionSpecOperation(name string) *InitializeEncryptionSpecOperation + CreateView(context.Context, *contactcenterinsightspb.CreateViewRequest, ...gax.CallOption) (*contactcenterinsightspb.View, error) + GetView(context.Context, *contactcenterinsightspb.GetViewRequest, ...gax.CallOption) (*contactcenterinsightspb.View, error) + ListViews(context.Context, *contactcenterinsightspb.ListViewsRequest, ...gax.CallOption) *ViewIterator + UpdateView(context.Context, *contactcenterinsightspb.UpdateViewRequest, ...gax.CallOption) (*contactcenterinsightspb.View, error) + DeleteView(context.Context, *contactcenterinsightspb.DeleteViewRequest, ...gax.CallOption) error + QueryMetrics(context.Context, *contactcenterinsightspb.QueryMetricsRequest, ...gax.CallOption) (*QueryMetricsOperation, error) + QueryMetricsOperation(name string) *QueryMetricsOperation + CreateQaQuestion(context.Context, *contactcenterinsightspb.CreateQaQuestionRequest, ...gax.CallOption) (*contactcenterinsightspb.QaQuestion, error) + GetQaQuestion(context.Context, *contactcenterinsightspb.GetQaQuestionRequest, ...gax.CallOption) (*contactcenterinsightspb.QaQuestion, error) + UpdateQaQuestion(context.Context, *contactcenterinsightspb.UpdateQaQuestionRequest, ...gax.CallOption) (*contactcenterinsightspb.QaQuestion, error) + DeleteQaQuestion(context.Context, *contactcenterinsightspb.DeleteQaQuestionRequest, ...gax.CallOption) error + ListQaQuestions(context.Context, *contactcenterinsightspb.ListQaQuestionsRequest, ...gax.CallOption) *QaQuestionIterator + CreateQaScorecard(context.Context, *contactcenterinsightspb.CreateQaScorecardRequest, ...gax.CallOption) (*contactcenterinsightspb.QaScorecard, error) + GetQaScorecard(context.Context, *contactcenterinsightspb.GetQaScorecardRequest, ...gax.CallOption) (*contactcenterinsightspb.QaScorecard, error) + UpdateQaScorecard(context.Context, *contactcenterinsightspb.UpdateQaScorecardRequest, ...gax.CallOption) (*contactcenterinsightspb.QaScorecard, error) + DeleteQaScorecard(context.Context, *contactcenterinsightspb.DeleteQaScorecardRequest, ...gax.CallOption) error + ListQaScorecards(context.Context, *contactcenterinsightspb.ListQaScorecardsRequest, ...gax.CallOption) *QaScorecardIterator + CreateQaScorecardRevision(context.Context, *contactcenterinsightspb.CreateQaScorecardRevisionRequest, ...gax.CallOption) (*contactcenterinsightspb.QaScorecardRevision, error) + GetQaScorecardRevision(context.Context, *contactcenterinsightspb.GetQaScorecardRevisionRequest, ...gax.CallOption) (*contactcenterinsightspb.QaScorecardRevision, error) + TuneQaScorecardRevision(context.Context, *contactcenterinsightspb.TuneQaScorecardRevisionRequest, ...gax.CallOption) (*TuneQaScorecardRevisionOperation, error) + TuneQaScorecardRevisionOperation(name string) *TuneQaScorecardRevisionOperation + DeployQaScorecardRevision(context.Context, *contactcenterinsightspb.DeployQaScorecardRevisionRequest, ...gax.CallOption) (*contactcenterinsightspb.QaScorecardRevision, error) + UndeployQaScorecardRevision(context.Context, *contactcenterinsightspb.UndeployQaScorecardRevisionRequest, ...gax.CallOption) (*contactcenterinsightspb.QaScorecardRevision, error) + DeleteQaScorecardRevision(context.Context, *contactcenterinsightspb.DeleteQaScorecardRevisionRequest, ...gax.CallOption) error + ListQaScorecardRevisions(context.Context, *contactcenterinsightspb.ListQaScorecardRevisionsRequest, ...gax.CallOption) *QaScorecardRevisionIterator + CreateFeedbackLabel(context.Context, *contactcenterinsightspb.CreateFeedbackLabelRequest, ...gax.CallOption) (*contactcenterinsightspb.FeedbackLabel, error) + ListFeedbackLabels(context.Context, *contactcenterinsightspb.ListFeedbackLabelsRequest, ...gax.CallOption) *FeedbackLabelIterator + GetFeedbackLabel(context.Context, *contactcenterinsightspb.GetFeedbackLabelRequest, ...gax.CallOption) (*contactcenterinsightspb.FeedbackLabel, error) + UpdateFeedbackLabel(context.Context, *contactcenterinsightspb.UpdateFeedbackLabelRequest, ...gax.CallOption) (*contactcenterinsightspb.FeedbackLabel, error) + DeleteFeedbackLabel(context.Context, *contactcenterinsightspb.DeleteFeedbackLabelRequest, ...gax.CallOption) error + ListAllFeedbackLabels(context.Context, *contactcenterinsightspb.ListAllFeedbackLabelsRequest, ...gax.CallOption) *FeedbackLabelIterator + BulkUploadFeedbackLabels(context.Context, *contactcenterinsightspb.BulkUploadFeedbackLabelsRequest, ...gax.CallOption) (*BulkUploadFeedbackLabelsOperation, error) + BulkUploadFeedbackLabelsOperation(name string) *BulkUploadFeedbackLabelsOperation + BulkDownloadFeedbackLabels(context.Context, *contactcenterinsightspb.BulkDownloadFeedbackLabelsRequest, ...gax.CallOption) (*BulkDownloadFeedbackLabelsOperation, error) + BulkDownloadFeedbackLabelsOperation(name string) *BulkDownloadFeedbackLabelsOperation + CancelOperation(context.Context, *longrunningpb.CancelOperationRequest, ...gax.CallOption) error + GetOperation(context.Context, *longrunningpb.GetOperationRequest, ...gax.CallOption) (*longrunningpb.Operation, error) + ListOperations(context.Context, *longrunningpb.ListOperationsRequest, ...gax.CallOption) *OperationIterator +} + +// Client is a client for interacting with Contact Center AI Insights API. +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +// +// An API that lets users analyze and explore their business conversation data. +type Client struct { + // The internal transport-dependent client. + internalClient internalClient + + // The call options for this service. + CallOptions *CallOptions + + // LROClient is used internally to handle long-running operations. + // It is exposed so that its CallOptions can be modified if required. + // Users should not Close this client. + LROClient *lroauto.OperationsClient +} + +// Wrapper methods routed to the internal client. + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *Client) Close() error { + return c.internalClient.Close() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *Client) setGoogleClientInfo(keyval ...string) { + c.internalClient.setGoogleClientInfo(keyval...) +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *Client) Connection() *grpc.ClientConn { + return c.internalClient.Connection() +} + +// CreateConversation creates a conversation. +// Note that this method does not support audio transcription or redaction. +// Use conversations.upload instead. +func (c *Client) CreateConversation(ctx context.Context, req *contactcenterinsightspb.CreateConversationRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) { + return c.internalClient.CreateConversation(ctx, req, opts...) +} + +// UploadConversation create a long-running conversation upload operation. This method differs +// from CreateConversation by allowing audio transcription and optional DLP +// redaction. +func (c *Client) UploadConversation(ctx context.Context, req *contactcenterinsightspb.UploadConversationRequest, opts ...gax.CallOption) (*UploadConversationOperation, error) { + return c.internalClient.UploadConversation(ctx, req, opts...) +} + +// UploadConversationOperation returns a new UploadConversationOperation from a given name. +// The name must be that of a previously created UploadConversationOperation, possibly from a different process. +func (c *Client) UploadConversationOperation(name string) *UploadConversationOperation { + return c.internalClient.UploadConversationOperation(name) +} + +// UpdateConversation updates a conversation. +func (c *Client) UpdateConversation(ctx context.Context, req *contactcenterinsightspb.UpdateConversationRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) { + return c.internalClient.UpdateConversation(ctx, req, opts...) +} + +// GetConversation gets a conversation. +func (c *Client) GetConversation(ctx context.Context, req *contactcenterinsightspb.GetConversationRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) { + return c.internalClient.GetConversation(ctx, req, opts...) +} + +// ListConversations lists conversations. +func (c *Client) ListConversations(ctx context.Context, req *contactcenterinsightspb.ListConversationsRequest, opts ...gax.CallOption) *ConversationIterator { + return c.internalClient.ListConversations(ctx, req, opts...) +} + +// DeleteConversation deletes a conversation. +func (c *Client) DeleteConversation(ctx context.Context, req *contactcenterinsightspb.DeleteConversationRequest, opts ...gax.CallOption) error { + return c.internalClient.DeleteConversation(ctx, req, opts...) +} + +// CreateAnalysis creates an analysis. The long running operation is done when the analysis +// has completed. +func (c *Client) CreateAnalysis(ctx context.Context, req *contactcenterinsightspb.CreateAnalysisRequest, opts ...gax.CallOption) (*CreateAnalysisOperation, error) { + return c.internalClient.CreateAnalysis(ctx, req, opts...) +} + +// CreateAnalysisOperation returns a new CreateAnalysisOperation from a given name. +// The name must be that of a previously created CreateAnalysisOperation, possibly from a different process. +func (c *Client) CreateAnalysisOperation(name string) *CreateAnalysisOperation { + return c.internalClient.CreateAnalysisOperation(name) +} + +// GetAnalysis gets an analysis. +func (c *Client) GetAnalysis(ctx context.Context, req *contactcenterinsightspb.GetAnalysisRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Analysis, error) { + return c.internalClient.GetAnalysis(ctx, req, opts...) +} + +// ListAnalyses lists analyses. +func (c *Client) ListAnalyses(ctx context.Context, req *contactcenterinsightspb.ListAnalysesRequest, opts ...gax.CallOption) *AnalysisIterator { + return c.internalClient.ListAnalyses(ctx, req, opts...) +} + +// DeleteAnalysis deletes an analysis. +func (c *Client) DeleteAnalysis(ctx context.Context, req *contactcenterinsightspb.DeleteAnalysisRequest, opts ...gax.CallOption) error { + return c.internalClient.DeleteAnalysis(ctx, req, opts...) +} + +// BulkAnalyzeConversations analyzes multiple conversations in a single request. +func (c *Client) BulkAnalyzeConversations(ctx context.Context, req *contactcenterinsightspb.BulkAnalyzeConversationsRequest, opts ...gax.CallOption) (*BulkAnalyzeConversationsOperation, error) { + return c.internalClient.BulkAnalyzeConversations(ctx, req, opts...) +} + +// BulkAnalyzeConversationsOperation returns a new BulkAnalyzeConversationsOperation from a given name. +// The name must be that of a previously created BulkAnalyzeConversationsOperation, possibly from a different process. +func (c *Client) BulkAnalyzeConversationsOperation(name string) *BulkAnalyzeConversationsOperation { + return c.internalClient.BulkAnalyzeConversationsOperation(name) +} + +// BulkDeleteConversations deletes multiple conversations in a single request. +func (c *Client) BulkDeleteConversations(ctx context.Context, req *contactcenterinsightspb.BulkDeleteConversationsRequest, opts ...gax.CallOption) (*BulkDeleteConversationsOperation, error) { + return c.internalClient.BulkDeleteConversations(ctx, req, opts...) +} + +// BulkDeleteConversationsOperation returns a new BulkDeleteConversationsOperation from a given name. +// The name must be that of a previously created BulkDeleteConversationsOperation, possibly from a different process. func (c *Client) BulkDeleteConversationsOperation(name string) *BulkDeleteConversationsOperation { return c.internalClient.BulkDeleteConversationsOperation(name) } -// IngestConversations imports conversations and processes them according to the user’s -// configuration. -func (c *Client) IngestConversations(ctx context.Context, req *contactcenterinsightspb.IngestConversationsRequest, opts ...gax.CallOption) (*IngestConversationsOperation, error) { - return c.internalClient.IngestConversations(ctx, req, opts...) -} +// IngestConversations imports conversations and processes them according to the user’s +// configuration. +func (c *Client) IngestConversations(ctx context.Context, req *contactcenterinsightspb.IngestConversationsRequest, opts ...gax.CallOption) (*IngestConversationsOperation, error) { + return c.internalClient.IngestConversations(ctx, req, opts...) +} + +// IngestConversationsOperation returns a new IngestConversationsOperation from a given name. +// The name must be that of a previously created IngestConversationsOperation, possibly from a different process. +func (c *Client) IngestConversationsOperation(name string) *IngestConversationsOperation { + return c.internalClient.IngestConversationsOperation(name) +} + +// ExportInsightsData export insights data to a destination defined in the request body. +func (c *Client) ExportInsightsData(ctx context.Context, req *contactcenterinsightspb.ExportInsightsDataRequest, opts ...gax.CallOption) (*ExportInsightsDataOperation, error) { + return c.internalClient.ExportInsightsData(ctx, req, opts...) +} + +// ExportInsightsDataOperation returns a new ExportInsightsDataOperation from a given name. +// The name must be that of a previously created ExportInsightsDataOperation, possibly from a different process. +func (c *Client) ExportInsightsDataOperation(name string) *ExportInsightsDataOperation { + return c.internalClient.ExportInsightsDataOperation(name) +} + +// CreateIssueModel creates an issue model. +func (c *Client) CreateIssueModel(ctx context.Context, req *contactcenterinsightspb.CreateIssueModelRequest, opts ...gax.CallOption) (*CreateIssueModelOperation, error) { + return c.internalClient.CreateIssueModel(ctx, req, opts...) +} + +// CreateIssueModelOperation returns a new CreateIssueModelOperation from a given name. +// The name must be that of a previously created CreateIssueModelOperation, possibly from a different process. +func (c *Client) CreateIssueModelOperation(name string) *CreateIssueModelOperation { + return c.internalClient.CreateIssueModelOperation(name) +} + +// UpdateIssueModel updates an issue model. +func (c *Client) UpdateIssueModel(ctx context.Context, req *contactcenterinsightspb.UpdateIssueModelRequest, opts ...gax.CallOption) (*contactcenterinsightspb.IssueModel, error) { + return c.internalClient.UpdateIssueModel(ctx, req, opts...) +} + +// GetIssueModel gets an issue model. +func (c *Client) GetIssueModel(ctx context.Context, req *contactcenterinsightspb.GetIssueModelRequest, opts ...gax.CallOption) (*contactcenterinsightspb.IssueModel, error) { + return c.internalClient.GetIssueModel(ctx, req, opts...) +} + +// ListIssueModels lists issue models. +func (c *Client) ListIssueModels(ctx context.Context, req *contactcenterinsightspb.ListIssueModelsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.ListIssueModelsResponse, error) { + return c.internalClient.ListIssueModels(ctx, req, opts...) +} + +// DeleteIssueModel deletes an issue model. +func (c *Client) DeleteIssueModel(ctx context.Context, req *contactcenterinsightspb.DeleteIssueModelRequest, opts ...gax.CallOption) (*DeleteIssueModelOperation, error) { + return c.internalClient.DeleteIssueModel(ctx, req, opts...) +} + +// DeleteIssueModelOperation returns a new DeleteIssueModelOperation from a given name. +// The name must be that of a previously created DeleteIssueModelOperation, possibly from a different process. +func (c *Client) DeleteIssueModelOperation(name string) *DeleteIssueModelOperation { + return c.internalClient.DeleteIssueModelOperation(name) +} + +// DeployIssueModel deploys an issue model. Returns an error if a model is already deployed. +// An issue model can only be used in analysis after it has been deployed. +func (c *Client) DeployIssueModel(ctx context.Context, req *contactcenterinsightspb.DeployIssueModelRequest, opts ...gax.CallOption) (*DeployIssueModelOperation, error) { + return c.internalClient.DeployIssueModel(ctx, req, opts...) +} + +// DeployIssueModelOperation returns a new DeployIssueModelOperation from a given name. +// The name must be that of a previously created DeployIssueModelOperation, possibly from a different process. +func (c *Client) DeployIssueModelOperation(name string) *DeployIssueModelOperation { + return c.internalClient.DeployIssueModelOperation(name) +} + +// UndeployIssueModel undeploys an issue model. +// An issue model can not be used in analysis after it has been undeployed. +func (c *Client) UndeployIssueModel(ctx context.Context, req *contactcenterinsightspb.UndeployIssueModelRequest, opts ...gax.CallOption) (*UndeployIssueModelOperation, error) { + return c.internalClient.UndeployIssueModel(ctx, req, opts...) +} + +// UndeployIssueModelOperation returns a new UndeployIssueModelOperation from a given name. +// The name must be that of a previously created UndeployIssueModelOperation, possibly from a different process. +func (c *Client) UndeployIssueModelOperation(name string) *UndeployIssueModelOperation { + return c.internalClient.UndeployIssueModelOperation(name) +} + +// ExportIssueModel exports an issue model to the provided destination. +func (c *Client) ExportIssueModel(ctx context.Context, req *contactcenterinsightspb.ExportIssueModelRequest, opts ...gax.CallOption) (*ExportIssueModelOperation, error) { + return c.internalClient.ExportIssueModel(ctx, req, opts...) +} + +// ExportIssueModelOperation returns a new ExportIssueModelOperation from a given name. +// The name must be that of a previously created ExportIssueModelOperation, possibly from a different process. +func (c *Client) ExportIssueModelOperation(name string) *ExportIssueModelOperation { + return c.internalClient.ExportIssueModelOperation(name) +} + +// ImportIssueModel imports an issue model from a Cloud Storage bucket. +func (c *Client) ImportIssueModel(ctx context.Context, req *contactcenterinsightspb.ImportIssueModelRequest, opts ...gax.CallOption) (*ImportIssueModelOperation, error) { + return c.internalClient.ImportIssueModel(ctx, req, opts...) +} + +// ImportIssueModelOperation returns a new ImportIssueModelOperation from a given name. +// The name must be that of a previously created ImportIssueModelOperation, possibly from a different process. +func (c *Client) ImportIssueModelOperation(name string) *ImportIssueModelOperation { + return c.internalClient.ImportIssueModelOperation(name) +} + +// GetIssue gets an issue. +func (c *Client) GetIssue(ctx context.Context, req *contactcenterinsightspb.GetIssueRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Issue, error) { + return c.internalClient.GetIssue(ctx, req, opts...) +} + +// ListIssues lists issues. +func (c *Client) ListIssues(ctx context.Context, req *contactcenterinsightspb.ListIssuesRequest, opts ...gax.CallOption) (*contactcenterinsightspb.ListIssuesResponse, error) { + return c.internalClient.ListIssues(ctx, req, opts...) +} + +// UpdateIssue updates an issue. +func (c *Client) UpdateIssue(ctx context.Context, req *contactcenterinsightspb.UpdateIssueRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Issue, error) { + return c.internalClient.UpdateIssue(ctx, req, opts...) +} + +// DeleteIssue deletes an issue. +func (c *Client) DeleteIssue(ctx context.Context, req *contactcenterinsightspb.DeleteIssueRequest, opts ...gax.CallOption) error { + return c.internalClient.DeleteIssue(ctx, req, opts...) +} + +// CalculateIssueModelStats gets an issue model’s statistics. +func (c *Client) CalculateIssueModelStats(ctx context.Context, req *contactcenterinsightspb.CalculateIssueModelStatsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.CalculateIssueModelStatsResponse, error) { + return c.internalClient.CalculateIssueModelStats(ctx, req, opts...) +} + +// CreatePhraseMatcher creates a phrase matcher. +func (c *Client) CreatePhraseMatcher(ctx context.Context, req *contactcenterinsightspb.CreatePhraseMatcherRequest, opts ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) { + return c.internalClient.CreatePhraseMatcher(ctx, req, opts...) +} + +// GetPhraseMatcher gets a phrase matcher. +func (c *Client) GetPhraseMatcher(ctx context.Context, req *contactcenterinsightspb.GetPhraseMatcherRequest, opts ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) { + return c.internalClient.GetPhraseMatcher(ctx, req, opts...) +} + +// ListPhraseMatchers lists phrase matchers. +func (c *Client) ListPhraseMatchers(ctx context.Context, req *contactcenterinsightspb.ListPhraseMatchersRequest, opts ...gax.CallOption) *PhraseMatcherIterator { + return c.internalClient.ListPhraseMatchers(ctx, req, opts...) +} + +// DeletePhraseMatcher deletes a phrase matcher. +func (c *Client) DeletePhraseMatcher(ctx context.Context, req *contactcenterinsightspb.DeletePhraseMatcherRequest, opts ...gax.CallOption) error { + return c.internalClient.DeletePhraseMatcher(ctx, req, opts...) +} + +// UpdatePhraseMatcher updates a phrase matcher. +func (c *Client) UpdatePhraseMatcher(ctx context.Context, req *contactcenterinsightspb.UpdatePhraseMatcherRequest, opts ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) { + return c.internalClient.UpdatePhraseMatcher(ctx, req, opts...) +} + +// CalculateStats gets conversation statistics. +func (c *Client) CalculateStats(ctx context.Context, req *contactcenterinsightspb.CalculateStatsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.CalculateStatsResponse, error) { + return c.internalClient.CalculateStats(ctx, req, opts...) +} + +// GetSettings gets project-level settings. +func (c *Client) GetSettings(ctx context.Context, req *contactcenterinsightspb.GetSettingsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Settings, error) { + return c.internalClient.GetSettings(ctx, req, opts...) +} + +// UpdateSettings updates project-level settings. +func (c *Client) UpdateSettings(ctx context.Context, req *contactcenterinsightspb.UpdateSettingsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Settings, error) { + return c.internalClient.UpdateSettings(ctx, req, opts...) +} + +// CreateAnalysisRule creates a analysis rule. +func (c *Client) CreateAnalysisRule(ctx context.Context, req *contactcenterinsightspb.CreateAnalysisRuleRequest, opts ...gax.CallOption) (*contactcenterinsightspb.AnalysisRule, error) { + return c.internalClient.CreateAnalysisRule(ctx, req, opts...) +} + +// GetAnalysisRule get a analysis rule. +func (c *Client) GetAnalysisRule(ctx context.Context, req *contactcenterinsightspb.GetAnalysisRuleRequest, opts ...gax.CallOption) (*contactcenterinsightspb.AnalysisRule, error) { + return c.internalClient.GetAnalysisRule(ctx, req, opts...) +} + +// ListAnalysisRules lists analysis rules. +func (c *Client) ListAnalysisRules(ctx context.Context, req *contactcenterinsightspb.ListAnalysisRulesRequest, opts ...gax.CallOption) *AnalysisRuleIterator { + return c.internalClient.ListAnalysisRules(ctx, req, opts...) +} + +// UpdateAnalysisRule updates a analysis rule. +func (c *Client) UpdateAnalysisRule(ctx context.Context, req *contactcenterinsightspb.UpdateAnalysisRuleRequest, opts ...gax.CallOption) (*contactcenterinsightspb.AnalysisRule, error) { + return c.internalClient.UpdateAnalysisRule(ctx, req, opts...) +} + +// DeleteAnalysisRule deletes a analysis rule. +func (c *Client) DeleteAnalysisRule(ctx context.Context, req *contactcenterinsightspb.DeleteAnalysisRuleRequest, opts ...gax.CallOption) error { + return c.internalClient.DeleteAnalysisRule(ctx, req, opts...) +} + +// GetEncryptionSpec gets location-level encryption key specification. +func (c *Client) GetEncryptionSpec(ctx context.Context, req *contactcenterinsightspb.GetEncryptionSpecRequest, opts ...gax.CallOption) (*contactcenterinsightspb.EncryptionSpec, error) { + return c.internalClient.GetEncryptionSpec(ctx, req, opts...) +} + +// InitializeEncryptionSpec initializes a location-level encryption key specification. An error will +// result if the location has resources already created before the +// initialization. After the encryption specification is initialized at a +// location, it is immutable and all newly created resources under the +// location will be encrypted with the existing specification. +func (c *Client) InitializeEncryptionSpec(ctx context.Context, req *contactcenterinsightspb.InitializeEncryptionSpecRequest, opts ...gax.CallOption) (*InitializeEncryptionSpecOperation, error) { + return c.internalClient.InitializeEncryptionSpec(ctx, req, opts...) +} + +// InitializeEncryptionSpecOperation returns a new InitializeEncryptionSpecOperation from a given name. +// The name must be that of a previously created InitializeEncryptionSpecOperation, possibly from a different process. +func (c *Client) InitializeEncryptionSpecOperation(name string) *InitializeEncryptionSpecOperation { + return c.internalClient.InitializeEncryptionSpecOperation(name) +} + +// CreateView creates a view. +func (c *Client) CreateView(ctx context.Context, req *contactcenterinsightspb.CreateViewRequest, opts ...gax.CallOption) (*contactcenterinsightspb.View, error) { + return c.internalClient.CreateView(ctx, req, opts...) +} + +// GetView gets a view. +func (c *Client) GetView(ctx context.Context, req *contactcenterinsightspb.GetViewRequest, opts ...gax.CallOption) (*contactcenterinsightspb.View, error) { + return c.internalClient.GetView(ctx, req, opts...) +} + +// ListViews lists views. +func (c *Client) ListViews(ctx context.Context, req *contactcenterinsightspb.ListViewsRequest, opts ...gax.CallOption) *ViewIterator { + return c.internalClient.ListViews(ctx, req, opts...) +} + +// UpdateView updates a view. +func (c *Client) UpdateView(ctx context.Context, req *contactcenterinsightspb.UpdateViewRequest, opts ...gax.CallOption) (*contactcenterinsightspb.View, error) { + return c.internalClient.UpdateView(ctx, req, opts...) +} + +// DeleteView deletes a view. +func (c *Client) DeleteView(ctx context.Context, req *contactcenterinsightspb.DeleteViewRequest, opts ...gax.CallOption) error { + return c.internalClient.DeleteView(ctx, req, opts...) +} + +// QueryMetrics query metrics. +func (c *Client) QueryMetrics(ctx context.Context, req *contactcenterinsightspb.QueryMetricsRequest, opts ...gax.CallOption) (*QueryMetricsOperation, error) { + return c.internalClient.QueryMetrics(ctx, req, opts...) +} + +// QueryMetricsOperation returns a new QueryMetricsOperation from a given name. +// The name must be that of a previously created QueryMetricsOperation, possibly from a different process. +func (c *Client) QueryMetricsOperation(name string) *QueryMetricsOperation { + return c.internalClient.QueryMetricsOperation(name) +} + +// CreateQaQuestion create a QaQuestion. +func (c *Client) CreateQaQuestion(ctx context.Context, req *contactcenterinsightspb.CreateQaQuestionRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaQuestion, error) { + return c.internalClient.CreateQaQuestion(ctx, req, opts...) +} + +// GetQaQuestion gets a QaQuestion. +func (c *Client) GetQaQuestion(ctx context.Context, req *contactcenterinsightspb.GetQaQuestionRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaQuestion, error) { + return c.internalClient.GetQaQuestion(ctx, req, opts...) +} + +// UpdateQaQuestion updates a QaQuestion. +func (c *Client) UpdateQaQuestion(ctx context.Context, req *contactcenterinsightspb.UpdateQaQuestionRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaQuestion, error) { + return c.internalClient.UpdateQaQuestion(ctx, req, opts...) +} + +// DeleteQaQuestion deletes a QaQuestion. +func (c *Client) DeleteQaQuestion(ctx context.Context, req *contactcenterinsightspb.DeleteQaQuestionRequest, opts ...gax.CallOption) error { + return c.internalClient.DeleteQaQuestion(ctx, req, opts...) +} + +// ListQaQuestions lists QaQuestions. +func (c *Client) ListQaQuestions(ctx context.Context, req *contactcenterinsightspb.ListQaQuestionsRequest, opts ...gax.CallOption) *QaQuestionIterator { + return c.internalClient.ListQaQuestions(ctx, req, opts...) +} + +// CreateQaScorecard create a QaScorecard. +func (c *Client) CreateQaScorecard(ctx context.Context, req *contactcenterinsightspb.CreateQaScorecardRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaScorecard, error) { + return c.internalClient.CreateQaScorecard(ctx, req, opts...) +} + +// GetQaScorecard gets a QaScorecard. +func (c *Client) GetQaScorecard(ctx context.Context, req *contactcenterinsightspb.GetQaScorecardRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaScorecard, error) { + return c.internalClient.GetQaScorecard(ctx, req, opts...) +} + +// UpdateQaScorecard updates a QaScorecard. +func (c *Client) UpdateQaScorecard(ctx context.Context, req *contactcenterinsightspb.UpdateQaScorecardRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaScorecard, error) { + return c.internalClient.UpdateQaScorecard(ctx, req, opts...) +} + +// DeleteQaScorecard deletes a QaScorecard. +func (c *Client) DeleteQaScorecard(ctx context.Context, req *contactcenterinsightspb.DeleteQaScorecardRequest, opts ...gax.CallOption) error { + return c.internalClient.DeleteQaScorecard(ctx, req, opts...) +} + +// ListQaScorecards lists QaScorecards. +func (c *Client) ListQaScorecards(ctx context.Context, req *contactcenterinsightspb.ListQaScorecardsRequest, opts ...gax.CallOption) *QaScorecardIterator { + return c.internalClient.ListQaScorecards(ctx, req, opts...) +} + +// CreateQaScorecardRevision creates a QaScorecardRevision. +func (c *Client) CreateQaScorecardRevision(ctx context.Context, req *contactcenterinsightspb.CreateQaScorecardRevisionRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaScorecardRevision, error) { + return c.internalClient.CreateQaScorecardRevision(ctx, req, opts...) +} + +// GetQaScorecardRevision gets a QaScorecardRevision. +func (c *Client) GetQaScorecardRevision(ctx context.Context, req *contactcenterinsightspb.GetQaScorecardRevisionRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaScorecardRevision, error) { + return c.internalClient.GetQaScorecardRevision(ctx, req, opts...) +} + +// TuneQaScorecardRevision fine tune one or more QaModels. +func (c *Client) TuneQaScorecardRevision(ctx context.Context, req *contactcenterinsightspb.TuneQaScorecardRevisionRequest, opts ...gax.CallOption) (*TuneQaScorecardRevisionOperation, error) { + return c.internalClient.TuneQaScorecardRevision(ctx, req, opts...) +} + +// TuneQaScorecardRevisionOperation returns a new TuneQaScorecardRevisionOperation from a given name. +// The name must be that of a previously created TuneQaScorecardRevisionOperation, possibly from a different process. +func (c *Client) TuneQaScorecardRevisionOperation(name string) *TuneQaScorecardRevisionOperation { + return c.internalClient.TuneQaScorecardRevisionOperation(name) +} + +// DeployQaScorecardRevision deploy a QaScorecardRevision. +func (c *Client) DeployQaScorecardRevision(ctx context.Context, req *contactcenterinsightspb.DeployQaScorecardRevisionRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaScorecardRevision, error) { + return c.internalClient.DeployQaScorecardRevision(ctx, req, opts...) +} + +// UndeployQaScorecardRevision undeploy a QaScorecardRevision. +func (c *Client) UndeployQaScorecardRevision(ctx context.Context, req *contactcenterinsightspb.UndeployQaScorecardRevisionRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaScorecardRevision, error) { + return c.internalClient.UndeployQaScorecardRevision(ctx, req, opts...) +} + +// DeleteQaScorecardRevision deletes a QaScorecardRevision. +func (c *Client) DeleteQaScorecardRevision(ctx context.Context, req *contactcenterinsightspb.DeleteQaScorecardRevisionRequest, opts ...gax.CallOption) error { + return c.internalClient.DeleteQaScorecardRevision(ctx, req, opts...) +} + +// ListQaScorecardRevisions lists all revisions under the parent QaScorecard. +func (c *Client) ListQaScorecardRevisions(ctx context.Context, req *contactcenterinsightspb.ListQaScorecardRevisionsRequest, opts ...gax.CallOption) *QaScorecardRevisionIterator { + return c.internalClient.ListQaScorecardRevisions(ctx, req, opts...) +} + +// CreateFeedbackLabel create feedback label. +func (c *Client) CreateFeedbackLabel(ctx context.Context, req *contactcenterinsightspb.CreateFeedbackLabelRequest, opts ...gax.CallOption) (*contactcenterinsightspb.FeedbackLabel, error) { + return c.internalClient.CreateFeedbackLabel(ctx, req, opts...) +} + +// ListFeedbackLabels list feedback labels. +func (c *Client) ListFeedbackLabels(ctx context.Context, req *contactcenterinsightspb.ListFeedbackLabelsRequest, opts ...gax.CallOption) *FeedbackLabelIterator { + return c.internalClient.ListFeedbackLabels(ctx, req, opts...) +} + +// GetFeedbackLabel get feedback label. +func (c *Client) GetFeedbackLabel(ctx context.Context, req *contactcenterinsightspb.GetFeedbackLabelRequest, opts ...gax.CallOption) (*contactcenterinsightspb.FeedbackLabel, error) { + return c.internalClient.GetFeedbackLabel(ctx, req, opts...) +} + +// UpdateFeedbackLabel update feedback label. +func (c *Client) UpdateFeedbackLabel(ctx context.Context, req *contactcenterinsightspb.UpdateFeedbackLabelRequest, opts ...gax.CallOption) (*contactcenterinsightspb.FeedbackLabel, error) { + return c.internalClient.UpdateFeedbackLabel(ctx, req, opts...) +} + +// DeleteFeedbackLabel delete feedback label. +func (c *Client) DeleteFeedbackLabel(ctx context.Context, req *contactcenterinsightspb.DeleteFeedbackLabelRequest, opts ...gax.CallOption) error { + return c.internalClient.DeleteFeedbackLabel(ctx, req, opts...) +} + +// ListAllFeedbackLabels list all feedback labels by project number. +func (c *Client) ListAllFeedbackLabels(ctx context.Context, req *contactcenterinsightspb.ListAllFeedbackLabelsRequest, opts ...gax.CallOption) *FeedbackLabelIterator { + return c.internalClient.ListAllFeedbackLabels(ctx, req, opts...) +} + +// BulkUploadFeedbackLabels upload feedback labels in bulk. +func (c *Client) BulkUploadFeedbackLabels(ctx context.Context, req *contactcenterinsightspb.BulkUploadFeedbackLabelsRequest, opts ...gax.CallOption) (*BulkUploadFeedbackLabelsOperation, error) { + return c.internalClient.BulkUploadFeedbackLabels(ctx, req, opts...) +} + +// BulkUploadFeedbackLabelsOperation returns a new BulkUploadFeedbackLabelsOperation from a given name. +// The name must be that of a previously created BulkUploadFeedbackLabelsOperation, possibly from a different process. +func (c *Client) BulkUploadFeedbackLabelsOperation(name string) *BulkUploadFeedbackLabelsOperation { + return c.internalClient.BulkUploadFeedbackLabelsOperation(name) +} + +// BulkDownloadFeedbackLabels download feedback labels in bulk. +func (c *Client) BulkDownloadFeedbackLabels(ctx context.Context, req *contactcenterinsightspb.BulkDownloadFeedbackLabelsRequest, opts ...gax.CallOption) (*BulkDownloadFeedbackLabelsOperation, error) { + return c.internalClient.BulkDownloadFeedbackLabels(ctx, req, opts...) +} + +// BulkDownloadFeedbackLabelsOperation returns a new BulkDownloadFeedbackLabelsOperation from a given name. +// The name must be that of a previously created BulkDownloadFeedbackLabelsOperation, possibly from a different process. +func (c *Client) BulkDownloadFeedbackLabelsOperation(name string) *BulkDownloadFeedbackLabelsOperation { + return c.internalClient.BulkDownloadFeedbackLabelsOperation(name) +} + +// CancelOperation is a utility method from google.longrunning.Operations. +func (c *Client) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + return c.internalClient.CancelOperation(ctx, req, opts...) +} + +// GetOperation is a utility method from google.longrunning.Operations. +func (c *Client) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + return c.internalClient.GetOperation(ctx, req, opts...) +} + +// ListOperations is a utility method from google.longrunning.Operations. +func (c *Client) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + return c.internalClient.ListOperations(ctx, req, opts...) +} + +// gRPCClient is a client for interacting with Contact Center AI Insights API over gRPC transport. +// +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type gRPCClient struct { + // Connection pool of gRPC connections to the service. + connPool gtransport.ConnPool + + // Points back to the CallOptions field of the containing Client + CallOptions **CallOptions + + // The gRPC API client. + client contactcenterinsightspb.ContactCenterInsightsClient + + // LROClient is used internally to handle long-running operations. + // It is exposed so that its CallOptions can be modified if required. + // Users should not Close this client. + LROClient **lroauto.OperationsClient + + operationsClient longrunningpb.OperationsClient + + // The x-goog-* metadata to be sent with each request. + xGoogHeaders []string +} + +// NewClient creates a new contact center insights client based on gRPC. +// The returned client must be Closed when it is done being used to clean up its underlying connections. +// +// An API that lets users analyze and explore their business conversation data. +func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error) { + clientOpts := defaultGRPCClientOptions() + if newClientHook != nil { + hookOpts, err := newClientHook(ctx, clientHookParams{}) + if err != nil { + return nil, err + } + clientOpts = append(clientOpts, hookOpts...) + } + + connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) + if err != nil { + return nil, err + } + client := Client{CallOptions: defaultCallOptions()} + + c := &gRPCClient{ + connPool: connPool, + client: contactcenterinsightspb.NewContactCenterInsightsClient(connPool), + CallOptions: &client.CallOptions, + operationsClient: longrunningpb.NewOperationsClient(connPool), + } + c.setGoogleClientInfo() + + client.internalClient = c + + client.LROClient, err = lroauto.NewOperationsClient(ctx, gtransport.WithConnPool(connPool)) + if err != nil { + // This error "should not happen", since we are just reusing old connection pool + // and never actually need to dial. + // If this does happen, we could leak connp. However, we cannot close conn: + // If the user invoked the constructor with option.WithGRPCConn, + // we would close a connection that's still in use. + // TODO: investigate error conditions. + return nil, err + } + c.LROClient = &client.LROClient + return &client, nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: Connections are now pooled so this method does not always +// return the same resource. +func (c *gRPCClient) Connection() *grpc.ClientConn { + return c.connPool.Conn() +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *gRPCClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version) + c.xGoogHeaders = []string{ + "x-goog-api-client", gax.XGoogHeader(kv...), + } +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *gRPCClient) Close() error { + return c.connPool.Close() +} + +// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. +type restClient struct { + // The http endpoint to connect to. + endpoint string + + // The http client. + httpClient *http.Client + + // LROClient is used internally to handle long-running operations. + // It is exposed so that its CallOptions can be modified if required. + // Users should not Close this client. + LROClient **lroauto.OperationsClient + + // The x-goog-* headers to be sent with each request. + xGoogHeaders []string + + // Points back to the CallOptions field of the containing Client + CallOptions **CallOptions +} + +// NewRESTClient creates a new contact center insights rest client. +// +// An API that lets users analyze and explore their business conversation data. +func NewRESTClient(ctx context.Context, opts ...option.ClientOption) (*Client, error) { + clientOpts := append(defaultRESTClientOptions(), opts...) + httpClient, endpoint, err := httptransport.NewClient(ctx, clientOpts...) + if err != nil { + return nil, err + } + + callOpts := defaultRESTCallOptions() + c := &restClient{ + endpoint: endpoint, + httpClient: httpClient, + CallOptions: &callOpts, + } + c.setGoogleClientInfo() + + lroOpts := []option.ClientOption{ + option.WithHTTPClient(httpClient), + option.WithEndpoint(endpoint), + } + opClient, err := lroauto.NewOperationsRESTClient(ctx, lroOpts...) + if err != nil { + return nil, err + } + c.LROClient = &opClient + + return &Client{internalClient: c, CallOptions: callOpts}, nil +} + +func defaultRESTClientOptions() []option.ClientOption { + return []option.ClientOption{ + internaloption.WithDefaultEndpoint("https://contactcenterinsights.googleapis.com"), + internaloption.WithDefaultEndpointTemplate("https://contactcenterinsights.UNIVERSE_DOMAIN"), + internaloption.WithDefaultMTLSEndpoint("https://contactcenterinsights.mtls.googleapis.com"), + internaloption.WithDefaultUniverseDomain("googleapis.com"), + internaloption.WithDefaultAudience("https://contactcenterinsights.googleapis.com/"), + internaloption.WithDefaultScopes(DefaultAuthScopes()...), + internaloption.EnableNewAuthLibrary(), + } +} + +// setGoogleClientInfo sets the name and version of the application in +// the `x-goog-api-client` header passed on each request. Intended for +// use by Google-written clients. +func (c *restClient) setGoogleClientInfo(keyval ...string) { + kv := append([]string{"gl-go", gax.GoVersion}, keyval...) + kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "rest", "UNKNOWN") + c.xGoogHeaders = []string{ + "x-goog-api-client", gax.XGoogHeader(kv...), + } +} + +// Close closes the connection to the API service. The user should invoke this when +// the client is no longer required. +func (c *restClient) Close() error { + // Replace httpClient with nil to force cleanup. + c.httpClient = nil + return nil +} + +// Connection returns a connection to the API service. +// +// Deprecated: This method always returns nil. +func (c *restClient) Connection() *grpc.ClientConn { + return nil +} +func (c *gRPCClient) CreateConversation(ctx context.Context, req *contactcenterinsightspb.CreateConversationRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CreateConversation[0:len((*c.CallOptions).CreateConversation):len((*c.CallOptions).CreateConversation)], opts...) + var resp *contactcenterinsightspb.Conversation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.CreateConversation(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) UploadConversation(ctx context.Context, req *contactcenterinsightspb.UploadConversationRequest, opts ...gax.CallOption) (*UploadConversationOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).UploadConversation[0:len((*c.CallOptions).UploadConversation):len((*c.CallOptions).UploadConversation)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.UploadConversation(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &UploadConversationOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) UpdateConversation(ctx context.Context, req *contactcenterinsightspb.UpdateConversationRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "conversation.name", url.QueryEscape(req.GetConversation().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).UpdateConversation[0:len((*c.CallOptions).UpdateConversation):len((*c.CallOptions).UpdateConversation)], opts...) + var resp *contactcenterinsightspb.Conversation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.UpdateConversation(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) GetConversation(ctx context.Context, req *contactcenterinsightspb.GetConversationRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetConversation[0:len((*c.CallOptions).GetConversation):len((*c.CallOptions).GetConversation)], opts...) + var resp *contactcenterinsightspb.Conversation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.GetConversation(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) ListConversations(ctx context.Context, req *contactcenterinsightspb.ListConversationsRequest, opts ...gax.CallOption) *ConversationIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListConversations[0:len((*c.CallOptions).ListConversations):len((*c.CallOptions).ListConversations)], opts...) + it := &ConversationIterator{} + req = proto.Clone(req).(*contactcenterinsightspb.ListConversationsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.Conversation, string, error) { + resp := &contactcenterinsightspb.ListConversationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.ListConversations(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetConversations(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *gRPCClient) DeleteConversation(ctx context.Context, req *contactcenterinsightspb.DeleteConversationRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeleteConversation[0:len((*c.CallOptions).DeleteConversation):len((*c.CallOptions).DeleteConversation)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = c.client.DeleteConversation(ctx, req, settings.GRPC...) + return err + }, opts...) + return err +} + +func (c *gRPCClient) CreateAnalysis(ctx context.Context, req *contactcenterinsightspb.CreateAnalysisRequest, opts ...gax.CallOption) (*CreateAnalysisOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CreateAnalysis[0:len((*c.CallOptions).CreateAnalysis):len((*c.CallOptions).CreateAnalysis)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.CreateAnalysis(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &CreateAnalysisOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) GetAnalysis(ctx context.Context, req *contactcenterinsightspb.GetAnalysisRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Analysis, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetAnalysis[0:len((*c.CallOptions).GetAnalysis):len((*c.CallOptions).GetAnalysis)], opts...) + var resp *contactcenterinsightspb.Analysis + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.GetAnalysis(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) ListAnalyses(ctx context.Context, req *contactcenterinsightspb.ListAnalysesRequest, opts ...gax.CallOption) *AnalysisIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListAnalyses[0:len((*c.CallOptions).ListAnalyses):len((*c.CallOptions).ListAnalyses)], opts...) + it := &AnalysisIterator{} + req = proto.Clone(req).(*contactcenterinsightspb.ListAnalysesRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.Analysis, string, error) { + resp := &contactcenterinsightspb.ListAnalysesResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.ListAnalyses(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetAnalyses(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *gRPCClient) DeleteAnalysis(ctx context.Context, req *contactcenterinsightspb.DeleteAnalysisRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeleteAnalysis[0:len((*c.CallOptions).DeleteAnalysis):len((*c.CallOptions).DeleteAnalysis)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = c.client.DeleteAnalysis(ctx, req, settings.GRPC...) + return err + }, opts...) + return err +} + +func (c *gRPCClient) BulkAnalyzeConversations(ctx context.Context, req *contactcenterinsightspb.BulkAnalyzeConversationsRequest, opts ...gax.CallOption) (*BulkAnalyzeConversationsOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).BulkAnalyzeConversations[0:len((*c.CallOptions).BulkAnalyzeConversations):len((*c.CallOptions).BulkAnalyzeConversations)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.BulkAnalyzeConversations(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &BulkAnalyzeConversationsOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) BulkDeleteConversations(ctx context.Context, req *contactcenterinsightspb.BulkDeleteConversationsRequest, opts ...gax.CallOption) (*BulkDeleteConversationsOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).BulkDeleteConversations[0:len((*c.CallOptions).BulkDeleteConversations):len((*c.CallOptions).BulkDeleteConversations)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.BulkDeleteConversations(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &BulkDeleteConversationsOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) IngestConversations(ctx context.Context, req *contactcenterinsightspb.IngestConversationsRequest, opts ...gax.CallOption) (*IngestConversationsOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).IngestConversations[0:len((*c.CallOptions).IngestConversations):len((*c.CallOptions).IngestConversations)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.IngestConversations(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &IngestConversationsOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) ExportInsightsData(ctx context.Context, req *contactcenterinsightspb.ExportInsightsDataRequest, opts ...gax.CallOption) (*ExportInsightsDataOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ExportInsightsData[0:len((*c.CallOptions).ExportInsightsData):len((*c.CallOptions).ExportInsightsData)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.ExportInsightsData(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &ExportInsightsDataOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) CreateIssueModel(ctx context.Context, req *contactcenterinsightspb.CreateIssueModelRequest, opts ...gax.CallOption) (*CreateIssueModelOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CreateIssueModel[0:len((*c.CallOptions).CreateIssueModel):len((*c.CallOptions).CreateIssueModel)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.CreateIssueModel(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &CreateIssueModelOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) UpdateIssueModel(ctx context.Context, req *contactcenterinsightspb.UpdateIssueModelRequest, opts ...gax.CallOption) (*contactcenterinsightspb.IssueModel, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "issue_model.name", url.QueryEscape(req.GetIssueModel().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).UpdateIssueModel[0:len((*c.CallOptions).UpdateIssueModel):len((*c.CallOptions).UpdateIssueModel)], opts...) + var resp *contactcenterinsightspb.IssueModel + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.UpdateIssueModel(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) GetIssueModel(ctx context.Context, req *contactcenterinsightspb.GetIssueModelRequest, opts ...gax.CallOption) (*contactcenterinsightspb.IssueModel, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetIssueModel[0:len((*c.CallOptions).GetIssueModel):len((*c.CallOptions).GetIssueModel)], opts...) + var resp *contactcenterinsightspb.IssueModel + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.GetIssueModel(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) ListIssueModels(ctx context.Context, req *contactcenterinsightspb.ListIssueModelsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.ListIssueModelsResponse, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListIssueModels[0:len((*c.CallOptions).ListIssueModels):len((*c.CallOptions).ListIssueModels)], opts...) + var resp *contactcenterinsightspb.ListIssueModelsResponse + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.ListIssueModels(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) DeleteIssueModel(ctx context.Context, req *contactcenterinsightspb.DeleteIssueModelRequest, opts ...gax.CallOption) (*DeleteIssueModelOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeleteIssueModel[0:len((*c.CallOptions).DeleteIssueModel):len((*c.CallOptions).DeleteIssueModel)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.DeleteIssueModel(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &DeleteIssueModelOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) DeployIssueModel(ctx context.Context, req *contactcenterinsightspb.DeployIssueModelRequest, opts ...gax.CallOption) (*DeployIssueModelOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeployIssueModel[0:len((*c.CallOptions).DeployIssueModel):len((*c.CallOptions).DeployIssueModel)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.DeployIssueModel(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &DeployIssueModelOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) UndeployIssueModel(ctx context.Context, req *contactcenterinsightspb.UndeployIssueModelRequest, opts ...gax.CallOption) (*UndeployIssueModelOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).UndeployIssueModel[0:len((*c.CallOptions).UndeployIssueModel):len((*c.CallOptions).UndeployIssueModel)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.UndeployIssueModel(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &UndeployIssueModelOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) ExportIssueModel(ctx context.Context, req *contactcenterinsightspb.ExportIssueModelRequest, opts ...gax.CallOption) (*ExportIssueModelOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ExportIssueModel[0:len((*c.CallOptions).ExportIssueModel):len((*c.CallOptions).ExportIssueModel)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.ExportIssueModel(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &ExportIssueModelOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) ImportIssueModel(ctx context.Context, req *contactcenterinsightspb.ImportIssueModelRequest, opts ...gax.CallOption) (*ImportIssueModelOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ImportIssueModel[0:len((*c.CallOptions).ImportIssueModel):len((*c.CallOptions).ImportIssueModel)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.ImportIssueModel(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &ImportIssueModelOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) GetIssue(ctx context.Context, req *contactcenterinsightspb.GetIssueRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Issue, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetIssue[0:len((*c.CallOptions).GetIssue):len((*c.CallOptions).GetIssue)], opts...) + var resp *contactcenterinsightspb.Issue + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.GetIssue(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) ListIssues(ctx context.Context, req *contactcenterinsightspb.ListIssuesRequest, opts ...gax.CallOption) (*contactcenterinsightspb.ListIssuesResponse, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListIssues[0:len((*c.CallOptions).ListIssues):len((*c.CallOptions).ListIssues)], opts...) + var resp *contactcenterinsightspb.ListIssuesResponse + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.ListIssues(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) UpdateIssue(ctx context.Context, req *contactcenterinsightspb.UpdateIssueRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Issue, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "issue.name", url.QueryEscape(req.GetIssue().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).UpdateIssue[0:len((*c.CallOptions).UpdateIssue):len((*c.CallOptions).UpdateIssue)], opts...) + var resp *contactcenterinsightspb.Issue + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.UpdateIssue(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) DeleteIssue(ctx context.Context, req *contactcenterinsightspb.DeleteIssueRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeleteIssue[0:len((*c.CallOptions).DeleteIssue):len((*c.CallOptions).DeleteIssue)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = c.client.DeleteIssue(ctx, req, settings.GRPC...) + return err + }, opts...) + return err +} + +func (c *gRPCClient) CalculateIssueModelStats(ctx context.Context, req *contactcenterinsightspb.CalculateIssueModelStatsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.CalculateIssueModelStatsResponse, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "issue_model", url.QueryEscape(req.GetIssueModel()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CalculateIssueModelStats[0:len((*c.CallOptions).CalculateIssueModelStats):len((*c.CallOptions).CalculateIssueModelStats)], opts...) + var resp *contactcenterinsightspb.CalculateIssueModelStatsResponse + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.CalculateIssueModelStats(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) CreatePhraseMatcher(ctx context.Context, req *contactcenterinsightspb.CreatePhraseMatcherRequest, opts ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CreatePhraseMatcher[0:len((*c.CallOptions).CreatePhraseMatcher):len((*c.CallOptions).CreatePhraseMatcher)], opts...) + var resp *contactcenterinsightspb.PhraseMatcher + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.CreatePhraseMatcher(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) GetPhraseMatcher(ctx context.Context, req *contactcenterinsightspb.GetPhraseMatcherRequest, opts ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetPhraseMatcher[0:len((*c.CallOptions).GetPhraseMatcher):len((*c.CallOptions).GetPhraseMatcher)], opts...) + var resp *contactcenterinsightspb.PhraseMatcher + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.GetPhraseMatcher(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) ListPhraseMatchers(ctx context.Context, req *contactcenterinsightspb.ListPhraseMatchersRequest, opts ...gax.CallOption) *PhraseMatcherIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListPhraseMatchers[0:len((*c.CallOptions).ListPhraseMatchers):len((*c.CallOptions).ListPhraseMatchers)], opts...) + it := &PhraseMatcherIterator{} + req = proto.Clone(req).(*contactcenterinsightspb.ListPhraseMatchersRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.PhraseMatcher, string, error) { + resp := &contactcenterinsightspb.ListPhraseMatchersResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.ListPhraseMatchers(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetPhraseMatchers(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *gRPCClient) DeletePhraseMatcher(ctx context.Context, req *contactcenterinsightspb.DeletePhraseMatcherRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeletePhraseMatcher[0:len((*c.CallOptions).DeletePhraseMatcher):len((*c.CallOptions).DeletePhraseMatcher)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = c.client.DeletePhraseMatcher(ctx, req, settings.GRPC...) + return err + }, opts...) + return err +} + +func (c *gRPCClient) UpdatePhraseMatcher(ctx context.Context, req *contactcenterinsightspb.UpdatePhraseMatcherRequest, opts ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "phrase_matcher.name", url.QueryEscape(req.GetPhraseMatcher().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).UpdatePhraseMatcher[0:len((*c.CallOptions).UpdatePhraseMatcher):len((*c.CallOptions).UpdatePhraseMatcher)], opts...) + var resp *contactcenterinsightspb.PhraseMatcher + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.UpdatePhraseMatcher(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) CalculateStats(ctx context.Context, req *contactcenterinsightspb.CalculateStatsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.CalculateStatsResponse, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "location", url.QueryEscape(req.GetLocation()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CalculateStats[0:len((*c.CallOptions).CalculateStats):len((*c.CallOptions).CalculateStats)], opts...) + var resp *contactcenterinsightspb.CalculateStatsResponse + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.CalculateStats(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) GetSettings(ctx context.Context, req *contactcenterinsightspb.GetSettingsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Settings, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetSettings[0:len((*c.CallOptions).GetSettings):len((*c.CallOptions).GetSettings)], opts...) + var resp *contactcenterinsightspb.Settings + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.GetSettings(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) UpdateSettings(ctx context.Context, req *contactcenterinsightspb.UpdateSettingsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Settings, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "settings.name", url.QueryEscape(req.GetSettings().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).UpdateSettings[0:len((*c.CallOptions).UpdateSettings):len((*c.CallOptions).UpdateSettings)], opts...) + var resp *contactcenterinsightspb.Settings + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.UpdateSettings(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) CreateAnalysisRule(ctx context.Context, req *contactcenterinsightspb.CreateAnalysisRuleRequest, opts ...gax.CallOption) (*contactcenterinsightspb.AnalysisRule, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CreateAnalysisRule[0:len((*c.CallOptions).CreateAnalysisRule):len((*c.CallOptions).CreateAnalysisRule)], opts...) + var resp *contactcenterinsightspb.AnalysisRule + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.CreateAnalysisRule(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) GetAnalysisRule(ctx context.Context, req *contactcenterinsightspb.GetAnalysisRuleRequest, opts ...gax.CallOption) (*contactcenterinsightspb.AnalysisRule, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetAnalysisRule[0:len((*c.CallOptions).GetAnalysisRule):len((*c.CallOptions).GetAnalysisRule)], opts...) + var resp *contactcenterinsightspb.AnalysisRule + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.GetAnalysisRule(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) ListAnalysisRules(ctx context.Context, req *contactcenterinsightspb.ListAnalysisRulesRequest, opts ...gax.CallOption) *AnalysisRuleIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListAnalysisRules[0:len((*c.CallOptions).ListAnalysisRules):len((*c.CallOptions).ListAnalysisRules)], opts...) + it := &AnalysisRuleIterator{} + req = proto.Clone(req).(*contactcenterinsightspb.ListAnalysisRulesRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.AnalysisRule, string, error) { + resp := &contactcenterinsightspb.ListAnalysisRulesResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.ListAnalysisRules(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetAnalysisRules(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *gRPCClient) UpdateAnalysisRule(ctx context.Context, req *contactcenterinsightspb.UpdateAnalysisRuleRequest, opts ...gax.CallOption) (*contactcenterinsightspb.AnalysisRule, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "analysis_rule.name", url.QueryEscape(req.GetAnalysisRule().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).UpdateAnalysisRule[0:len((*c.CallOptions).UpdateAnalysisRule):len((*c.CallOptions).UpdateAnalysisRule)], opts...) + var resp *contactcenterinsightspb.AnalysisRule + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.UpdateAnalysisRule(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) DeleteAnalysisRule(ctx context.Context, req *contactcenterinsightspb.DeleteAnalysisRuleRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeleteAnalysisRule[0:len((*c.CallOptions).DeleteAnalysisRule):len((*c.CallOptions).DeleteAnalysisRule)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = c.client.DeleteAnalysisRule(ctx, req, settings.GRPC...) + return err + }, opts...) + return err +} + +func (c *gRPCClient) GetEncryptionSpec(ctx context.Context, req *contactcenterinsightspb.GetEncryptionSpecRequest, opts ...gax.CallOption) (*contactcenterinsightspb.EncryptionSpec, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetEncryptionSpec[0:len((*c.CallOptions).GetEncryptionSpec):len((*c.CallOptions).GetEncryptionSpec)], opts...) + var resp *contactcenterinsightspb.EncryptionSpec + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.GetEncryptionSpec(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) InitializeEncryptionSpec(ctx context.Context, req *contactcenterinsightspb.InitializeEncryptionSpecRequest, opts ...gax.CallOption) (*InitializeEncryptionSpecOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "encryption_spec.name", url.QueryEscape(req.GetEncryptionSpec().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).InitializeEncryptionSpec[0:len((*c.CallOptions).InitializeEncryptionSpec):len((*c.CallOptions).InitializeEncryptionSpec)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.InitializeEncryptionSpec(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &InitializeEncryptionSpecOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) CreateView(ctx context.Context, req *contactcenterinsightspb.CreateViewRequest, opts ...gax.CallOption) (*contactcenterinsightspb.View, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CreateView[0:len((*c.CallOptions).CreateView):len((*c.CallOptions).CreateView)], opts...) + var resp *contactcenterinsightspb.View + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.CreateView(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) GetView(ctx context.Context, req *contactcenterinsightspb.GetViewRequest, opts ...gax.CallOption) (*contactcenterinsightspb.View, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetView[0:len((*c.CallOptions).GetView):len((*c.CallOptions).GetView)], opts...) + var resp *contactcenterinsightspb.View + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.GetView(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) ListViews(ctx context.Context, req *contactcenterinsightspb.ListViewsRequest, opts ...gax.CallOption) *ViewIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListViews[0:len((*c.CallOptions).ListViews):len((*c.CallOptions).ListViews)], opts...) + it := &ViewIterator{} + req = proto.Clone(req).(*contactcenterinsightspb.ListViewsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.View, string, error) { + resp := &contactcenterinsightspb.ListViewsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.ListViews(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetViews(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *gRPCClient) UpdateView(ctx context.Context, req *contactcenterinsightspb.UpdateViewRequest, opts ...gax.CallOption) (*contactcenterinsightspb.View, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "view.name", url.QueryEscape(req.GetView().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).UpdateView[0:len((*c.CallOptions).UpdateView):len((*c.CallOptions).UpdateView)], opts...) + var resp *contactcenterinsightspb.View + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.UpdateView(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) DeleteView(ctx context.Context, req *contactcenterinsightspb.DeleteViewRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeleteView[0:len((*c.CallOptions).DeleteView):len((*c.CallOptions).DeleteView)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = c.client.DeleteView(ctx, req, settings.GRPC...) + return err + }, opts...) + return err +} + +func (c *gRPCClient) QueryMetrics(ctx context.Context, req *contactcenterinsightspb.QueryMetricsRequest, opts ...gax.CallOption) (*QueryMetricsOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "location", url.QueryEscape(req.GetLocation()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).QueryMetrics[0:len((*c.CallOptions).QueryMetrics):len((*c.CallOptions).QueryMetrics)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.QueryMetrics(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &QueryMetricsOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) CreateQaQuestion(ctx context.Context, req *contactcenterinsightspb.CreateQaQuestionRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaQuestion, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CreateQaQuestion[0:len((*c.CallOptions).CreateQaQuestion):len((*c.CallOptions).CreateQaQuestion)], opts...) + var resp *contactcenterinsightspb.QaQuestion + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.CreateQaQuestion(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) GetQaQuestion(ctx context.Context, req *contactcenterinsightspb.GetQaQuestionRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaQuestion, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetQaQuestion[0:len((*c.CallOptions).GetQaQuestion):len((*c.CallOptions).GetQaQuestion)], opts...) + var resp *contactcenterinsightspb.QaQuestion + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.GetQaQuestion(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) UpdateQaQuestion(ctx context.Context, req *contactcenterinsightspb.UpdateQaQuestionRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaQuestion, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "qa_question.name", url.QueryEscape(req.GetQaQuestion().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).UpdateQaQuestion[0:len((*c.CallOptions).UpdateQaQuestion):len((*c.CallOptions).UpdateQaQuestion)], opts...) + var resp *contactcenterinsightspb.QaQuestion + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.UpdateQaQuestion(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) DeleteQaQuestion(ctx context.Context, req *contactcenterinsightspb.DeleteQaQuestionRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeleteQaQuestion[0:len((*c.CallOptions).DeleteQaQuestion):len((*c.CallOptions).DeleteQaQuestion)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = c.client.DeleteQaQuestion(ctx, req, settings.GRPC...) + return err + }, opts...) + return err +} + +func (c *gRPCClient) ListQaQuestions(ctx context.Context, req *contactcenterinsightspb.ListQaQuestionsRequest, opts ...gax.CallOption) *QaQuestionIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListQaQuestions[0:len((*c.CallOptions).ListQaQuestions):len((*c.CallOptions).ListQaQuestions)], opts...) + it := &QaQuestionIterator{} + req = proto.Clone(req).(*contactcenterinsightspb.ListQaQuestionsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.QaQuestion, string, error) { + resp := &contactcenterinsightspb.ListQaQuestionsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.ListQaQuestions(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetQaQuestions(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *gRPCClient) CreateQaScorecard(ctx context.Context, req *contactcenterinsightspb.CreateQaScorecardRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaScorecard, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CreateQaScorecard[0:len((*c.CallOptions).CreateQaScorecard):len((*c.CallOptions).CreateQaScorecard)], opts...) + var resp *contactcenterinsightspb.QaScorecard + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.CreateQaScorecard(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) GetQaScorecard(ctx context.Context, req *contactcenterinsightspb.GetQaScorecardRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaScorecard, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetQaScorecard[0:len((*c.CallOptions).GetQaScorecard):len((*c.CallOptions).GetQaScorecard)], opts...) + var resp *contactcenterinsightspb.QaScorecard + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.GetQaScorecard(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) UpdateQaScorecard(ctx context.Context, req *contactcenterinsightspb.UpdateQaScorecardRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaScorecard, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "qa_scorecard.name", url.QueryEscape(req.GetQaScorecard().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).UpdateQaScorecard[0:len((*c.CallOptions).UpdateQaScorecard):len((*c.CallOptions).UpdateQaScorecard)], opts...) + var resp *contactcenterinsightspb.QaScorecard + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.UpdateQaScorecard(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) DeleteQaScorecard(ctx context.Context, req *contactcenterinsightspb.DeleteQaScorecardRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeleteQaScorecard[0:len((*c.CallOptions).DeleteQaScorecard):len((*c.CallOptions).DeleteQaScorecard)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = c.client.DeleteQaScorecard(ctx, req, settings.GRPC...) + return err + }, opts...) + return err +} + +func (c *gRPCClient) ListQaScorecards(ctx context.Context, req *contactcenterinsightspb.ListQaScorecardsRequest, opts ...gax.CallOption) *QaScorecardIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListQaScorecards[0:len((*c.CallOptions).ListQaScorecards):len((*c.CallOptions).ListQaScorecards)], opts...) + it := &QaScorecardIterator{} + req = proto.Clone(req).(*contactcenterinsightspb.ListQaScorecardsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.QaScorecard, string, error) { + resp := &contactcenterinsightspb.ListQaScorecardsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.ListQaScorecards(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetQaScorecards(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *gRPCClient) CreateQaScorecardRevision(ctx context.Context, req *contactcenterinsightspb.CreateQaScorecardRevisionRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaScorecardRevision, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CreateQaScorecardRevision[0:len((*c.CallOptions).CreateQaScorecardRevision):len((*c.CallOptions).CreateQaScorecardRevision)], opts...) + var resp *contactcenterinsightspb.QaScorecardRevision + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.CreateQaScorecardRevision(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) GetQaScorecardRevision(ctx context.Context, req *contactcenterinsightspb.GetQaScorecardRevisionRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaScorecardRevision, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetQaScorecardRevision[0:len((*c.CallOptions).GetQaScorecardRevision):len((*c.CallOptions).GetQaScorecardRevision)], opts...) + var resp *contactcenterinsightspb.QaScorecardRevision + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.GetQaScorecardRevision(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) TuneQaScorecardRevision(ctx context.Context, req *contactcenterinsightspb.TuneQaScorecardRevisionRequest, opts ...gax.CallOption) (*TuneQaScorecardRevisionOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).TuneQaScorecardRevision[0:len((*c.CallOptions).TuneQaScorecardRevision):len((*c.CallOptions).TuneQaScorecardRevision)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.TuneQaScorecardRevision(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &TuneQaScorecardRevisionOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) DeployQaScorecardRevision(ctx context.Context, req *contactcenterinsightspb.DeployQaScorecardRevisionRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaScorecardRevision, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeployQaScorecardRevision[0:len((*c.CallOptions).DeployQaScorecardRevision):len((*c.CallOptions).DeployQaScorecardRevision)], opts...) + var resp *contactcenterinsightspb.QaScorecardRevision + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.DeployQaScorecardRevision(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) UndeployQaScorecardRevision(ctx context.Context, req *contactcenterinsightspb.UndeployQaScorecardRevisionRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaScorecardRevision, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).UndeployQaScorecardRevision[0:len((*c.CallOptions).UndeployQaScorecardRevision):len((*c.CallOptions).UndeployQaScorecardRevision)], opts...) + var resp *contactcenterinsightspb.QaScorecardRevision + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.UndeployQaScorecardRevision(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) DeleteQaScorecardRevision(ctx context.Context, req *contactcenterinsightspb.DeleteQaScorecardRevisionRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeleteQaScorecardRevision[0:len((*c.CallOptions).DeleteQaScorecardRevision):len((*c.CallOptions).DeleteQaScorecardRevision)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = c.client.DeleteQaScorecardRevision(ctx, req, settings.GRPC...) + return err + }, opts...) + return err +} + +func (c *gRPCClient) ListQaScorecardRevisions(ctx context.Context, req *contactcenterinsightspb.ListQaScorecardRevisionsRequest, opts ...gax.CallOption) *QaScorecardRevisionIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListQaScorecardRevisions[0:len((*c.CallOptions).ListQaScorecardRevisions):len((*c.CallOptions).ListQaScorecardRevisions)], opts...) + it := &QaScorecardRevisionIterator{} + req = proto.Clone(req).(*contactcenterinsightspb.ListQaScorecardRevisionsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.QaScorecardRevision, string, error) { + resp := &contactcenterinsightspb.ListQaScorecardRevisionsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.ListQaScorecardRevisions(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetQaScorecardRevisions(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *gRPCClient) CreateFeedbackLabel(ctx context.Context, req *contactcenterinsightspb.CreateFeedbackLabelRequest, opts ...gax.CallOption) (*contactcenterinsightspb.FeedbackLabel, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CreateFeedbackLabel[0:len((*c.CallOptions).CreateFeedbackLabel):len((*c.CallOptions).CreateFeedbackLabel)], opts...) + var resp *contactcenterinsightspb.FeedbackLabel + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.CreateFeedbackLabel(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) ListFeedbackLabels(ctx context.Context, req *contactcenterinsightspb.ListFeedbackLabelsRequest, opts ...gax.CallOption) *FeedbackLabelIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListFeedbackLabels[0:len((*c.CallOptions).ListFeedbackLabels):len((*c.CallOptions).ListFeedbackLabels)], opts...) + it := &FeedbackLabelIterator{} + req = proto.Clone(req).(*contactcenterinsightspb.ListFeedbackLabelsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.FeedbackLabel, string, error) { + resp := &contactcenterinsightspb.ListFeedbackLabelsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.ListFeedbackLabels(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetFeedbackLabels(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *gRPCClient) GetFeedbackLabel(ctx context.Context, req *contactcenterinsightspb.GetFeedbackLabelRequest, opts ...gax.CallOption) (*contactcenterinsightspb.FeedbackLabel, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetFeedbackLabel[0:len((*c.CallOptions).GetFeedbackLabel):len((*c.CallOptions).GetFeedbackLabel)], opts...) + var resp *contactcenterinsightspb.FeedbackLabel + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.GetFeedbackLabel(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) UpdateFeedbackLabel(ctx context.Context, req *contactcenterinsightspb.UpdateFeedbackLabelRequest, opts ...gax.CallOption) (*contactcenterinsightspb.FeedbackLabel, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "feedback_label.name", url.QueryEscape(req.GetFeedbackLabel().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).UpdateFeedbackLabel[0:len((*c.CallOptions).UpdateFeedbackLabel):len((*c.CallOptions).UpdateFeedbackLabel)], opts...) + var resp *contactcenterinsightspb.FeedbackLabel + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.UpdateFeedbackLabel(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) DeleteFeedbackLabel(ctx context.Context, req *contactcenterinsightspb.DeleteFeedbackLabelRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).DeleteFeedbackLabel[0:len((*c.CallOptions).DeleteFeedbackLabel):len((*c.CallOptions).DeleteFeedbackLabel)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = c.client.DeleteFeedbackLabel(ctx, req, settings.GRPC...) + return err + }, opts...) + return err +} + +func (c *gRPCClient) ListAllFeedbackLabels(ctx context.Context, req *contactcenterinsightspb.ListAllFeedbackLabelsRequest, opts ...gax.CallOption) *FeedbackLabelIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListAllFeedbackLabels[0:len((*c.CallOptions).ListAllFeedbackLabels):len((*c.CallOptions).ListAllFeedbackLabels)], opts...) + it := &FeedbackLabelIterator{} + req = proto.Clone(req).(*contactcenterinsightspb.ListAllFeedbackLabelsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.FeedbackLabel, string, error) { + resp := &contactcenterinsightspb.ListAllFeedbackLabelsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.ListAllFeedbackLabels(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetFeedbackLabels(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *gRPCClient) BulkUploadFeedbackLabels(ctx context.Context, req *contactcenterinsightspb.BulkUploadFeedbackLabelsRequest, opts ...gax.CallOption) (*BulkUploadFeedbackLabelsOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).BulkUploadFeedbackLabels[0:len((*c.CallOptions).BulkUploadFeedbackLabels):len((*c.CallOptions).BulkUploadFeedbackLabels)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.BulkUploadFeedbackLabels(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &BulkUploadFeedbackLabelsOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) BulkDownloadFeedbackLabels(ctx context.Context, req *contactcenterinsightspb.BulkDownloadFeedbackLabelsRequest, opts ...gax.CallOption) (*BulkDownloadFeedbackLabelsOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).BulkDownloadFeedbackLabels[0:len((*c.CallOptions).BulkDownloadFeedbackLabels):len((*c.CallOptions).BulkDownloadFeedbackLabels)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.client.BulkDownloadFeedbackLabels(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &BulkDownloadFeedbackLabelsOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *gRPCClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CancelOperation[0:len((*c.CallOptions).CancelOperation):len((*c.CallOptions).CancelOperation)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = c.operationsClient.CancelOperation(ctx, req, settings.GRPC...) + return err + }, opts...) + return err +} + +func (c *gRPCClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetOperation[0:len((*c.CallOptions).GetOperation):len((*c.CallOptions).GetOperation)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.operationsClient.GetOperation(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *gRPCClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListOperations[0:len((*c.CallOptions).ListOperations):len((*c.CallOptions).ListOperations)], opts...) + it := &OperationIterator{} + req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { + resp := &longrunningpb.ListOperationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.operationsClient.ListOperations(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetOperations(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// CreateConversation creates a conversation. +// Note that this method does not support audio transcription or redaction. +// Use conversations.upload instead. +func (c *restClient) CreateConversation(ctx context.Context, req *contactcenterinsightspb.CreateConversationRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + body := req.GetConversation() + jsonReq, err := m.Marshal(body) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/conversations", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetConversationId() != "" { + params.Add("conversationId", fmt.Sprintf("%v", req.GetConversationId())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).CreateConversation[0:len((*c.CallOptions).CreateConversation):len((*c.CallOptions).CreateConversation)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &contactcenterinsightspb.Conversation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// UploadConversation create a long-running conversation upload operation. This method differs +// from CreateConversation by allowing audio transcription and optional DLP +// redaction. +func (c *restClient) UploadConversation(ctx context.Context, req *contactcenterinsightspb.UploadConversationRequest, opts ...gax.CallOption) (*UploadConversationOperation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/conversations:upload", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + + override := fmt.Sprintf("/v1/%s", resp.GetName()) + return &UploadConversationOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil +} + +// UpdateConversation updates a conversation. +func (c *restClient) UpdateConversation(ctx context.Context, req *contactcenterinsightspb.UpdateConversationRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + body := req.GetConversation() + jsonReq, err := m.Marshal(body) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetConversation().GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetUpdateMask() != nil { + field, err := protojson.Marshal(req.GetUpdateMask()) + if err != nil { + return nil, err + } + params.Add("updateMask", string(field[1:len(field)-1])) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "conversation.name", url.QueryEscape(req.GetConversation().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).UpdateConversation[0:len((*c.CallOptions).UpdateConversation):len((*c.CallOptions).UpdateConversation)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &contactcenterinsightspb.Conversation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// GetConversation gets a conversation. +func (c *restClient) GetConversation(ctx context.Context, req *contactcenterinsightspb.GetConversationRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetView() != 0 { + params.Add("view", fmt.Sprintf("%v", req.GetView())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetConversation[0:len((*c.CallOptions).GetConversation):len((*c.CallOptions).GetConversation)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &contactcenterinsightspb.Conversation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListConversations lists conversations. +func (c *restClient) ListConversations(ctx context.Context, req *contactcenterinsightspb.ListConversationsRequest, opts ...gax.CallOption) *ConversationIterator { + it := &ConversationIterator{} + req = proto.Clone(req).(*contactcenterinsightspb.ListConversationsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.Conversation, string, error) { + resp := &contactcenterinsightspb.ListConversationsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/conversations", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetOrderBy() != "" { + params.Add("orderBy", fmt.Sprintf("%v", req.GetOrderBy())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + if req.GetView() != 0 { + params.Add("view", fmt.Sprintf("%v", req.GetView())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetConversations(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +// DeleteConversation deletes a conversation. +func (c *restClient) DeleteConversation(ctx context.Context, req *contactcenterinsightspb.DeleteConversationRequest, opts ...gax.CallOption) error { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetForce() { + params.Add("force", fmt.Sprintf("%v", req.GetForce())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + // Returns nil if there is no error, otherwise wraps + // the response code and body into a non-nil error + return googleapi.CheckResponse(httpRsp) + }, opts...) +} + +// CreateAnalysis creates an analysis. The long running operation is done when the analysis +// has completed. +func (c *restClient) CreateAnalysis(ctx context.Context, req *contactcenterinsightspb.CreateAnalysisRequest, opts ...gax.CallOption) (*CreateAnalysisOperation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + body := req.GetAnalysis() + jsonReq, err := m.Marshal(body) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/analyses", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + + override := fmt.Sprintf("/v1/%s", resp.GetName()) + return &CreateAnalysisOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil +} + +// GetAnalysis gets an analysis. +func (c *restClient) GetAnalysis(ctx context.Context, req *contactcenterinsightspb.GetAnalysisRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Analysis, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetAnalysis[0:len((*c.CallOptions).GetAnalysis):len((*c.CallOptions).GetAnalysis)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &contactcenterinsightspb.Analysis{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + return resp, nil +} + +// ListAnalyses lists analyses. +func (c *restClient) ListAnalyses(ctx context.Context, req *contactcenterinsightspb.ListAnalysesRequest, opts ...gax.CallOption) *AnalysisIterator { + it := &AnalysisIterator{} + req = proto.Clone(req).(*contactcenterinsightspb.ListAnalysesRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.Analysis, string, error) { + resp := &contactcenterinsightspb.ListAnalysesResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/analyses", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } -// IngestConversationsOperation returns a new IngestConversationsOperation from a given name. -// The name must be that of a previously created IngestConversationsOperation, possibly from a different process. -func (c *Client) IngestConversationsOperation(name string) *IngestConversationsOperation { - return c.internalClient.IngestConversationsOperation(name) -} + baseUrl.RawQuery = params.Encode() -// ExportInsightsData export insights data to a destination defined in the request body. -func (c *Client) ExportInsightsData(ctx context.Context, req *contactcenterinsightspb.ExportInsightsDataRequest, opts ...gax.CallOption) (*ExportInsightsDataOperation, error) { - return c.internalClient.ExportInsightsData(ctx, req, opts...) -} + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers -// ExportInsightsDataOperation returns a new ExportInsightsDataOperation from a given name. -// The name must be that of a previously created ExportInsightsDataOperation, possibly from a different process. -func (c *Client) ExportInsightsDataOperation(name string) *ExportInsightsDataOperation { - return c.internalClient.ExportInsightsDataOperation(name) -} + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() -// CreateIssueModel creates an issue model. -func (c *Client) CreateIssueModel(ctx context.Context, req *contactcenterinsightspb.CreateIssueModelRequest, opts ...gax.CallOption) (*CreateIssueModelOperation, error) { - return c.internalClient.CreateIssueModel(ctx, req, opts...) -} + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } -// CreateIssueModelOperation returns a new CreateIssueModelOperation from a given name. -// The name must be that of a previously created CreateIssueModelOperation, possibly from a different process. -func (c *Client) CreateIssueModelOperation(name string) *CreateIssueModelOperation { - return c.internalClient.CreateIssueModelOperation(name) -} + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } -// UpdateIssueModel updates an issue model. -func (c *Client) UpdateIssueModel(ctx context.Context, req *contactcenterinsightspb.UpdateIssueModelRequest, opts ...gax.CallOption) (*contactcenterinsightspb.IssueModel, error) { - return c.internalClient.UpdateIssueModel(ctx, req, opts...) -} + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } -// GetIssueModel gets an issue model. -func (c *Client) GetIssueModel(ctx context.Context, req *contactcenterinsightspb.GetIssueModelRequest, opts ...gax.CallOption) (*contactcenterinsightspb.IssueModel, error) { - return c.internalClient.GetIssueModel(ctx, req, opts...) -} + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetAnalyses(), resp.GetNextPageToken(), nil + } -// ListIssueModels lists issue models. -func (c *Client) ListIssueModels(ctx context.Context, req *contactcenterinsightspb.ListIssueModelsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.ListIssueModelsResponse, error) { - return c.internalClient.ListIssueModels(ctx, req, opts...) -} + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } -// DeleteIssueModel deletes an issue model. -func (c *Client) DeleteIssueModel(ctx context.Context, req *contactcenterinsightspb.DeleteIssueModelRequest, opts ...gax.CallOption) (*DeleteIssueModelOperation, error) { - return c.internalClient.DeleteIssueModel(ctx, req, opts...) -} + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() -// DeleteIssueModelOperation returns a new DeleteIssueModelOperation from a given name. -// The name must be that of a previously created DeleteIssueModelOperation, possibly from a different process. -func (c *Client) DeleteIssueModelOperation(name string) *DeleteIssueModelOperation { - return c.internalClient.DeleteIssueModelOperation(name) + return it } -// DeployIssueModel deploys an issue model. Returns an error if a model is already deployed. -// An issue model can only be used in analysis after it has been deployed. -func (c *Client) DeployIssueModel(ctx context.Context, req *contactcenterinsightspb.DeployIssueModelRequest, opts ...gax.CallOption) (*DeployIssueModelOperation, error) { - return c.internalClient.DeployIssueModel(ctx, req, opts...) -} +// DeleteAnalysis deletes an analysis. +func (c *restClient) DeleteAnalysis(ctx context.Context, req *contactcenterinsightspb.DeleteAnalysisRequest, opts ...gax.CallOption) error { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) -// DeployIssueModelOperation returns a new DeployIssueModelOperation from a given name. -// The name must be that of a previously created DeployIssueModelOperation, possibly from a different process. -func (c *Client) DeployIssueModelOperation(name string) *DeployIssueModelOperation { - return c.internalClient.DeployIssueModelOperation(name) -} + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") -// UndeployIssueModel undeploys an issue model. -// An issue model can not be used in analysis after it has been undeployed. -func (c *Client) UndeployIssueModel(ctx context.Context, req *contactcenterinsightspb.UndeployIssueModelRequest, opts ...gax.CallOption) (*UndeployIssueModelOperation, error) { - return c.internalClient.UndeployIssueModel(ctx, req, opts...) -} + baseUrl.RawQuery = params.Encode() -// UndeployIssueModelOperation returns a new UndeployIssueModelOperation from a given name. -// The name must be that of a previously created UndeployIssueModelOperation, possibly from a different process. -func (c *Client) UndeployIssueModelOperation(name string) *UndeployIssueModelOperation { - return c.internalClient.UndeployIssueModelOperation(name) -} + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} -// ExportIssueModel exports an issue model to the provided destination. -func (c *Client) ExportIssueModel(ctx context.Context, req *contactcenterinsightspb.ExportIssueModelRequest, opts ...gax.CallOption) (*ExportIssueModelOperation, error) { - return c.internalClient.ExportIssueModel(ctx, req, opts...) -} + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers -// ExportIssueModelOperation returns a new ExportIssueModelOperation from a given name. -// The name must be that of a previously created ExportIssueModelOperation, possibly from a different process. -func (c *Client) ExportIssueModelOperation(name string) *ExportIssueModelOperation { - return c.internalClient.ExportIssueModelOperation(name) + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + // Returns nil if there is no error, otherwise wraps + // the response code and body into a non-nil error + return googleapi.CheckResponse(httpRsp) + }, opts...) } -// ImportIssueModel imports an issue model from a Cloud Storage bucket. -func (c *Client) ImportIssueModel(ctx context.Context, req *contactcenterinsightspb.ImportIssueModelRequest, opts ...gax.CallOption) (*ImportIssueModelOperation, error) { - return c.internalClient.ImportIssueModel(ctx, req, opts...) +// BulkAnalyzeConversations analyzes multiple conversations in a single request. +func (c *restClient) BulkAnalyzeConversations(ctx context.Context, req *contactcenterinsightspb.BulkAnalyzeConversationsRequest, opts ...gax.CallOption) (*BulkAnalyzeConversationsOperation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/conversations:bulkAnalyze", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + + override := fmt.Sprintf("/v1/%s", resp.GetName()) + return &BulkAnalyzeConversationsOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil } -// ImportIssueModelOperation returns a new ImportIssueModelOperation from a given name. -// The name must be that of a previously created ImportIssueModelOperation, possibly from a different process. -func (c *Client) ImportIssueModelOperation(name string) *ImportIssueModelOperation { - return c.internalClient.ImportIssueModelOperation(name) -} +// BulkDeleteConversations deletes multiple conversations in a single request. +func (c *restClient) BulkDeleteConversations(ctx context.Context, req *contactcenterinsightspb.BulkDeleteConversationsRequest, opts ...gax.CallOption) (*BulkDeleteConversationsOperation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) + if err != nil { + return nil, err + } + + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/conversations:bulkDelete", req.GetParent()) -// GetIssue gets an issue. -func (c *Client) GetIssue(ctx context.Context, req *contactcenterinsightspb.GetIssueRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Issue, error) { - return c.internalClient.GetIssue(ctx, req, opts...) -} + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") -// ListIssues lists issues. -func (c *Client) ListIssues(ctx context.Context, req *contactcenterinsightspb.ListIssuesRequest, opts ...gax.CallOption) (*contactcenterinsightspb.ListIssuesResponse, error) { - return c.internalClient.ListIssues(ctx, req, opts...) -} + baseUrl.RawQuery = params.Encode() -// UpdateIssue updates an issue. -func (c *Client) UpdateIssue(ctx context.Context, req *contactcenterinsightspb.UpdateIssueRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Issue, error) { - return c.internalClient.UpdateIssue(ctx, req, opts...) -} + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} -// DeleteIssue deletes an issue. -func (c *Client) DeleteIssue(ctx context.Context, req *contactcenterinsightspb.DeleteIssueRequest, opts ...gax.CallOption) error { - return c.internalClient.DeleteIssue(ctx, req, opts...) -} + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers -// CalculateIssueModelStats gets an issue model’s statistics. -func (c *Client) CalculateIssueModelStats(ctx context.Context, req *contactcenterinsightspb.CalculateIssueModelStatsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.CalculateIssueModelStatsResponse, error) { - return c.internalClient.CalculateIssueModelStats(ctx, req, opts...) -} + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() -// CreatePhraseMatcher creates a phrase matcher. -func (c *Client) CreatePhraseMatcher(ctx context.Context, req *contactcenterinsightspb.CreatePhraseMatcherRequest, opts ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) { - return c.internalClient.CreatePhraseMatcher(ctx, req, opts...) -} + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } -// GetPhraseMatcher gets a phrase matcher. -func (c *Client) GetPhraseMatcher(ctx context.Context, req *contactcenterinsightspb.GetPhraseMatcherRequest, opts ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) { - return c.internalClient.GetPhraseMatcher(ctx, req, opts...) -} + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } -// ListPhraseMatchers lists phrase matchers. -func (c *Client) ListPhraseMatchers(ctx context.Context, req *contactcenterinsightspb.ListPhraseMatchersRequest, opts ...gax.CallOption) *PhraseMatcherIterator { - return c.internalClient.ListPhraseMatchers(ctx, req, opts...) -} + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } -// DeletePhraseMatcher deletes a phrase matcher. -func (c *Client) DeletePhraseMatcher(ctx context.Context, req *contactcenterinsightspb.DeletePhraseMatcherRequest, opts ...gax.CallOption) error { - return c.internalClient.DeletePhraseMatcher(ctx, req, opts...) -} + return nil + }, opts...) + if e != nil { + return nil, e + } -// UpdatePhraseMatcher updates a phrase matcher. -func (c *Client) UpdatePhraseMatcher(ctx context.Context, req *contactcenterinsightspb.UpdatePhraseMatcherRequest, opts ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) { - return c.internalClient.UpdatePhraseMatcher(ctx, req, opts...) + override := fmt.Sprintf("/v1/%s", resp.GetName()) + return &BulkDeleteConversationsOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil } -// CalculateStats gets conversation statistics. -func (c *Client) CalculateStats(ctx context.Context, req *contactcenterinsightspb.CalculateStatsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.CalculateStatsResponse, error) { - return c.internalClient.CalculateStats(ctx, req, opts...) -} +// IngestConversations imports conversations and processes them according to the user’s +// configuration. +func (c *restClient) IngestConversations(ctx context.Context, req *contactcenterinsightspb.IngestConversationsRequest, opts ...gax.CallOption) (*IngestConversationsOperation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) + if err != nil { + return nil, err + } -// GetSettings gets project-level settings. -func (c *Client) GetSettings(ctx context.Context, req *contactcenterinsightspb.GetSettingsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Settings, error) { - return c.internalClient.GetSettings(ctx, req, opts...) -} + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/conversations:ingest", req.GetParent()) -// UpdateSettings updates project-level settings. -func (c *Client) UpdateSettings(ctx context.Context, req *contactcenterinsightspb.UpdateSettingsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Settings, error) { - return c.internalClient.UpdateSettings(ctx, req, opts...) -} + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") -// GetEncryptionSpec gets location-level encryption key specification. -func (c *Client) GetEncryptionSpec(ctx context.Context, req *contactcenterinsightspb.GetEncryptionSpecRequest, opts ...gax.CallOption) (*contactcenterinsightspb.EncryptionSpec, error) { - return c.internalClient.GetEncryptionSpec(ctx, req, opts...) -} + baseUrl.RawQuery = params.Encode() -// InitializeEncryptionSpec initializes a location-level encryption key specification. An error will -// be thrown if the location has resources already created before the -// initialization. Once the encryption specification is initialized at a -// location, it is immutable and all newly created resources under the -// location will be encrypted with the existing specification. -func (c *Client) InitializeEncryptionSpec(ctx context.Context, req *contactcenterinsightspb.InitializeEncryptionSpecRequest, opts ...gax.CallOption) (*InitializeEncryptionSpecOperation, error) { - return c.internalClient.InitializeEncryptionSpec(ctx, req, opts...) -} + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} -// InitializeEncryptionSpecOperation returns a new InitializeEncryptionSpecOperation from a given name. -// The name must be that of a previously created InitializeEncryptionSpecOperation, possibly from a different process. -func (c *Client) InitializeEncryptionSpecOperation(name string) *InitializeEncryptionSpecOperation { - return c.internalClient.InitializeEncryptionSpecOperation(name) -} + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers -// CreateView creates a view. -func (c *Client) CreateView(ctx context.Context, req *contactcenterinsightspb.CreateViewRequest, opts ...gax.CallOption) (*contactcenterinsightspb.View, error) { - return c.internalClient.CreateView(ctx, req, opts...) -} + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() -// GetView gets a view. -func (c *Client) GetView(ctx context.Context, req *contactcenterinsightspb.GetViewRequest, opts ...gax.CallOption) (*contactcenterinsightspb.View, error) { - return c.internalClient.GetView(ctx, req, opts...) -} + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } -// ListViews lists views. -func (c *Client) ListViews(ctx context.Context, req *contactcenterinsightspb.ListViewsRequest, opts ...gax.CallOption) *ViewIterator { - return c.internalClient.ListViews(ctx, req, opts...) -} + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } -// UpdateView updates a view. -func (c *Client) UpdateView(ctx context.Context, req *contactcenterinsightspb.UpdateViewRequest, opts ...gax.CallOption) (*contactcenterinsightspb.View, error) { - return c.internalClient.UpdateView(ctx, req, opts...) -} + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } -// DeleteView deletes a view. -func (c *Client) DeleteView(ctx context.Context, req *contactcenterinsightspb.DeleteViewRequest, opts ...gax.CallOption) error { - return c.internalClient.DeleteView(ctx, req, opts...) -} + return nil + }, opts...) + if e != nil { + return nil, e + } -// CancelOperation is a utility method from google.longrunning.Operations. -func (c *Client) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { - return c.internalClient.CancelOperation(ctx, req, opts...) + override := fmt.Sprintf("/v1/%s", resp.GetName()) + return &IngestConversationsOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil } -// GetOperation is a utility method from google.longrunning.Operations. -func (c *Client) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { - return c.internalClient.GetOperation(ctx, req, opts...) -} +// ExportInsightsData export insights data to a destination defined in the request body. +func (c *restClient) ExportInsightsData(ctx context.Context, req *contactcenterinsightspb.ExportInsightsDataRequest, opts ...gax.CallOption) (*ExportInsightsDataOperation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) + if err != nil { + return nil, err + } -// ListOperations is a utility method from google.longrunning.Operations. -func (c *Client) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { - return c.internalClient.ListOperations(ctx, req, opts...) -} + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/insightsdata:export", req.GetParent()) -// gRPCClient is a client for interacting with Contact Center AI Insights API over gRPC transport. -// -// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. -type gRPCClient struct { - // Connection pool of gRPC connections to the service. - connPool gtransport.ConnPool + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") - // Points back to the CallOptions field of the containing Client - CallOptions **CallOptions + baseUrl.RawQuery = params.Encode() - // The gRPC API client. - client contactcenterinsightspb.ContactCenterInsightsClient + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} - // LROClient is used internally to handle long-running operations. - // It is exposed so that its CallOptions can be modified if required. - // Users should not Close this client. - LROClient **lroauto.OperationsClient + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers - operationsClient longrunningpb.OperationsClient + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() - // The x-goog-* metadata to be sent with each request. - xGoogHeaders []string -} + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } -// NewClient creates a new contact center insights client based on gRPC. -// The returned client must be Closed when it is done being used to clean up its underlying connections. -// -// An API that lets users analyze and explore their business conversation data. -func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error) { - clientOpts := defaultGRPCClientOptions() - if newClientHook != nil { - hookOpts, err := newClientHook(ctx, clientHookParams{}) + buf, err := io.ReadAll(httpRsp.Body) if err != nil { - return nil, err + return err } - clientOpts = append(clientOpts, hookOpts...) + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e } - connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) + override := fmt.Sprintf("/v1/%s", resp.GetName()) + return &ExportInsightsDataOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil +} + +// CreateIssueModel creates an issue model. +func (c *restClient) CreateIssueModel(ctx context.Context, req *contactcenterinsightspb.CreateIssueModelRequest, opts ...gax.CallOption) (*CreateIssueModelOperation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + body := req.GetIssueModel() + jsonReq, err := m.Marshal(body) if err != nil { return nil, err } - client := Client{CallOptions: defaultCallOptions()} - - c := &gRPCClient{ - connPool: connPool, - client: contactcenterinsightspb.NewContactCenterInsightsClient(connPool), - CallOptions: &client.CallOptions, - operationsClient: longrunningpb.NewOperationsClient(connPool), - } - c.setGoogleClientInfo() - - client.internalClient = c - client.LROClient, err = lroauto.NewOperationsClient(ctx, gtransport.WithConnPool(connPool)) + baseUrl, err := url.Parse(c.endpoint) if err != nil { - // This error "should not happen", since we are just reusing old connection pool - // and never actually need to dial. - // If this does happen, we could leak connp. However, we cannot close conn: - // If the user invoked the constructor with option.WithGRPCConn, - // we would close a connection that's still in use. - // TODO: investigate error conditions. return nil, err } - c.LROClient = &client.LROClient - return &client, nil -} + baseUrl.Path += fmt.Sprintf("/v1/%v/issueModels", req.GetParent()) -// Connection returns a connection to the API service. -// -// Deprecated: Connections are now pooled so this method does not always -// return the same resource. -func (c *gRPCClient) Connection() *grpc.ClientConn { - return c.connPool.Conn() -} + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") -// setGoogleClientInfo sets the name and version of the application in -// the `x-goog-api-client` header passed on each request. Intended for -// use by Google-written clients. -func (c *gRPCClient) setGoogleClientInfo(keyval ...string) { - kv := append([]string{"gl-go", gax.GoVersion}, keyval...) - kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "grpc", grpc.Version) - c.xGoogHeaders = []string{ - "x-goog-api-client", gax.XGoogHeader(kv...), - } -} + baseUrl.RawQuery = params.Encode() -// Close closes the connection to the API service. The user should invoke this when -// the client is no longer required. -func (c *gRPCClient) Close() error { - return c.connPool.Close() -} + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} -// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. -type restClient struct { - // The http endpoint to connect to. - endpoint string + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers - // The http client. - httpClient *http.Client + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() - // LROClient is used internally to handle long-running operations. - // It is exposed so that its CallOptions can be modified if required. - // Users should not Close this client. - LROClient **lroauto.OperationsClient + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } - // The x-goog-* headers to be sent with each request. - xGoogHeaders []string + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } - // Points back to the CallOptions field of the containing Client - CallOptions **CallOptions + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, e + } + + override := fmt.Sprintf("/v1/%s", resp.GetName()) + return &CreateIssueModelOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil } -// NewRESTClient creates a new contact center insights rest client. -// -// An API that lets users analyze and explore their business conversation data. -func NewRESTClient(ctx context.Context, opts ...option.ClientOption) (*Client, error) { - clientOpts := append(defaultRESTClientOptions(), opts...) - httpClient, endpoint, err := httptransport.NewClient(ctx, clientOpts...) +// UpdateIssueModel updates an issue model. +func (c *restClient) UpdateIssueModel(ctx context.Context, req *contactcenterinsightspb.UpdateIssueModelRequest, opts ...gax.CallOption) (*contactcenterinsightspb.IssueModel, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + body := req.GetIssueModel() + jsonReq, err := m.Marshal(body) if err != nil { return nil, err } - callOpts := defaultRESTCallOptions() - c := &restClient{ - endpoint: endpoint, - httpClient: httpClient, - CallOptions: &callOpts, - } - c.setGoogleClientInfo() - - lroOpts := []option.ClientOption{ - option.WithHTTPClient(httpClient), - option.WithEndpoint(endpoint), - } - opClient, err := lroauto.NewOperationsRESTClient(ctx, lroOpts...) + baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - c.LROClient = &opClient - - return &Client{internalClient: c, CallOptions: callOpts}, nil -} + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetIssueModel().GetName()) -func defaultRESTClientOptions() []option.ClientOption { - return []option.ClientOption{ - internaloption.WithDefaultEndpoint("https://contactcenterinsights.googleapis.com"), - internaloption.WithDefaultEndpointTemplate("https://contactcenterinsights.UNIVERSE_DOMAIN"), - internaloption.WithDefaultMTLSEndpoint("https://contactcenterinsights.mtls.googleapis.com"), - internaloption.WithDefaultUniverseDomain("googleapis.com"), - internaloption.WithDefaultAudience("https://contactcenterinsights.googleapis.com/"), - internaloption.WithDefaultScopes(DefaultAuthScopes()...), - internaloption.EnableNewAuthLibrary(), + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetUpdateMask() != nil { + field, err := protojson.Marshal(req.GetUpdateMask()) + if err != nil { + return nil, err + } + params.Add("updateMask", string(field[1:len(field)-1])) } -} -// setGoogleClientInfo sets the name and version of the application in -// the `x-goog-api-client` header passed on each request. Intended for -// use by Google-written clients. -func (c *restClient) setGoogleClientInfo(keyval ...string) { - kv := append([]string{"gl-go", gax.GoVersion}, keyval...) - kv = append(kv, "gapic", getVersionClient(), "gax", gax.Version, "rest", "UNKNOWN") - c.xGoogHeaders = []string{ - "x-goog-api-client", gax.XGoogHeader(kv...), - } -} + baseUrl.RawQuery = params.Encode() -// Close closes the connection to the API service. The user should invoke this when -// the client is no longer required. -func (c *restClient) Close() error { - // Replace httpClient with nil to force cleanup. - c.httpClient = nil - return nil -} + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "issue_model.name", url.QueryEscape(req.GetIssueModel().GetName()))} -// Connection returns a connection to the API service. -// -// Deprecated: This method always returns nil. -func (c *restClient) Connection() *grpc.ClientConn { - return nil -} -func (c *gRPCClient) CreateConversation(ctx context.Context, req *contactcenterinsightspb.CreateConversationRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).UpdateIssueModel[0:len((*c.CallOptions).UpdateIssueModel):len((*c.CallOptions).UpdateIssueModel)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &contactcenterinsightspb.IssueModel{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).CreateConversation[0:len((*c.CallOptions).CreateConversation):len((*c.CallOptions).CreateConversation)], opts...) - var resp *contactcenterinsightspb.Conversation - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.CreateConversation(ctx, req, settings.GRPC...) - return err + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil }, opts...) - if err != nil { - return nil, err + if e != nil { + return nil, e } return resp, nil } -func (c *gRPCClient) UploadConversation(ctx context.Context, req *contactcenterinsightspb.UploadConversationRequest, opts ...gax.CallOption) (*UploadConversationOperation, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} - - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).UploadConversation[0:len((*c.CallOptions).UploadConversation):len((*c.CallOptions).UploadConversation)], opts...) - var resp *longrunningpb.Operation - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.UploadConversation(ctx, req, settings.GRPC...) - return err - }, opts...) +// GetIssueModel gets an issue model. +func (c *restClient) GetIssueModel(ctx context.Context, req *contactcenterinsightspb.GetIssueModelRequest, opts ...gax.CallOption) (*contactcenterinsightspb.IssueModel, error) { + baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - return &UploadConversationOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), - }, nil -} + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) -func (c *gRPCClient) UpdateConversation(ctx context.Context, req *contactcenterinsightspb.UpdateConversationRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "conversation.name", url.QueryEscape(req.GetConversation().GetName()))} + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).UpdateConversation[0:len((*c.CallOptions).UpdateConversation):len((*c.CallOptions).UpdateConversation)], opts...) - var resp *contactcenterinsightspb.Conversation - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.UpdateConversation(ctx, req, settings.GRPC...) - return err + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetIssueModel[0:len((*c.CallOptions).GetIssueModel):len((*c.CallOptions).GetIssueModel)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &contactcenterinsightspb.IssueModel{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil }, opts...) - if err != nil { - return nil, err + if e != nil { + return nil, e } return resp, nil } -func (c *gRPCClient) GetConversation(ctx context.Context, req *contactcenterinsightspb.GetConversationRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} - - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).GetConversation[0:len((*c.CallOptions).GetConversation):len((*c.CallOptions).GetConversation)], opts...) - var resp *contactcenterinsightspb.Conversation - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.GetConversation(ctx, req, settings.GRPC...) - return err - }, opts...) +// ListIssueModels lists issue models. +func (c *restClient) ListIssueModels(ctx context.Context, req *contactcenterinsightspb.ListIssueModelsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.ListIssueModelsResponse, error) { + baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - return resp, nil -} + baseUrl.Path += fmt.Sprintf("/v1/%v/issueModels", req.GetParent()) -func (c *gRPCClient) ListConversations(ctx context.Context, req *contactcenterinsightspb.ListConversationsRequest, opts ...gax.CallOption) *ConversationIterator { + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).ListConversations[0:len((*c.CallOptions).ListConversations):len((*c.CallOptions).ListConversations)], opts...) - it := &ConversationIterator{} - req = proto.Clone(req).(*contactcenterinsightspb.ListConversationsRequest) - it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.Conversation, string, error) { - resp := &contactcenterinsightspb.ListConversationsResponse{} - if pageToken != "" { - req.PageToken = pageToken - } - if pageSize > math.MaxInt32 { - req.PageSize = math.MaxInt32 - } else if pageSize != 0 { - req.PageSize = int32(pageSize) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).ListIssueModels[0:len((*c.CallOptions).ListIssueModels):len((*c.CallOptions).ListIssueModels)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &contactcenterinsightspb.ListIssueModelsResponse{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path } - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.ListConversations(ctx, req, settings.GRPC...) - return err - }, opts...) + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) if err != nil { - return nil, "", err + return err } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers - it.Response = resp - return resp.GetConversations(), resp.GetNextPageToken(), nil - } - fetch := func(pageSize int, pageToken string) (string, error) { - items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + httpRsp, err := c.httpClient.Do(httpReq) if err != nil { - return "", err + return err } - it.items = append(it.items, items...) - return nextPageToken, nil - } + defer httpRsp.Body.Close() - it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) - it.pageInfo.MaxSize = int(req.GetPageSize()) - it.pageInfo.Token = req.GetPageToken() + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } - return it -} + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } -func (c *gRPCClient) DeleteConversation(ctx context.Context, req *contactcenterinsightspb.DeleteConversationRequest, opts ...gax.CallOption) error { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).DeleteConversation[0:len((*c.CallOptions).DeleteConversation):len((*c.CallOptions).DeleteConversation)], opts...) - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - _, err = c.client.DeleteConversation(ctx, req, settings.GRPC...) - return err + return nil }, opts...) - return err + if e != nil { + return nil, e + } + return resp, nil } -func (c *gRPCClient) CreateAnalysis(ctx context.Context, req *contactcenterinsightspb.CreateAnalysisRequest, opts ...gax.CallOption) (*CreateAnalysisOperation, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} - - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).CreateAnalysis[0:len((*c.CallOptions).CreateAnalysis):len((*c.CallOptions).CreateAnalysis)], opts...) - var resp *longrunningpb.Operation - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.CreateAnalysis(ctx, req, settings.GRPC...) - return err - }, opts...) +// DeleteIssueModel deletes an issue model. +func (c *restClient) DeleteIssueModel(ctx context.Context, req *contactcenterinsightspb.DeleteIssueModelRequest, opts ...gax.CallOption) (*DeleteIssueModelOperation, error) { + baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - return &CreateAnalysisOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), - }, nil -} + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) -func (c *gRPCClient) GetAnalysis(ctx context.Context, req *contactcenterinsightspb.GetAnalysisRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Analysis, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).GetAnalysis[0:len((*c.CallOptions).GetAnalysis):len((*c.CallOptions).GetAnalysis)], opts...) - var resp *contactcenterinsightspb.Analysis - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.GetAnalysis(ctx, req, settings.GRPC...) - return err - }, opts...) - if err != nil { - return nil, err - } - return resp, nil -} + baseUrl.RawQuery = params.Encode() -func (c *gRPCClient) ListAnalyses(ctx context.Context, req *contactcenterinsightspb.ListAnalysesRequest, opts ...gax.CallOption) *AnalysisIterator { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).ListAnalyses[0:len((*c.CallOptions).ListAnalyses):len((*c.CallOptions).ListAnalyses)], opts...) - it := &AnalysisIterator{} - req = proto.Clone(req).(*contactcenterinsightspb.ListAnalysesRequest) - it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.Analysis, string, error) { - resp := &contactcenterinsightspb.ListAnalysesResponse{} - if pageToken != "" { - req.PageToken = pageToken - } - if pageSize > math.MaxInt32 { - req.PageSize = math.MaxInt32 - } else if pageSize != 0 { - req.PageSize = int32(pageSize) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path } - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.ListAnalyses(ctx, req, settings.GRPC...) - return err - }, opts...) + httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) if err != nil { - return nil, "", err + return err } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers - it.Response = resp - return resp.GetAnalyses(), resp.GetNextPageToken(), nil - } - fetch := func(pageSize int, pageToken string) (string, error) { - items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + httpRsp, err := c.httpClient.Do(httpReq) if err != nil { - return "", err + return err } - it.items = append(it.items, items...) - return nextPageToken, nil - } - - it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) - it.pageInfo.MaxSize = int(req.GetPageSize()) - it.pageInfo.Token = req.GetPageToken() - - return it -} + defer httpRsp.Body.Close() -func (c *gRPCClient) DeleteAnalysis(ctx context.Context, req *contactcenterinsightspb.DeleteAnalysisRequest, opts ...gax.CallOption) error { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).DeleteAnalysis[0:len((*c.CallOptions).DeleteAnalysis):len((*c.CallOptions).DeleteAnalysis)], opts...) - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - _, err = c.client.DeleteAnalysis(ctx, req, settings.GRPC...) - return err - }, opts...) - return err -} + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } -func (c *gRPCClient) BulkAnalyzeConversations(ctx context.Context, req *contactcenterinsightspb.BulkAnalyzeConversationsRequest, opts ...gax.CallOption) (*BulkAnalyzeConversationsOperation, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).BulkAnalyzeConversations[0:len((*c.CallOptions).BulkAnalyzeConversations):len((*c.CallOptions).BulkAnalyzeConversations)], opts...) - var resp *longrunningpb.Operation - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.BulkAnalyzeConversations(ctx, req, settings.GRPC...) - return err + return nil }, opts...) - if err != nil { - return nil, err + if e != nil { + return nil, e } - return &BulkAnalyzeConversationsOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), + + override := fmt.Sprintf("/v1/%s", resp.GetName()) + return &DeleteIssueModelOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, }, nil } -func (c *gRPCClient) BulkDeleteConversations(ctx context.Context, req *contactcenterinsightspb.BulkDeleteConversationsRequest, opts ...gax.CallOption) (*BulkDeleteConversationsOperation, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} - - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).BulkDeleteConversations[0:len((*c.CallOptions).BulkDeleteConversations):len((*c.CallOptions).BulkDeleteConversations)], opts...) - var resp *longrunningpb.Operation - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.BulkDeleteConversations(ctx, req, settings.GRPC...) - return err - }, opts...) +// DeployIssueModel deploys an issue model. Returns an error if a model is already deployed. +// An issue model can only be used in analysis after it has been deployed. +func (c *restClient) DeployIssueModel(ctx context.Context, req *contactcenterinsightspb.DeployIssueModelRequest, opts ...gax.CallOption) (*DeployIssueModelOperation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) if err != nil { return nil, err } - return &BulkDeleteConversationsOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), - }, nil -} - -func (c *gRPCClient) IngestConversations(ctx context.Context, req *contactcenterinsightspb.IngestConversationsRequest, opts ...gax.CallOption) (*IngestConversationsOperation, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).IngestConversations[0:len((*c.CallOptions).IngestConversations):len((*c.CallOptions).IngestConversations)], opts...) - var resp *longrunningpb.Operation - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.IngestConversations(ctx, req, settings.GRPC...) - return err - }, opts...) + baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - return &IngestConversationsOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), - }, nil -} + baseUrl.Path += fmt.Sprintf("/v1/%v:deploy", req.GetName()) -func (c *gRPCClient) ExportInsightsData(ctx context.Context, req *contactcenterinsightspb.ExportInsightsDataRequest, opts ...gax.CallOption) (*ExportInsightsDataOperation, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).ExportInsightsData[0:len((*c.CallOptions).ExportInsightsData):len((*c.CallOptions).ExportInsightsData)], opts...) - var resp *longrunningpb.Operation - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.ExportInsightsData(ctx, req, settings.GRPC...) - return err + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil }, opts...) - if err != nil { - return nil, err + if e != nil { + return nil, e } - return &ExportInsightsDataOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), + + override := fmt.Sprintf("/v1/%s", resp.GetName()) + return &DeployIssueModelOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, }, nil } -func (c *gRPCClient) CreateIssueModel(ctx context.Context, req *contactcenterinsightspb.CreateIssueModelRequest, opts ...gax.CallOption) (*CreateIssueModelOperation, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} - - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).CreateIssueModel[0:len((*c.CallOptions).CreateIssueModel):len((*c.CallOptions).CreateIssueModel)], opts...) - var resp *longrunningpb.Operation - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.CreateIssueModel(ctx, req, settings.GRPC...) - return err - }, opts...) +// UndeployIssueModel undeploys an issue model. +// An issue model can not be used in analysis after it has been undeployed. +func (c *restClient) UndeployIssueModel(ctx context.Context, req *contactcenterinsightspb.UndeployIssueModelRequest, opts ...gax.CallOption) (*UndeployIssueModelOperation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) if err != nil { return nil, err } - return &CreateIssueModelOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), - }, nil -} -func (c *gRPCClient) UpdateIssueModel(ctx context.Context, req *contactcenterinsightspb.UpdateIssueModelRequest, opts ...gax.CallOption) (*contactcenterinsightspb.IssueModel, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "issue_model.name", url.QueryEscape(req.GetIssueModel().GetName()))} - - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).UpdateIssueModel[0:len((*c.CallOptions).UpdateIssueModel):len((*c.CallOptions).UpdateIssueModel)], opts...) - var resp *contactcenterinsightspb.IssueModel - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.UpdateIssueModel(ctx, req, settings.GRPC...) - return err - }, opts...) + baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - return resp, nil -} + baseUrl.Path += fmt.Sprintf("/v1/%v:undeploy", req.GetName()) -func (c *gRPCClient) GetIssueModel(ctx context.Context, req *contactcenterinsightspb.GetIssueModelRequest, opts ...gax.CallOption) (*contactcenterinsightspb.IssueModel, error) { + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).GetIssueModel[0:len((*c.CallOptions).GetIssueModel):len((*c.CallOptions).GetIssueModel)], opts...) - var resp *contactcenterinsightspb.IssueModel - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.GetIssueModel(ctx, req, settings.GRPC...) - return err - }, opts...) - if err != nil { - return nil, err - } - return resp, nil -} + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers -func (c *gRPCClient) ListIssueModels(ctx context.Context, req *contactcenterinsightspb.ListIssueModelsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.ListIssueModelsResponse, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).ListIssueModels[0:len((*c.CallOptions).ListIssueModels):len((*c.CallOptions).ListIssueModels)], opts...) - var resp *contactcenterinsightspb.ListIssueModelsResponse - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.ListIssueModels(ctx, req, settings.GRPC...) - return err - }, opts...) - if err != nil { - return nil, err - } - return resp, nil -} + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } -func (c *gRPCClient) DeleteIssueModel(ctx context.Context, req *contactcenterinsightspb.DeleteIssueModelRequest, opts ...gax.CallOption) (*DeleteIssueModelOperation, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).DeleteIssueModel[0:len((*c.CallOptions).DeleteIssueModel):len((*c.CallOptions).DeleteIssueModel)], opts...) - var resp *longrunningpb.Operation - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.DeleteIssueModel(ctx, req, settings.GRPC...) - return err + return nil }, opts...) - if err != nil { - return nil, err + if e != nil { + return nil, e } - return &DeleteIssueModelOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), + + override := fmt.Sprintf("/v1/%s", resp.GetName()) + return &UndeployIssueModelOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, }, nil } -func (c *gRPCClient) DeployIssueModel(ctx context.Context, req *contactcenterinsightspb.DeployIssueModelRequest, opts ...gax.CallOption) (*DeployIssueModelOperation, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} - - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).DeployIssueModel[0:len((*c.CallOptions).DeployIssueModel):len((*c.CallOptions).DeployIssueModel)], opts...) - var resp *longrunningpb.Operation - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.DeployIssueModel(ctx, req, settings.GRPC...) - return err - }, opts...) +// ExportIssueModel exports an issue model to the provided destination. +func (c *restClient) ExportIssueModel(ctx context.Context, req *contactcenterinsightspb.ExportIssueModelRequest, opts ...gax.CallOption) (*ExportIssueModelOperation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) if err != nil { return nil, err } - return &DeployIssueModelOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), - }, nil -} -func (c *gRPCClient) UndeployIssueModel(ctx context.Context, req *contactcenterinsightspb.UndeployIssueModelRequest, opts ...gax.CallOption) (*UndeployIssueModelOperation, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} - - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).UndeployIssueModel[0:len((*c.CallOptions).UndeployIssueModel):len((*c.CallOptions).UndeployIssueModel)], opts...) - var resp *longrunningpb.Operation - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.UndeployIssueModel(ctx, req, settings.GRPC...) - return err - }, opts...) + baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - return &UndeployIssueModelOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), - }, nil -} + baseUrl.Path += fmt.Sprintf("/v1/%v:export", req.GetName()) -func (c *gRPCClient) ExportIssueModel(ctx context.Context, req *contactcenterinsightspb.ExportIssueModelRequest, opts ...gax.CallOption) (*ExportIssueModelOperation, error) { + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).ExportIssueModel[0:len((*c.CallOptions).ExportIssueModel):len((*c.CallOptions).ExportIssueModel)], opts...) - var resp *longrunningpb.Operation - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.ExportIssueModel(ctx, req, settings.GRPC...) - return err + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil }, opts...) - if err != nil { - return nil, err + if e != nil { + return nil, e } + + override := fmt.Sprintf("/v1/%s", resp.GetName()) return &ExportIssueModelOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, }, nil } -func (c *gRPCClient) ImportIssueModel(ctx context.Context, req *contactcenterinsightspb.ImportIssueModelRequest, opts ...gax.CallOption) (*ImportIssueModelOperation, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} - - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).ImportIssueModel[0:len((*c.CallOptions).ImportIssueModel):len((*c.CallOptions).ImportIssueModel)], opts...) - var resp *longrunningpb.Operation - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.ImportIssueModel(ctx, req, settings.GRPC...) - return err - }, opts...) +// ImportIssueModel imports an issue model from a Cloud Storage bucket. +func (c *restClient) ImportIssueModel(ctx context.Context, req *contactcenterinsightspb.ImportIssueModelRequest, opts ...gax.CallOption) (*ImportIssueModelOperation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) if err != nil { return nil, err } - return &ImportIssueModelOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), - }, nil -} -func (c *gRPCClient) GetIssue(ctx context.Context, req *contactcenterinsightspb.GetIssueRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Issue, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} - - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).GetIssue[0:len((*c.CallOptions).GetIssue):len((*c.CallOptions).GetIssue)], opts...) - var resp *contactcenterinsightspb.Issue - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.GetIssue(ctx, req, settings.GRPC...) - return err - }, opts...) + baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - return resp, nil -} + baseUrl.Path += fmt.Sprintf("/v1/%v/issueModels:import", req.GetParent()) -func (c *gRPCClient) ListIssues(ctx context.Context, req *contactcenterinsightspb.ListIssuesRequest, opts ...gax.CallOption) (*contactcenterinsightspb.ListIssuesResponse, error) { + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).ListIssues[0:len((*c.CallOptions).ListIssues):len((*c.CallOptions).ListIssues)], opts...) - var resp *contactcenterinsightspb.ListIssuesResponse - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.ListIssues(ctx, req, settings.GRPC...) - return err - }, opts...) - if err != nil { - return nil, err - } - return resp, nil -} + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers -func (c *gRPCClient) UpdateIssue(ctx context.Context, req *contactcenterinsightspb.UpdateIssueRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Issue, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "issue.name", url.QueryEscape(req.GetIssue().GetName()))} + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).UpdateIssue[0:len((*c.CallOptions).UpdateIssue):len((*c.CallOptions).UpdateIssue)], opts...) - var resp *contactcenterinsightspb.Issue - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.UpdateIssue(ctx, req, settings.GRPC...) - return err - }, opts...) - if err != nil { - return nil, err - } - return resp, nil -} + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } -func (c *gRPCClient) DeleteIssue(ctx context.Context, req *contactcenterinsightspb.DeleteIssueRequest, opts ...gax.CallOption) error { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).DeleteIssue[0:len((*c.CallOptions).DeleteIssue):len((*c.CallOptions).DeleteIssue)], opts...) - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - _, err = c.client.DeleteIssue(ctx, req, settings.GRPC...) - return err + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil }, opts...) - return err -} + if e != nil { + return nil, e + } -func (c *gRPCClient) CalculateIssueModelStats(ctx context.Context, req *contactcenterinsightspb.CalculateIssueModelStatsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.CalculateIssueModelStatsResponse, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "issue_model", url.QueryEscape(req.GetIssueModel()))} + override := fmt.Sprintf("/v1/%s", resp.GetName()) + return &ImportIssueModelOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil +} - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).CalculateIssueModelStats[0:len((*c.CallOptions).CalculateIssueModelStats):len((*c.CallOptions).CalculateIssueModelStats)], opts...) - var resp *contactcenterinsightspb.CalculateIssueModelStatsResponse - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.CalculateIssueModelStats(ctx, req, settings.GRPC...) - return err - }, opts...) +// GetIssue gets an issue. +func (c *restClient) GetIssue(ctx context.Context, req *contactcenterinsightspb.GetIssueRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Issue, error) { + baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - return resp, nil -} + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) -func (c *gRPCClient) CreatePhraseMatcher(ctx context.Context, req *contactcenterinsightspb.CreatePhraseMatcherRequest, opts ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).CreatePhraseMatcher[0:len((*c.CallOptions).CreatePhraseMatcher):len((*c.CallOptions).CreatePhraseMatcher)], opts...) - var resp *contactcenterinsightspb.PhraseMatcher - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.CreatePhraseMatcher(ctx, req, settings.GRPC...) - return err + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetIssue[0:len((*c.CallOptions).GetIssue):len((*c.CallOptions).GetIssue)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &contactcenterinsightspb.Issue{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil }, opts...) - if err != nil { - return nil, err + if e != nil { + return nil, e } return resp, nil } -func (c *gRPCClient) GetPhraseMatcher(ctx context.Context, req *contactcenterinsightspb.GetPhraseMatcherRequest, opts ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} - - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).GetPhraseMatcher[0:len((*c.CallOptions).GetPhraseMatcher):len((*c.CallOptions).GetPhraseMatcher)], opts...) - var resp *contactcenterinsightspb.PhraseMatcher - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.GetPhraseMatcher(ctx, req, settings.GRPC...) - return err - }, opts...) +// ListIssues lists issues. +func (c *restClient) ListIssues(ctx context.Context, req *contactcenterinsightspb.ListIssuesRequest, opts ...gax.CallOption) (*contactcenterinsightspb.ListIssuesResponse, error) { + baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - return resp, nil -} + baseUrl.Path += fmt.Sprintf("/v1/%v/issues", req.GetParent()) -func (c *gRPCClient) ListPhraseMatchers(ctx context.Context, req *contactcenterinsightspb.ListPhraseMatchersRequest, opts ...gax.CallOption) *PhraseMatcherIterator { + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).ListPhraseMatchers[0:len((*c.CallOptions).ListPhraseMatchers):len((*c.CallOptions).ListPhraseMatchers)], opts...) - it := &PhraseMatcherIterator{} - req = proto.Clone(req).(*contactcenterinsightspb.ListPhraseMatchersRequest) - it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.PhraseMatcher, string, error) { - resp := &contactcenterinsightspb.ListPhraseMatchersResponse{} - if pageToken != "" { - req.PageToken = pageToken - } - if pageSize > math.MaxInt32 { - req.PageSize = math.MaxInt32 - } else if pageSize != 0 { - req.PageSize = int32(pageSize) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).ListIssues[0:len((*c.CallOptions).ListIssues):len((*c.CallOptions).ListIssues)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &contactcenterinsightspb.ListIssuesResponse{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path } - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.ListPhraseMatchers(ctx, req, settings.GRPC...) - return err - }, opts...) + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) if err != nil { - return nil, "", err + return err } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers - it.Response = resp - return resp.GetPhraseMatchers(), resp.GetNextPageToken(), nil - } - fetch := func(pageSize int, pageToken string) (string, error) { - items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + httpRsp, err := c.httpClient.Do(httpReq) if err != nil { - return "", err + return err } - it.items = append(it.items, items...) - return nextPageToken, nil - } + defer httpRsp.Body.Close() - it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) - it.pageInfo.MaxSize = int(req.GetPageSize()) - it.pageInfo.Token = req.GetPageToken() + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } - return it -} + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } -func (c *gRPCClient) DeletePhraseMatcher(ctx context.Context, req *contactcenterinsightspb.DeletePhraseMatcherRequest, opts ...gax.CallOption) error { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).DeletePhraseMatcher[0:len((*c.CallOptions).DeletePhraseMatcher):len((*c.CallOptions).DeletePhraseMatcher)], opts...) - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - _, err = c.client.DeletePhraseMatcher(ctx, req, settings.GRPC...) - return err + return nil }, opts...) - return err + if e != nil { + return nil, e + } + return resp, nil } -func (c *gRPCClient) UpdatePhraseMatcher(ctx context.Context, req *contactcenterinsightspb.UpdatePhraseMatcherRequest, opts ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "phrase_matcher.name", url.QueryEscape(req.GetPhraseMatcher().GetName()))} - - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).UpdatePhraseMatcher[0:len((*c.CallOptions).UpdatePhraseMatcher):len((*c.CallOptions).UpdatePhraseMatcher)], opts...) - var resp *contactcenterinsightspb.PhraseMatcher - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.UpdatePhraseMatcher(ctx, req, settings.GRPC...) - return err - }, opts...) +// UpdateIssue updates an issue. +func (c *restClient) UpdateIssue(ctx context.Context, req *contactcenterinsightspb.UpdateIssueRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Issue, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + body := req.GetIssue() + jsonReq, err := m.Marshal(body) if err != nil { return nil, err } - return resp, nil -} - -func (c *gRPCClient) CalculateStats(ctx context.Context, req *contactcenterinsightspb.CalculateStatsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.CalculateStatsResponse, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "location", url.QueryEscape(req.GetLocation()))} - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).CalculateStats[0:len((*c.CallOptions).CalculateStats):len((*c.CallOptions).CalculateStats)], opts...) - var resp *contactcenterinsightspb.CalculateStatsResponse - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.CalculateStats(ctx, req, settings.GRPC...) - return err - }, opts...) + baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - return resp, nil -} + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetIssue().GetName()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetUpdateMask() != nil { + field, err := protojson.Marshal(req.GetUpdateMask()) + if err != nil { + return nil, err + } + params.Add("updateMask", string(field[1:len(field)-1])) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "issue.name", url.QueryEscape(req.GetIssue().GetName()))} + + hds = append(c.xGoogHeaders, hds...) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).UpdateIssue[0:len((*c.CallOptions).UpdateIssue):len((*c.CallOptions).UpdateIssue)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &contactcenterinsightspb.Issue{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } -func (c *gRPCClient) GetSettings(ctx context.Context, req *contactcenterinsightspb.GetSettingsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Settings, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).GetSettings[0:len((*c.CallOptions).GetSettings):len((*c.CallOptions).GetSettings)], opts...) - var resp *contactcenterinsightspb.Settings - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.GetSettings(ctx, req, settings.GRPC...) - return err + return nil }, opts...) - if err != nil { - return nil, err + if e != nil { + return nil, e } return resp, nil } -func (c *gRPCClient) UpdateSettings(ctx context.Context, req *contactcenterinsightspb.UpdateSettingsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Settings, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "settings.name", url.QueryEscape(req.GetSettings().GetName()))} - - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).UpdateSettings[0:len((*c.CallOptions).UpdateSettings):len((*c.CallOptions).UpdateSettings)], opts...) - var resp *contactcenterinsightspb.Settings - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.UpdateSettings(ctx, req, settings.GRPC...) - return err - }, opts...) +// DeleteIssue deletes an issue. +func (c *restClient) DeleteIssue(ctx context.Context, req *contactcenterinsightspb.DeleteIssueRequest, opts ...gax.CallOption) error { + baseUrl, err := url.Parse(c.endpoint) if err != nil { - return nil, err + return err } - return resp, nil -} + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) -func (c *gRPCClient) GetEncryptionSpec(ctx context.Context, req *contactcenterinsightspb.GetEncryptionSpecRequest, opts ...gax.CallOption) (*contactcenterinsightspb.EncryptionSpec, error) { + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).GetEncryptionSpec[0:len((*c.CallOptions).GetEncryptionSpec):len((*c.CallOptions).GetEncryptionSpec)], opts...) - var resp *contactcenterinsightspb.EncryptionSpec - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.GetEncryptionSpec(ctx, req, settings.GRPC...) - return err - }, opts...) - if err != nil { - return nil, err - } - return resp, nil -} + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers -func (c *gRPCClient) InitializeEncryptionSpec(ctx context.Context, req *contactcenterinsightspb.InitializeEncryptionSpecRequest, opts ...gax.CallOption) (*InitializeEncryptionSpecOperation, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "encryption_spec.name", url.QueryEscape(req.GetEncryptionSpec().GetName()))} + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).InitializeEncryptionSpec[0:len((*c.CallOptions).InitializeEncryptionSpec):len((*c.CallOptions).InitializeEncryptionSpec)], opts...) - var resp *longrunningpb.Operation - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.InitializeEncryptionSpec(ctx, req, settings.GRPC...) - return err + // Returns nil if there is no error, otherwise wraps + // the response code and body into a non-nil error + return googleapi.CheckResponse(httpRsp) }, opts...) +} + +// CalculateIssueModelStats gets an issue model’s statistics. +func (c *restClient) CalculateIssueModelStats(ctx context.Context, req *contactcenterinsightspb.CalculateIssueModelStatsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.CalculateIssueModelStatsResponse, error) { + baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - return &InitializeEncryptionSpecOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), - }, nil -} + baseUrl.Path += fmt.Sprintf("/v1/%v:calculateIssueModelStats", req.GetIssueModel()) -func (c *gRPCClient) CreateView(ctx context.Context, req *contactcenterinsightspb.CreateViewRequest, opts ...gax.CallOption) (*contactcenterinsightspb.View, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "issue_model", url.QueryEscape(req.GetIssueModel()))} hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).CreateView[0:len((*c.CallOptions).CreateView):len((*c.CallOptions).CreateView)], opts...) - var resp *contactcenterinsightspb.View - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.CreateView(ctx, req, settings.GRPC...) - return err + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).CalculateIssueModelStats[0:len((*c.CallOptions).CalculateIssueModelStats):len((*c.CallOptions).CalculateIssueModelStats)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &contactcenterinsightspb.CalculateIssueModelStatsResponse{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil }, opts...) - if err != nil { - return nil, err + if e != nil { + return nil, e } return resp, nil } -func (c *gRPCClient) GetView(ctx context.Context, req *contactcenterinsightspb.GetViewRequest, opts ...gax.CallOption) (*contactcenterinsightspb.View, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} +// CreatePhraseMatcher creates a phrase matcher. +func (c *restClient) CreatePhraseMatcher(ctx context.Context, req *contactcenterinsightspb.CreatePhraseMatcherRequest, opts ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + body := req.GetPhraseMatcher() + jsonReq, err := m.Marshal(body) + if err != nil { + return nil, err + } - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).GetView[0:len((*c.CallOptions).GetView):len((*c.CallOptions).GetView)], opts...) - var resp *contactcenterinsightspb.View - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.GetView(ctx, req, settings.GRPC...) - return err - }, opts...) + baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - return resp, nil -} + baseUrl.Path += fmt.Sprintf("/v1/%v/phraseMatchers", req.GetParent()) -func (c *gRPCClient) ListViews(ctx context.Context, req *contactcenterinsightspb.ListViewsRequest, opts ...gax.CallOption) *ViewIterator { + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).ListViews[0:len((*c.CallOptions).ListViews):len((*c.CallOptions).ListViews)], opts...) - it := &ViewIterator{} - req = proto.Clone(req).(*contactcenterinsightspb.ListViewsRequest) - it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.View, string, error) { - resp := &contactcenterinsightspb.ListViewsResponse{} - if pageToken != "" { - req.PageToken = pageToken - } - if pageSize > math.MaxInt32 { - req.PageSize = math.MaxInt32 - } else if pageSize != 0 { - req.PageSize = int32(pageSize) + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).CreatePhraseMatcher[0:len((*c.CallOptions).CreatePhraseMatcher):len((*c.CallOptions).CreatePhraseMatcher)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &contactcenterinsightspb.PhraseMatcher{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path } - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.ListViews(ctx, req, settings.GRPC...) - return err - }, opts...) + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) if err != nil { - return nil, "", err + return err } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers - it.Response = resp - return resp.GetViews(), resp.GetNextPageToken(), nil - } - fetch := func(pageSize int, pageToken string) (string, error) { - items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + httpRsp, err := c.httpClient.Do(httpReq) if err != nil { - return "", err + return err } - it.items = append(it.items, items...) - return nextPageToken, nil - } + defer httpRsp.Body.Close() - it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) - it.pageInfo.MaxSize = int(req.GetPageSize()) - it.pageInfo.Token = req.GetPageToken() + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } - return it -} + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } -func (c *gRPCClient) UpdateView(ctx context.Context, req *contactcenterinsightspb.UpdateViewRequest, opts ...gax.CallOption) (*contactcenterinsightspb.View, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "view.name", url.QueryEscape(req.GetView().GetName()))} + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).UpdateView[0:len((*c.CallOptions).UpdateView):len((*c.CallOptions).UpdateView)], opts...) - var resp *contactcenterinsightspb.View - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.client.UpdateView(ctx, req, settings.GRPC...) - return err + return nil }, opts...) - if err != nil { - return nil, err + if e != nil { + return nil, e } return resp, nil } -func (c *gRPCClient) DeleteView(ctx context.Context, req *contactcenterinsightspb.DeleteViewRequest, opts ...gax.CallOption) error { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} +// GetPhraseMatcher gets a phrase matcher. +func (c *restClient) GetPhraseMatcher(ctx context.Context, req *contactcenterinsightspb.GetPhraseMatcherRequest, opts ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) { + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, err + } + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).DeleteView[0:len((*c.CallOptions).DeleteView):len((*c.CallOptions).DeleteView)], opts...) - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - _, err = c.client.DeleteView(ctx, req, settings.GRPC...) - return err - }, opts...) - return err -} + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") -func (c *gRPCClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).CancelOperation[0:len((*c.CallOptions).CancelOperation):len((*c.CallOptions).CancelOperation)], opts...) - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - _, err = c.operationsClient.CancelOperation(ctx, req, settings.GRPC...) - return err - }, opts...) - return err -} + hds = append(hds, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetPhraseMatcher[0:len((*c.CallOptions).GetPhraseMatcher):len((*c.CallOptions).GetPhraseMatcher)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &contactcenterinsightspb.PhraseMatcher{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq = httpReq.WithContext(ctx) + httpReq.Header = headers -func (c *gRPCClient) GetOperation(ctx context.Context, req *longrunningpb.GetOperationRequest, opts ...gax.CallOption) (*longrunningpb.Operation, error) { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).GetOperation[0:len((*c.CallOptions).GetOperation):len((*c.CallOptions).GetOperation)], opts...) - var resp *longrunningpb.Operation - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.operationsClient.GetOperation(ctx, req, settings.GRPC...) - return err + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil }, opts...) - if err != nil { - return nil, err + if e != nil { + return nil, e } return resp, nil } -func (c *gRPCClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} - - hds = append(c.xGoogHeaders, hds...) - ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) - opts = append((*c.CallOptions).ListOperations[0:len((*c.CallOptions).ListOperations):len((*c.CallOptions).ListOperations)], opts...) - it := &OperationIterator{} - req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) - it.InternalFetch = func(pageSize int, pageToken string) ([]*longrunningpb.Operation, string, error) { - resp := &longrunningpb.ListOperationsResponse{} +// ListPhraseMatchers lists phrase matchers. +func (c *restClient) ListPhraseMatchers(ctx context.Context, req *contactcenterinsightspb.ListPhraseMatchersRequest, opts ...gax.CallOption) *PhraseMatcherIterator { + it := &PhraseMatcherIterator{} + req = proto.Clone(req).(*contactcenterinsightspb.ListPhraseMatchersRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.PhraseMatcher, string, error) { + resp := &contactcenterinsightspb.ListPhraseMatchersResponse{} if pageToken != "" { req.PageToken = pageToken } @@ -2727,18 +6447,67 @@ func (c *gRPCClient) ListOperations(ctx context.Context, req *longrunningpb.List } else if pageSize != 0 { req.PageSize = int32(pageSize) } - err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - var err error - resp, err = c.operationsClient.ListOperations(ctx, req, settings.GRPC...) - return err - }, opts...) + baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, "", err } + baseUrl.Path += fmt.Sprintf("/v1/%v/phraseMatchers", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } it.Response = resp - return resp.GetOperations(), resp.GetNextPageToken(), nil + return resp.GetPhraseMatchers(), resp.GetNextPageToken(), nil } + fetch := func(pageSize int, pageToken string) (string, error) { items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) if err != nil { @@ -2755,45 +6524,30 @@ func (c *gRPCClient) ListOperations(ctx context.Context, req *longrunningpb.List return it } -// CreateConversation creates a conversation. -// Note that this method does not support audio transcription or redaction. -// Use conversations.upload instead. -func (c *restClient) CreateConversation(ctx context.Context, req *contactcenterinsightspb.CreateConversationRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) { - m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} - body := req.GetConversation() - jsonReq, err := m.Marshal(body) - if err != nil { - return nil, err - } - +// DeletePhraseMatcher deletes a phrase matcher. +func (c *restClient) DeletePhraseMatcher(ctx context.Context, req *contactcenterinsightspb.DeletePhraseMatcherRequest, opts ...gax.CallOption) error { baseUrl, err := url.Parse(c.endpoint) if err != nil { - return nil, err + return err } - baseUrl.Path += fmt.Sprintf("/v1/%v/conversations", req.GetParent()) + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") - if req.GetConversationId() != "" { - params.Add("conversationId", fmt.Sprintf("%v", req.GetConversationId())) - } baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).CreateConversation[0:len((*c.CallOptions).CreateConversation):len((*c.CallOptions).CreateConversation)], opts...) - unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &contactcenterinsightspb.Conversation{} - e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) if err != nil { return err } @@ -2806,33 +6560,17 @@ func (c *restClient) CreateConversation(ctx context.Context, req *contactcenteri } defer httpRsp.Body.Close() - if err = googleapi.CheckResponse(httpRsp); err != nil { - return err - } - - buf, err := io.ReadAll(httpRsp.Body) - if err != nil { - return err - } - - if err := unm.Unmarshal(buf, resp); err != nil { - return err - } - - return nil + // Returns nil if there is no error, otherwise wraps + // the response code and body into a non-nil error + return googleapi.CheckResponse(httpRsp) }, opts...) - if e != nil { - return nil, e - } - return resp, nil } -// UploadConversation create a long-running conversation upload operation. This method differs -// from CreateConversation by allowing audio transcription and optional DLP -// redaction. -func (c *restClient) UploadConversation(ctx context.Context, req *contactcenterinsightspb.UploadConversationRequest, opts ...gax.CallOption) (*UploadConversationOperation, error) { +// UpdatePhraseMatcher updates a phrase matcher. +func (c *restClient) UpdatePhraseMatcher(ctx context.Context, req *contactcenterinsightspb.UpdatePhraseMatcherRequest, opts ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) { m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} - jsonReq, err := m.Marshal(req) + body := req.GetPhraseMatcher() + jsonReq, err := m.Marshal(body) if err != nil { return nil, err } @@ -2841,26 +6579,34 @@ func (c *restClient) UploadConversation(ctx context.Context, req *contactcenteri if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v/conversations:upload", req.GetParent()) + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetPhraseMatcher().GetName()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") + if req.GetUpdateMask() != nil { + field, err := protojson.Marshal(req.GetUpdateMask()) + if err != nil { + return nil, err + } + params.Add("updateMask", string(field[1:len(field)-1])) + } baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "phrase_matcher.name", url.QueryEscape(req.GetPhraseMatcher().GetName()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).UpdatePhraseMatcher[0:len((*c.CallOptions).UpdatePhraseMatcher):len((*c.CallOptions).UpdatePhraseMatcher)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &longrunningpb.Operation{} + resp := &contactcenterinsightspb.PhraseMatcher{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) if err != nil { return err } @@ -2891,55 +6637,39 @@ func (c *restClient) UploadConversation(ctx context.Context, req *contactcenteri if e != nil { return nil, e } + return resp, nil +} - override := fmt.Sprintf("/v1/%s", resp.GetName()) - return &UploadConversationOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), - pollPath: override, - }, nil -} - -// UpdateConversation updates a conversation. -func (c *restClient) UpdateConversation(ctx context.Context, req *contactcenterinsightspb.UpdateConversationRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) { - m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} - body := req.GetConversation() - jsonReq, err := m.Marshal(body) - if err != nil { - return nil, err - } - +// CalculateStats gets conversation statistics. +func (c *restClient) CalculateStats(ctx context.Context, req *contactcenterinsightspb.CalculateStatsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.CalculateStatsResponse, error) { baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetConversation().GetName()) + baseUrl.Path += fmt.Sprintf("/v1/%v/conversations:calculateStats", req.GetLocation()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") - if req.GetUpdateMask() != nil { - field, err := protojson.Marshal(req.GetUpdateMask()) - if err != nil { - return nil, err - } - params.Add("updateMask", string(field[1:len(field)-1])) + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) } baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "conversation.name", url.QueryEscape(req.GetConversation().GetName()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "location", url.QueryEscape(req.GetLocation()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).UpdateConversation[0:len((*c.CallOptions).UpdateConversation):len((*c.CallOptions).UpdateConversation)], opts...) + opts = append((*c.CallOptions).CalculateStats[0:len((*c.CallOptions).CalculateStats):len((*c.CallOptions).CalculateStats)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &contactcenterinsightspb.Conversation{} + resp := &contactcenterinsightspb.CalculateStatsResponse{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) if err != nil { return err } @@ -2973,8 +6703,8 @@ func (c *restClient) UpdateConversation(ctx context.Context, req *contactcenteri return resp, nil } -// GetConversation gets a conversation. -func (c *restClient) GetConversation(ctx context.Context, req *contactcenterinsightspb.GetConversationRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Conversation, error) { +// GetSettings gets project-level settings. +func (c *restClient) GetSettings(ctx context.Context, req *contactcenterinsightspb.GetSettingsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Settings, error) { baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err @@ -2983,9 +6713,6 @@ func (c *restClient) GetConversation(ctx context.Context, req *contactcenterinsi params := url.Values{} params.Add("$alt", "json;enum-encoding=int") - if req.GetView() != 0 { - params.Add("view", fmt.Sprintf("%v", req.GetView())) - } baseUrl.RawQuery = params.Encode() @@ -2995,9 +6722,9 @@ func (c *restClient) GetConversation(ctx context.Context, req *contactcenterinsi hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).GetConversation[0:len((*c.CallOptions).GetConversation):len((*c.CallOptions).GetConversation)], opts...) + opts = append((*c.CallOptions).GetSettings[0:len((*c.CallOptions).GetSettings):len((*c.CallOptions).GetSettings)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &contactcenterinsightspb.Conversation{} + resp := &contactcenterinsightspb.Settings{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path @@ -3036,131 +6763,47 @@ func (c *restClient) GetConversation(ctx context.Context, req *contactcenterinsi return resp, nil } -// ListConversations lists conversations. -func (c *restClient) ListConversations(ctx context.Context, req *contactcenterinsightspb.ListConversationsRequest, opts ...gax.CallOption) *ConversationIterator { - it := &ConversationIterator{} - req = proto.Clone(req).(*contactcenterinsightspb.ListConversationsRequest) - unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.Conversation, string, error) { - resp := &contactcenterinsightspb.ListConversationsResponse{} - if pageToken != "" { - req.PageToken = pageToken - } - if pageSize > math.MaxInt32 { - req.PageSize = math.MaxInt32 - } else if pageSize != 0 { - req.PageSize = int32(pageSize) - } - baseUrl, err := url.Parse(c.endpoint) - if err != nil { - return nil, "", err - } - baseUrl.Path += fmt.Sprintf("/v1/%v/conversations", req.GetParent()) - - params := url.Values{} - params.Add("$alt", "json;enum-encoding=int") - if req.GetFilter() != "" { - params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) - } - if req.GetOrderBy() != "" { - params.Add("orderBy", fmt.Sprintf("%v", req.GetOrderBy())) - } - if req.GetPageSize() != 0 { - params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) - } - if req.GetPageToken() != "" { - params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) - } - if req.GetView() != 0 { - params.Add("view", fmt.Sprintf("%v", req.GetView())) - } - - baseUrl.RawQuery = params.Encode() - - // Build HTTP headers from client and context metadata. - hds := append(c.xGoogHeaders, "Content-Type", "application/json") - headers := gax.BuildHeaders(ctx, hds...) - e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - if settings.Path != "" { - baseUrl.Path = settings.Path - } - httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) - if err != nil { - return err - } - httpReq.Header = headers - - httpRsp, err := c.httpClient.Do(httpReq) - if err != nil { - return err - } - defer httpRsp.Body.Close() - - if err = googleapi.CheckResponse(httpRsp); err != nil { - return err - } - - buf, err := io.ReadAll(httpRsp.Body) - if err != nil { - return err - } - - if err := unm.Unmarshal(buf, resp); err != nil { - return err - } - - return nil - }, opts...) - if e != nil { - return nil, "", e - } - it.Response = resp - return resp.GetConversations(), resp.GetNextPageToken(), nil - } - - fetch := func(pageSize int, pageToken string) (string, error) { - items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) - if err != nil { - return "", err - } - it.items = append(it.items, items...) - return nextPageToken, nil +// UpdateSettings updates project-level settings. +func (c *restClient) UpdateSettings(ctx context.Context, req *contactcenterinsightspb.UpdateSettingsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Settings, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + body := req.GetSettings() + jsonReq, err := m.Marshal(body) + if err != nil { + return nil, err } - it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) - it.pageInfo.MaxSize = int(req.GetPageSize()) - it.pageInfo.Token = req.GetPageToken() - - return it -} - -// DeleteConversation deletes a conversation. -func (c *restClient) DeleteConversation(ctx context.Context, req *contactcenterinsightspb.DeleteConversationRequest, opts ...gax.CallOption) error { baseUrl, err := url.Parse(c.endpoint) if err != nil { - return err + return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetSettings().GetName()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") - if req.GetForce() { - params.Add("force", fmt.Sprintf("%v", req.GetForce())) + if req.GetUpdateMask() != nil { + field, err := protojson.Marshal(req.GetUpdateMask()) + if err != nil { + return nil, err + } + params.Add("updateMask", string(field[1:len(field)-1])) } baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "settings.name", url.QueryEscape(req.GetSettings().GetName()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + opts = append((*c.CallOptions).UpdateSettings[0:len((*c.CallOptions).UpdateSettings):len((*c.CallOptions).UpdateSettings)], opts...) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &contactcenterinsightspb.Settings{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) + httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) if err != nil { return err } @@ -3173,17 +6816,31 @@ func (c *restClient) DeleteConversation(ctx context.Context, req *contactcenteri } defer httpRsp.Body.Close() - // Returns nil if there is no error, otherwise wraps - // the response code and body into a non-nil error - return googleapi.CheckResponse(httpRsp) + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil }, opts...) + if e != nil { + return nil, e + } + return resp, nil } -// CreateAnalysis creates an analysis. The long running operation is done when the analysis -// has completed. -func (c *restClient) CreateAnalysis(ctx context.Context, req *contactcenterinsightspb.CreateAnalysisRequest, opts ...gax.CallOption) (*CreateAnalysisOperation, error) { +// CreateAnalysisRule creates a analysis rule. +func (c *restClient) CreateAnalysisRule(ctx context.Context, req *contactcenterinsightspb.CreateAnalysisRuleRequest, opts ...gax.CallOption) (*contactcenterinsightspb.AnalysisRule, error) { m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} - body := req.GetAnalysis() + body := req.GetAnalysisRule() jsonReq, err := m.Marshal(body) if err != nil { return nil, err @@ -3193,7 +6850,7 @@ func (c *restClient) CreateAnalysis(ctx context.Context, req *contactcenterinsig if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v/analyses", req.GetParent()) + baseUrl.Path += fmt.Sprintf("/v1/%v/analysisRules", req.GetParent()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") @@ -3206,8 +6863,9 @@ func (c *restClient) CreateAnalysis(ctx context.Context, req *contactcenterinsig hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).CreateAnalysisRule[0:len((*c.CallOptions).CreateAnalysisRule):len((*c.CallOptions).CreateAnalysisRule)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &longrunningpb.Operation{} + resp := &contactcenterinsightspb.AnalysisRule{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path @@ -3243,16 +6901,11 @@ func (c *restClient) CreateAnalysis(ctx context.Context, req *contactcenterinsig if e != nil { return nil, e } - - override := fmt.Sprintf("/v1/%s", resp.GetName()) - return &CreateAnalysisOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), - pollPath: override, - }, nil + return resp, nil } -// GetAnalysis gets an analysis. -func (c *restClient) GetAnalysis(ctx context.Context, req *contactcenterinsightspb.GetAnalysisRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Analysis, error) { +// GetAnalysisRule get a analysis rule. +func (c *restClient) GetAnalysisRule(ctx context.Context, req *contactcenterinsightspb.GetAnalysisRuleRequest, opts ...gax.CallOption) (*contactcenterinsightspb.AnalysisRule, error) { baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err @@ -3270,9 +6923,9 @@ func (c *restClient) GetAnalysis(ctx context.Context, req *contactcenterinsights hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).GetAnalysis[0:len((*c.CallOptions).GetAnalysis):len((*c.CallOptions).GetAnalysis)], opts...) + opts = append((*c.CallOptions).GetAnalysisRule[0:len((*c.CallOptions).GetAnalysisRule):len((*c.CallOptions).GetAnalysisRule)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &contactcenterinsightspb.Analysis{} + resp := &contactcenterinsightspb.AnalysisRule{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path @@ -3311,13 +6964,13 @@ func (c *restClient) GetAnalysis(ctx context.Context, req *contactcenterinsights return resp, nil } -// ListAnalyses lists analyses. -func (c *restClient) ListAnalyses(ctx context.Context, req *contactcenterinsightspb.ListAnalysesRequest, opts ...gax.CallOption) *AnalysisIterator { - it := &AnalysisIterator{} - req = proto.Clone(req).(*contactcenterinsightspb.ListAnalysesRequest) +// ListAnalysisRules lists analysis rules. +func (c *restClient) ListAnalysisRules(ctx context.Context, req *contactcenterinsightspb.ListAnalysisRulesRequest, opts ...gax.CallOption) *AnalysisRuleIterator { + it := &AnalysisRuleIterator{} + req = proto.Clone(req).(*contactcenterinsightspb.ListAnalysisRulesRequest) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.Analysis, string, error) { - resp := &contactcenterinsightspb.ListAnalysesResponse{} + it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.AnalysisRule, string, error) { + resp := &contactcenterinsightspb.ListAnalysisRulesResponse{} if pageToken != "" { req.PageToken = pageToken } @@ -3330,13 +6983,10 @@ func (c *restClient) ListAnalyses(ctx context.Context, req *contactcenterinsight if err != nil { return nil, "", err } - baseUrl.Path += fmt.Sprintf("/v1/%v/analyses", req.GetParent()) + baseUrl.Path += fmt.Sprintf("/v1/%v/analysisRules", req.GetParent()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") - if req.GetFilter() != "" { - params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) - } if req.GetPageSize() != 0 { params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) } @@ -3383,72 +7033,31 @@ func (c *restClient) ListAnalyses(ctx context.Context, req *contactcenterinsight if e != nil { return nil, "", e } - it.Response = resp - return resp.GetAnalyses(), resp.GetNextPageToken(), nil - } - - fetch := func(pageSize int, pageToken string) (string, error) { - items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) - if err != nil { - return "", err - } - it.items = append(it.items, items...) - return nextPageToken, nil - } - - it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) - it.pageInfo.MaxSize = int(req.GetPageSize()) - it.pageInfo.Token = req.GetPageToken() - - return it -} - -// DeleteAnalysis deletes an analysis. -func (c *restClient) DeleteAnalysis(ctx context.Context, req *contactcenterinsightspb.DeleteAnalysisRequest, opts ...gax.CallOption) error { - baseUrl, err := url.Parse(c.endpoint) - if err != nil { - return err - } - baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) - - params := url.Values{} - params.Add("$alt", "json;enum-encoding=int") - - baseUrl.RawQuery = params.Encode() - - // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} - - hds = append(c.xGoogHeaders, hds...) - hds = append(hds, "Content-Type", "application/json") - headers := gax.BuildHeaders(ctx, hds...) - return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - if settings.Path != "" { - baseUrl.Path = settings.Path - } - httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) - if err != nil { - return err - } - httpReq = httpReq.WithContext(ctx) - httpReq.Header = headers + it.Response = resp + return resp.GetAnalysisRules(), resp.GetNextPageToken(), nil + } - httpRsp, err := c.httpClient.Do(httpReq) + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) if err != nil { - return err + return "", err } - defer httpRsp.Body.Close() + it.items = append(it.items, items...) + return nextPageToken, nil + } - // Returns nil if there is no error, otherwise wraps - // the response code and body into a non-nil error - return googleapi.CheckResponse(httpRsp) - }, opts...) + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it } -// BulkAnalyzeConversations analyzes multiple conversations in a single request. -func (c *restClient) BulkAnalyzeConversations(ctx context.Context, req *contactcenterinsightspb.BulkAnalyzeConversationsRequest, opts ...gax.CallOption) (*BulkAnalyzeConversationsOperation, error) { +// UpdateAnalysisRule updates a analysis rule. +func (c *restClient) UpdateAnalysisRule(ctx context.Context, req *contactcenterinsightspb.UpdateAnalysisRuleRequest, opts ...gax.CallOption) (*contactcenterinsightspb.AnalysisRule, error) { m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} - jsonReq, err := m.Marshal(req) + body := req.GetAnalysisRule() + jsonReq, err := m.Marshal(body) if err != nil { return nil, err } @@ -3457,26 +7066,34 @@ func (c *restClient) BulkAnalyzeConversations(ctx context.Context, req *contactc if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v/conversations:bulkAnalyze", req.GetParent()) + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetAnalysisRule().GetName()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") + if req.GetUpdateMask() != nil { + field, err := protojson.Marshal(req.GetUpdateMask()) + if err != nil { + return nil, err + } + params.Add("updateMask", string(field[1:len(field)-1])) + } baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "analysis_rule.name", url.QueryEscape(req.GetAnalysisRule().GetName()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).UpdateAnalysisRule[0:len((*c.CallOptions).UpdateAnalysisRule):len((*c.CallOptions).UpdateAnalysisRule)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &longrunningpb.Operation{} + resp := &contactcenterinsightspb.AnalysisRule{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) if err != nil { return err } @@ -3507,27 +7124,16 @@ func (c *restClient) BulkAnalyzeConversations(ctx context.Context, req *contactc if e != nil { return nil, e } - - override := fmt.Sprintf("/v1/%s", resp.GetName()) - return &BulkAnalyzeConversationsOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), - pollPath: override, - }, nil + return resp, nil } -// BulkDeleteConversations deletes multiple conversations in a single request. -func (c *restClient) BulkDeleteConversations(ctx context.Context, req *contactcenterinsightspb.BulkDeleteConversationsRequest, opts ...gax.CallOption) (*BulkDeleteConversationsOperation, error) { - m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} - jsonReq, err := m.Marshal(req) - if err != nil { - return nil, err - } - +// DeleteAnalysisRule deletes a analysis rule. +func (c *restClient) DeleteAnalysisRule(ctx context.Context, req *contactcenterinsightspb.DeleteAnalysisRuleRequest, opts ...gax.CallOption) error { baseUrl, err := url.Parse(c.endpoint) if err != nil { - return nil, err + return err } - baseUrl.Path += fmt.Sprintf("/v1/%v/conversations:bulkDelete", req.GetParent()) + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") @@ -3535,18 +7141,16 @@ func (c *restClient) BulkDeleteConversations(ctx context.Context, req *contactce baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &longrunningpb.Operation{} - e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) if err != nil { return err } @@ -3559,46 +7163,19 @@ func (c *restClient) BulkDeleteConversations(ctx context.Context, req *contactce } defer httpRsp.Body.Close() - if err = googleapi.CheckResponse(httpRsp); err != nil { - return err - } - - buf, err := io.ReadAll(httpRsp.Body) - if err != nil { - return err - } - - if err := unm.Unmarshal(buf, resp); err != nil { - return err - } - - return nil + // Returns nil if there is no error, otherwise wraps + // the response code and body into a non-nil error + return googleapi.CheckResponse(httpRsp) }, opts...) - if e != nil { - return nil, e - } - - override := fmt.Sprintf("/v1/%s", resp.GetName()) - return &BulkDeleteConversationsOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), - pollPath: override, - }, nil } -// IngestConversations imports conversations and processes them according to the user’s -// configuration. -func (c *restClient) IngestConversations(ctx context.Context, req *contactcenterinsightspb.IngestConversationsRequest, opts ...gax.CallOption) (*IngestConversationsOperation, error) { - m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} - jsonReq, err := m.Marshal(req) - if err != nil { - return nil, err - } - +// GetEncryptionSpec gets location-level encryption key specification. +func (c *restClient) GetEncryptionSpec(ctx context.Context, req *contactcenterinsightspb.GetEncryptionSpecRequest, opts ...gax.CallOption) (*contactcenterinsightspb.EncryptionSpec, error) { baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v/conversations:ingest", req.GetParent()) + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") @@ -3606,18 +7183,19 @@ func (c *restClient) IngestConversations(ctx context.Context, req *contactcenter baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetEncryptionSpec[0:len((*c.CallOptions).GetEncryptionSpec):len((*c.CallOptions).GetEncryptionSpec)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &longrunningpb.Operation{} + resp := &contactcenterinsightspb.EncryptionSpec{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) if err != nil { return err } @@ -3648,16 +7226,15 @@ func (c *restClient) IngestConversations(ctx context.Context, req *contactcenter if e != nil { return nil, e } - - override := fmt.Sprintf("/v1/%s", resp.GetName()) - return &IngestConversationsOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), - pollPath: override, - }, nil + return resp, nil } -// ExportInsightsData export insights data to a destination defined in the request body. -func (c *restClient) ExportInsightsData(ctx context.Context, req *contactcenterinsightspb.ExportInsightsDataRequest, opts ...gax.CallOption) (*ExportInsightsDataOperation, error) { +// InitializeEncryptionSpec initializes a location-level encryption key specification. An error will +// result if the location has resources already created before the +// initialization. After the encryption specification is initialized at a +// location, it is immutable and all newly created resources under the +// location will be encrypted with the existing specification. +func (c *restClient) InitializeEncryptionSpec(ctx context.Context, req *contactcenterinsightspb.InitializeEncryptionSpecRequest, opts ...gax.CallOption) (*InitializeEncryptionSpecOperation, error) { m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} jsonReq, err := m.Marshal(req) if err != nil { @@ -3668,7 +7245,7 @@ func (c *restClient) ExportInsightsData(ctx context.Context, req *contactcenteri if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v/insightsdata:export", req.GetParent()) + baseUrl.Path += fmt.Sprintf("/v1/%v:initialize", req.GetEncryptionSpec().GetName()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") @@ -3676,7 +7253,7 @@ func (c *restClient) ExportInsightsData(ctx context.Context, req *contactcenteri baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "encryption_spec.name", url.QueryEscape(req.GetEncryptionSpec().GetName()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") @@ -3720,16 +7297,16 @@ func (c *restClient) ExportInsightsData(ctx context.Context, req *contactcenteri } override := fmt.Sprintf("/v1/%s", resp.GetName()) - return &ExportInsightsDataOperation{ + return &InitializeEncryptionSpecOperation{ lro: longrunning.InternalNewOperation(*c.LROClient, resp), pollPath: override, }, nil } -// CreateIssueModel creates an issue model. -func (c *restClient) CreateIssueModel(ctx context.Context, req *contactcenterinsightspb.CreateIssueModelRequest, opts ...gax.CallOption) (*CreateIssueModelOperation, error) { +// CreateView creates a view. +func (c *restClient) CreateView(ctx context.Context, req *contactcenterinsightspb.CreateViewRequest, opts ...gax.CallOption) (*contactcenterinsightspb.View, error) { m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} - body := req.GetIssueModel() + body := req.GetView() jsonReq, err := m.Marshal(body) if err != nil { return nil, err @@ -3739,7 +7316,7 @@ func (c *restClient) CreateIssueModel(ctx context.Context, req *contactcenterins if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v/issueModels", req.GetParent()) + baseUrl.Path += fmt.Sprintf("/v1/%v/views", req.GetParent()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") @@ -3752,8 +7329,9 @@ func (c *restClient) CreateIssueModel(ctx context.Context, req *contactcenterins hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).CreateView[0:len((*c.CallOptions).CreateView):len((*c.CallOptions).CreateView)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &longrunningpb.Operation{} + resp := &contactcenterinsightspb.View{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path @@ -3789,55 +7367,36 @@ func (c *restClient) CreateIssueModel(ctx context.Context, req *contactcenterins if e != nil { return nil, e } - - override := fmt.Sprintf("/v1/%s", resp.GetName()) - return &CreateIssueModelOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), - pollPath: override, - }, nil + return resp, nil } -// UpdateIssueModel updates an issue model. -func (c *restClient) UpdateIssueModel(ctx context.Context, req *contactcenterinsightspb.UpdateIssueModelRequest, opts ...gax.CallOption) (*contactcenterinsightspb.IssueModel, error) { - m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} - body := req.GetIssueModel() - jsonReq, err := m.Marshal(body) - if err != nil { - return nil, err - } - +// GetView gets a view. +func (c *restClient) GetView(ctx context.Context, req *contactcenterinsightspb.GetViewRequest, opts ...gax.CallOption) (*contactcenterinsightspb.View, error) { baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetIssueModel().GetName()) + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") - if req.GetUpdateMask() != nil { - field, err := protojson.Marshal(req.GetUpdateMask()) - if err != nil { - return nil, err - } - params.Add("updateMask", string(field[1:len(field)-1])) - } baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "issue_model.name", url.QueryEscape(req.GetIssueModel().GetName()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).UpdateIssueModel[0:len((*c.CallOptions).UpdateIssueModel):len((*c.CallOptions).UpdateIssueModel)], opts...) + opts = append((*c.CallOptions).GetView[0:len((*c.CallOptions).GetView):len((*c.CallOptions).GetView)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &contactcenterinsightspb.IssueModel{} + resp := &contactcenterinsightspb.View{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) if err != nil { return err } @@ -3868,36 +7427,139 @@ func (c *restClient) UpdateIssueModel(ctx context.Context, req *contactcenterins if e != nil { return nil, e } - return resp, nil + return resp, nil +} + +// ListViews lists views. +func (c *restClient) ListViews(ctx context.Context, req *contactcenterinsightspb.ListViewsRequest, opts ...gax.CallOption) *ViewIterator { + it := &ViewIterator{} + req = proto.Clone(req).(*contactcenterinsightspb.ListViewsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.View, string, error) { + resp := &contactcenterinsightspb.ListViewsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/views", req.GetParent()) + + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } + + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetViews(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it } -// GetIssueModel gets an issue model. -func (c *restClient) GetIssueModel(ctx context.Context, req *contactcenterinsightspb.GetIssueModelRequest, opts ...gax.CallOption) (*contactcenterinsightspb.IssueModel, error) { +// UpdateView updates a view. +func (c *restClient) UpdateView(ctx context.Context, req *contactcenterinsightspb.UpdateViewRequest, opts ...gax.CallOption) (*contactcenterinsightspb.View, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + body := req.GetView() + jsonReq, err := m.Marshal(body) + if err != nil { + return nil, err + } + baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetView().GetName()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") + if req.GetUpdateMask() != nil { + field, err := protojson.Marshal(req.GetUpdateMask()) + if err != nil { + return nil, err + } + params.Add("updateMask", string(field[1:len(field)-1])) + } baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "view.name", url.QueryEscape(req.GetView().GetName()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).GetIssueModel[0:len((*c.CallOptions).GetIssueModel):len((*c.CallOptions).GetIssueModel)], opts...) + opts = append((*c.CallOptions).UpdateView[0:len((*c.CallOptions).UpdateView):len((*c.CallOptions).UpdateView)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &contactcenterinsightspb.IssueModel{} + resp := &contactcenterinsightspb.View{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) if err != nil { return err } @@ -3931,13 +7593,13 @@ func (c *restClient) GetIssueModel(ctx context.Context, req *contactcenterinsigh return resp, nil } -// ListIssueModels lists issue models. -func (c *restClient) ListIssueModels(ctx context.Context, req *contactcenterinsightspb.ListIssueModelsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.ListIssueModelsResponse, error) { +// DeleteView deletes a view. +func (c *restClient) DeleteView(ctx context.Context, req *contactcenterinsightspb.DeleteViewRequest, opts ...gax.CallOption) error { baseUrl, err := url.Parse(c.endpoint) if err != nil { - return nil, err + return err } - baseUrl.Path += fmt.Sprintf("/v1/%v/issueModels", req.GetParent()) + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") @@ -3945,19 +7607,16 @@ func (c *restClient) ListIssueModels(ctx context.Context, req *contactcenterinsi baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).ListIssueModels[0:len((*c.CallOptions).ListIssueModels):len((*c.CallOptions).ListIssueModels)], opts...) - unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &contactcenterinsightspb.ListIssueModelsResponse{} - e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) if err != nil { return err } @@ -3970,34 +7629,25 @@ func (c *restClient) ListIssueModels(ctx context.Context, req *contactcenterinsi } defer httpRsp.Body.Close() - if err = googleapi.CheckResponse(httpRsp); err != nil { - return err - } - - buf, err := io.ReadAll(httpRsp.Body) - if err != nil { - return err - } - - if err := unm.Unmarshal(buf, resp); err != nil { - return err - } - - return nil + // Returns nil if there is no error, otherwise wraps + // the response code and body into a non-nil error + return googleapi.CheckResponse(httpRsp) }, opts...) - if e != nil { - return nil, e - } - return resp, nil } -// DeleteIssueModel deletes an issue model. -func (c *restClient) DeleteIssueModel(ctx context.Context, req *contactcenterinsightspb.DeleteIssueModelRequest, opts ...gax.CallOption) (*DeleteIssueModelOperation, error) { +// QueryMetrics query metrics. +func (c *restClient) QueryMetrics(ctx context.Context, req *contactcenterinsightspb.QueryMetricsRequest, opts ...gax.CallOption) (*QueryMetricsOperation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) + if err != nil { + return nil, err + } + baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + baseUrl.Path += fmt.Sprintf("/v1/%v:queryMetrics", req.GetLocation()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") @@ -4005,7 +7655,7 @@ func (c *restClient) DeleteIssueModel(ctx context.Context, req *contactcenterins baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "location", url.QueryEscape(req.GetLocation()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") @@ -4016,7 +7666,7 @@ func (c *restClient) DeleteIssueModel(ctx context.Context, req *contactcenterins if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) if err != nil { return err } @@ -4049,17 +7699,17 @@ func (c *restClient) DeleteIssueModel(ctx context.Context, req *contactcenterins } override := fmt.Sprintf("/v1/%s", resp.GetName()) - return &DeleteIssueModelOperation{ + return &QueryMetricsOperation{ lro: longrunning.InternalNewOperation(*c.LROClient, resp), pollPath: override, }, nil } -// DeployIssueModel deploys an issue model. Returns an error if a model is already deployed. -// An issue model can only be used in analysis after it has been deployed. -func (c *restClient) DeployIssueModel(ctx context.Context, req *contactcenterinsightspb.DeployIssueModelRequest, opts ...gax.CallOption) (*DeployIssueModelOperation, error) { +// CreateQaQuestion create a QaQuestion. +func (c *restClient) CreateQaQuestion(ctx context.Context, req *contactcenterinsightspb.CreateQaQuestionRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaQuestion, error) { m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} - jsonReq, err := m.Marshal(req) + body := req.GetQaQuestion() + jsonReq, err := m.Marshal(body) if err != nil { return nil, err } @@ -4068,21 +7718,25 @@ func (c *restClient) DeployIssueModel(ctx context.Context, req *contactcenterins if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v:deploy", req.GetName()) + baseUrl.Path += fmt.Sprintf("/v1/%v/qaQuestions", req.GetParent()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") + if req.GetQaQuestionId() != "" { + params.Add("qaQuestionId", fmt.Sprintf("%v", req.GetQaQuestionId())) + } baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).CreateQaQuestion[0:len((*c.CallOptions).CreateQaQuestion):len((*c.CallOptions).CreateQaQuestion)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &longrunningpb.Operation{} + resp := &contactcenterinsightspb.QaQuestion{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path @@ -4118,28 +7772,16 @@ func (c *restClient) DeployIssueModel(ctx context.Context, req *contactcenterins if e != nil { return nil, e } - - override := fmt.Sprintf("/v1/%s", resp.GetName()) - return &DeployIssueModelOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), - pollPath: override, - }, nil + return resp, nil } -// UndeployIssueModel undeploys an issue model. -// An issue model can not be used in analysis after it has been undeployed. -func (c *restClient) UndeployIssueModel(ctx context.Context, req *contactcenterinsightspb.UndeployIssueModelRequest, opts ...gax.CallOption) (*UndeployIssueModelOperation, error) { - m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} - jsonReq, err := m.Marshal(req) - if err != nil { - return nil, err - } - +// GetQaQuestion gets a QaQuestion. +func (c *restClient) GetQaQuestion(ctx context.Context, req *contactcenterinsightspb.GetQaQuestionRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaQuestion, error) { baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v:undeploy", req.GetName()) + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") @@ -4152,13 +7794,14 @@ func (c *restClient) UndeployIssueModel(ctx context.Context, req *contactcenteri hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetQaQuestion[0:len((*c.CallOptions).GetQaQuestion):len((*c.CallOptions).GetQaQuestion)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &longrunningpb.Operation{} + resp := &contactcenterinsightspb.QaQuestion{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) if err != nil { return err } @@ -4189,18 +7832,14 @@ func (c *restClient) UndeployIssueModel(ctx context.Context, req *contactcenteri if e != nil { return nil, e } - - override := fmt.Sprintf("/v1/%s", resp.GetName()) - return &UndeployIssueModelOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), - pollPath: override, - }, nil + return resp, nil } -// ExportIssueModel exports an issue model to the provided destination. -func (c *restClient) ExportIssueModel(ctx context.Context, req *contactcenterinsightspb.ExportIssueModelRequest, opts ...gax.CallOption) (*ExportIssueModelOperation, error) { +// UpdateQaQuestion updates a QaQuestion. +func (c *restClient) UpdateQaQuestion(ctx context.Context, req *contactcenterinsightspb.UpdateQaQuestionRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaQuestion, error) { m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} - jsonReq, err := m.Marshal(req) + body := req.GetQaQuestion() + jsonReq, err := m.Marshal(body) if err != nil { return nil, err } @@ -4209,26 +7848,34 @@ func (c *restClient) ExportIssueModel(ctx context.Context, req *contactcenterins if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v:export", req.GetName()) + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetQaQuestion().GetName()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") + if req.GetUpdateMask() != nil { + field, err := protojson.Marshal(req.GetUpdateMask()) + if err != nil { + return nil, err + } + params.Add("updateMask", string(field[1:len(field)-1])) + } baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "qa_question.name", url.QueryEscape(req.GetQaQuestion().GetName()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).UpdateQaQuestion[0:len((*c.CallOptions).UpdateQaQuestion):len((*c.CallOptions).UpdateQaQuestion)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &longrunningpb.Operation{} + resp := &contactcenterinsightspb.QaQuestion{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) if err != nil { return err } @@ -4259,27 +7906,16 @@ func (c *restClient) ExportIssueModel(ctx context.Context, req *contactcenterins if e != nil { return nil, e } - - override := fmt.Sprintf("/v1/%s", resp.GetName()) - return &ExportIssueModelOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), - pollPath: override, - }, nil + return resp, nil } -// ImportIssueModel imports an issue model from a Cloud Storage bucket. -func (c *restClient) ImportIssueModel(ctx context.Context, req *contactcenterinsightspb.ImportIssueModelRequest, opts ...gax.CallOption) (*ImportIssueModelOperation, error) { - m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} - jsonReq, err := m.Marshal(req) - if err != nil { - return nil, err - } - +// DeleteQaQuestion deletes a QaQuestion. +func (c *restClient) DeleteQaQuestion(ctx context.Context, req *contactcenterinsightspb.DeleteQaQuestionRequest, opts ...gax.CallOption) error { baseUrl, err := url.Parse(c.endpoint) if err != nil { - return nil, err + return err } - baseUrl.Path += fmt.Sprintf("/v1/%v/issueModels:import", req.GetParent()) + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") @@ -4287,18 +7923,16 @@ func (c *restClient) ImportIssueModel(ctx context.Context, req *contactcenterins baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &longrunningpb.Operation{} - e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) if err != nil { return err } @@ -4311,59 +7945,138 @@ func (c *restClient) ImportIssueModel(ctx context.Context, req *contactcenterins } defer httpRsp.Body.Close() - if err = googleapi.CheckResponse(httpRsp); err != nil { - return err - } + // Returns nil if there is no error, otherwise wraps + // the response code and body into a non-nil error + return googleapi.CheckResponse(httpRsp) + }, opts...) +} - buf, err := io.ReadAll(httpRsp.Body) +// ListQaQuestions lists QaQuestions. +func (c *restClient) ListQaQuestions(ctx context.Context, req *contactcenterinsightspb.ListQaQuestionsRequest, opts ...gax.CallOption) *QaQuestionIterator { + it := &QaQuestionIterator{} + req = proto.Clone(req).(*contactcenterinsightspb.ListQaQuestionsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.QaQuestion, string, error) { + resp := &contactcenterinsightspb.ListQaQuestionsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) if err != nil { - return err + return nil, "", err } + baseUrl.Path += fmt.Sprintf("/v1/%v/qaQuestions", req.GetParent()) - if err := unm.Unmarshal(buf, resp); err != nil { - return err + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) } - return nil - }, opts...) - if e != nil { - return nil, e + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetQaQuestions(), resp.GetNextPageToken(), nil + } + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil } - override := fmt.Sprintf("/v1/%s", resp.GetName()) - return &ImportIssueModelOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), - pollPath: override, - }, nil + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it } -// GetIssue gets an issue. -func (c *restClient) GetIssue(ctx context.Context, req *contactcenterinsightspb.GetIssueRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Issue, error) { +// CreateQaScorecard create a QaScorecard. +func (c *restClient) CreateQaScorecard(ctx context.Context, req *contactcenterinsightspb.CreateQaScorecardRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaScorecard, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + body := req.GetQaScorecard() + jsonReq, err := m.Marshal(body) + if err != nil { + return nil, err + } + baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + baseUrl.Path += fmt.Sprintf("/v1/%v/qaScorecards", req.GetParent()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") + if req.GetQaScorecardId() != "" { + params.Add("qaScorecardId", fmt.Sprintf("%v", req.GetQaScorecardId())) + } baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).GetIssue[0:len((*c.CallOptions).GetIssue):len((*c.CallOptions).GetIssue)], opts...) + opts = append((*c.CallOptions).CreateQaScorecard[0:len((*c.CallOptions).CreateQaScorecard):len((*c.CallOptions).CreateQaScorecard)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &contactcenterinsightspb.Issue{} + resp := &contactcenterinsightspb.QaScorecard{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) if err != nil { return err } @@ -4397,13 +8110,13 @@ func (c *restClient) GetIssue(ctx context.Context, req *contactcenterinsightspb. return resp, nil } -// ListIssues lists issues. -func (c *restClient) ListIssues(ctx context.Context, req *contactcenterinsightspb.ListIssuesRequest, opts ...gax.CallOption) (*contactcenterinsightspb.ListIssuesResponse, error) { +// GetQaScorecard gets a QaScorecard. +func (c *restClient) GetQaScorecard(ctx context.Context, req *contactcenterinsightspb.GetQaScorecardRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaScorecard, error) { baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v/issues", req.GetParent()) + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") @@ -4411,14 +8124,14 @@ func (c *restClient) ListIssues(ctx context.Context, req *contactcenterinsightsp baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).ListIssues[0:len((*c.CallOptions).ListIssues):len((*c.CallOptions).ListIssues)], opts...) + opts = append((*c.CallOptions).GetQaScorecard[0:len((*c.CallOptions).GetQaScorecard):len((*c.CallOptions).GetQaScorecard)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &contactcenterinsightspb.ListIssuesResponse{} + resp := &contactcenterinsightspb.QaScorecard{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path @@ -4457,10 +8170,10 @@ func (c *restClient) ListIssues(ctx context.Context, req *contactcenterinsightsp return resp, nil } -// UpdateIssue updates an issue. -func (c *restClient) UpdateIssue(ctx context.Context, req *contactcenterinsightspb.UpdateIssueRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Issue, error) { +// UpdateQaScorecard updates a QaScorecard. +func (c *restClient) UpdateQaScorecard(ctx context.Context, req *contactcenterinsightspb.UpdateQaScorecardRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaScorecard, error) { m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} - body := req.GetIssue() + body := req.GetQaScorecard() jsonReq, err := m.Marshal(body) if err != nil { return nil, err @@ -4470,7 +8183,7 @@ func (c *restClient) UpdateIssue(ctx context.Context, req *contactcenterinsights if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetIssue().GetName()) + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetQaScorecard().GetName()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") @@ -4485,14 +8198,14 @@ func (c *restClient) UpdateIssue(ctx context.Context, req *contactcenterinsights baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "issue.name", url.QueryEscape(req.GetIssue().GetName()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "qa_scorecard.name", url.QueryEscape(req.GetQaScorecard().GetName()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).UpdateIssue[0:len((*c.CallOptions).UpdateIssue):len((*c.CallOptions).UpdateIssue)], opts...) + opts = append((*c.CallOptions).UpdateQaScorecard[0:len((*c.CallOptions).UpdateQaScorecard):len((*c.CallOptions).UpdateQaScorecard)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &contactcenterinsightspb.Issue{} + resp := &contactcenterinsightspb.QaScorecard{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path @@ -4531,8 +8244,8 @@ func (c *restClient) UpdateIssue(ctx context.Context, req *contactcenterinsights return resp, nil } -// DeleteIssue deletes an issue. -func (c *restClient) DeleteIssue(ctx context.Context, req *contactcenterinsightspb.DeleteIssueRequest, opts ...gax.CallOption) error { +// DeleteQaScorecard deletes a QaScorecard. +func (c *restClient) DeleteQaScorecard(ctx context.Context, req *contactcenterinsightspb.DeleteQaScorecardRequest, opts ...gax.CallOption) error { baseUrl, err := url.Parse(c.endpoint) if err != nil { return err @@ -4541,6 +8254,9 @@ func (c *restClient) DeleteIssue(ctx context.Context, req *contactcenterinsights params := url.Values{} params.Add("$alt", "json;enum-encoding=int") + if req.GetForce() { + params.Add("force", fmt.Sprintf("%v", req.GetForce())) + } baseUrl.RawQuery = params.Encode() @@ -4573,70 +8289,99 @@ func (c *restClient) DeleteIssue(ctx context.Context, req *contactcenterinsights }, opts...) } -// CalculateIssueModelStats gets an issue model’s statistics. -func (c *restClient) CalculateIssueModelStats(ctx context.Context, req *contactcenterinsightspb.CalculateIssueModelStatsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.CalculateIssueModelStatsResponse, error) { - baseUrl, err := url.Parse(c.endpoint) - if err != nil { - return nil, err - } - baseUrl.Path += fmt.Sprintf("/v1/%v:calculateIssueModelStats", req.GetIssueModel()) - - params := url.Values{} - params.Add("$alt", "json;enum-encoding=int") - - baseUrl.RawQuery = params.Encode() - - // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "issue_model", url.QueryEscape(req.GetIssueModel()))} - - hds = append(c.xGoogHeaders, hds...) - hds = append(hds, "Content-Type", "application/json") - headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).CalculateIssueModelStats[0:len((*c.CallOptions).CalculateIssueModelStats):len((*c.CallOptions).CalculateIssueModelStats)], opts...) +// ListQaScorecards lists QaScorecards. +func (c *restClient) ListQaScorecards(ctx context.Context, req *contactcenterinsightspb.ListQaScorecardsRequest, opts ...gax.CallOption) *QaScorecardIterator { + it := &QaScorecardIterator{} + req = proto.Clone(req).(*contactcenterinsightspb.ListQaScorecardsRequest) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &contactcenterinsightspb.CalculateIssueModelStatsResponse{} - e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - if settings.Path != "" { - baseUrl.Path = settings.Path + it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.QaScorecard, string, error) { + resp := &contactcenterinsightspb.ListQaScorecardsResponse{} + if pageToken != "" { + req.PageToken = pageToken } - httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) if err != nil { - return err + return nil, "", err } - httpReq = httpReq.WithContext(ctx) - httpReq.Header = headers + baseUrl.Path += fmt.Sprintf("/v1/%v/qaScorecards", req.GetParent()) - httpRsp, err := c.httpClient.Do(httpReq) - if err != nil { - return err + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) } - defer httpRsp.Body.Close() - if err = googleapi.CheckResponse(httpRsp); err != nil { - return err + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e } + it.Response = resp + return resp.GetQaScorecards(), resp.GetNextPageToken(), nil + } - buf, err := io.ReadAll(httpRsp.Body) + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) if err != nil { - return err + return "", err } + it.items = append(it.items, items...) + return nextPageToken, nil + } - if err := unm.Unmarshal(buf, resp); err != nil { - return err - } + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() - return nil - }, opts...) - if e != nil { - return nil, e - } - return resp, nil + return it } -// CreatePhraseMatcher creates a phrase matcher. -func (c *restClient) CreatePhraseMatcher(ctx context.Context, req *contactcenterinsightspb.CreatePhraseMatcherRequest, opts ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) { +// CreateQaScorecardRevision creates a QaScorecardRevision. +func (c *restClient) CreateQaScorecardRevision(ctx context.Context, req *contactcenterinsightspb.CreateQaScorecardRevisionRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaScorecardRevision, error) { m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} - body := req.GetPhraseMatcher() + body := req.GetQaScorecardRevision() jsonReq, err := m.Marshal(body) if err != nil { return nil, err @@ -4646,10 +8391,13 @@ func (c *restClient) CreatePhraseMatcher(ctx context.Context, req *contactcenter if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v/phraseMatchers", req.GetParent()) + baseUrl.Path += fmt.Sprintf("/v1/%v/revisions", req.GetParent()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") + if req.GetQaScorecardRevisionId() != "" { + params.Add("qaScorecardRevisionId", fmt.Sprintf("%v", req.GetQaScorecardRevisionId())) + } baseUrl.RawQuery = params.Encode() @@ -4659,9 +8407,9 @@ func (c *restClient) CreatePhraseMatcher(ctx context.Context, req *contactcenter hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).CreatePhraseMatcher[0:len((*c.CallOptions).CreatePhraseMatcher):len((*c.CallOptions).CreatePhraseMatcher)], opts...) + opts = append((*c.CallOptions).CreateQaScorecardRevision[0:len((*c.CallOptions).CreateQaScorecardRevision):len((*c.CallOptions).CreateQaScorecardRevision)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &contactcenterinsightspb.PhraseMatcher{} + resp := &contactcenterinsightspb.QaScorecardRevision{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path @@ -4700,8 +8448,8 @@ func (c *restClient) CreatePhraseMatcher(ctx context.Context, req *contactcenter return resp, nil } -// GetPhraseMatcher gets a phrase matcher. -func (c *restClient) GetPhraseMatcher(ctx context.Context, req *contactcenterinsightspb.GetPhraseMatcherRequest, opts ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) { +// GetQaScorecardRevision gets a QaScorecardRevision. +func (c *restClient) GetQaScorecardRevision(ctx context.Context, req *contactcenterinsightspb.GetQaScorecardRevisionRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaScorecardRevision, error) { baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err @@ -4719,9 +8467,9 @@ func (c *restClient) GetPhraseMatcher(ctx context.Context, req *contactcenterins hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).GetPhraseMatcher[0:len((*c.CallOptions).GetPhraseMatcher):len((*c.CallOptions).GetPhraseMatcher)], opts...) + opts = append((*c.CallOptions).GetQaScorecardRevision[0:len((*c.CallOptions).GetQaScorecardRevision):len((*c.CallOptions).GetQaScorecardRevision)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &contactcenterinsightspb.PhraseMatcher{} + resp := &contactcenterinsightspb.QaScorecardRevision{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path @@ -4760,105 +8508,19 @@ func (c *restClient) GetPhraseMatcher(ctx context.Context, req *contactcenterins return resp, nil } -// ListPhraseMatchers lists phrase matchers. -func (c *restClient) ListPhraseMatchers(ctx context.Context, req *contactcenterinsightspb.ListPhraseMatchersRequest, opts ...gax.CallOption) *PhraseMatcherIterator { - it := &PhraseMatcherIterator{} - req = proto.Clone(req).(*contactcenterinsightspb.ListPhraseMatchersRequest) - unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.PhraseMatcher, string, error) { - resp := &contactcenterinsightspb.ListPhraseMatchersResponse{} - if pageToken != "" { - req.PageToken = pageToken - } - if pageSize > math.MaxInt32 { - req.PageSize = math.MaxInt32 - } else if pageSize != 0 { - req.PageSize = int32(pageSize) - } - baseUrl, err := url.Parse(c.endpoint) - if err != nil { - return nil, "", err - } - baseUrl.Path += fmt.Sprintf("/v1/%v/phraseMatchers", req.GetParent()) - - params := url.Values{} - params.Add("$alt", "json;enum-encoding=int") - if req.GetFilter() != "" { - params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) - } - if req.GetPageSize() != 0 { - params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) - } - if req.GetPageToken() != "" { - params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) - } - - baseUrl.RawQuery = params.Encode() - - // Build HTTP headers from client and context metadata. - hds := append(c.xGoogHeaders, "Content-Type", "application/json") - headers := gax.BuildHeaders(ctx, hds...) - e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - if settings.Path != "" { - baseUrl.Path = settings.Path - } - httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) - if err != nil { - return err - } - httpReq.Header = headers - - httpRsp, err := c.httpClient.Do(httpReq) - if err != nil { - return err - } - defer httpRsp.Body.Close() - - if err = googleapi.CheckResponse(httpRsp); err != nil { - return err - } - - buf, err := io.ReadAll(httpRsp.Body) - if err != nil { - return err - } - - if err := unm.Unmarshal(buf, resp); err != nil { - return err - } - - return nil - }, opts...) - if e != nil { - return nil, "", e - } - it.Response = resp - return resp.GetPhraseMatchers(), resp.GetNextPageToken(), nil - } - - fetch := func(pageSize int, pageToken string) (string, error) { - items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) - if err != nil { - return "", err - } - it.items = append(it.items, items...) - return nextPageToken, nil - } - - it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) - it.pageInfo.MaxSize = int(req.GetPageSize()) - it.pageInfo.Token = req.GetPageToken() - - return it -} +// TuneQaScorecardRevision fine tune one or more QaModels. +func (c *restClient) TuneQaScorecardRevision(ctx context.Context, req *contactcenterinsightspb.TuneQaScorecardRevisionRequest, opts ...gax.CallOption) (*TuneQaScorecardRevisionOperation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) + if err != nil { + return nil, err + } -// DeletePhraseMatcher deletes a phrase matcher. -func (c *restClient) DeletePhraseMatcher(ctx context.Context, req *contactcenterinsightspb.DeletePhraseMatcherRequest, opts ...gax.CallOption) error { baseUrl, err := url.Parse(c.endpoint) if err != nil { - return err + return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + baseUrl.Path += fmt.Sprintf("/v1/%v:tuneQaScorecardRevision", req.GetParent()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") @@ -4866,16 +8528,18 @@ func (c *restClient) DeletePhraseMatcher(ctx context.Context, req *contactcenter baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) if err != nil { return err } @@ -4888,17 +8552,36 @@ func (c *restClient) DeletePhraseMatcher(ctx context.Context, req *contactcenter } defer httpRsp.Body.Close() - // Returns nil if there is no error, otherwise wraps - // the response code and body into a non-nil error - return googleapi.CheckResponse(httpRsp) + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil }, opts...) + if e != nil { + return nil, e + } + + override := fmt.Sprintf("/v1/%s", resp.GetName()) + return &TuneQaScorecardRevisionOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil } -// UpdatePhraseMatcher updates a phrase matcher. -func (c *restClient) UpdatePhraseMatcher(ctx context.Context, req *contactcenterinsightspb.UpdatePhraseMatcherRequest, opts ...gax.CallOption) (*contactcenterinsightspb.PhraseMatcher, error) { +// DeployQaScorecardRevision deploy a QaScorecardRevision. +func (c *restClient) DeployQaScorecardRevision(ctx context.Context, req *contactcenterinsightspb.DeployQaScorecardRevisionRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaScorecardRevision, error) { m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} - body := req.GetPhraseMatcher() - jsonReq, err := m.Marshal(body) + jsonReq, err := m.Marshal(req) if err != nil { return nil, err } @@ -4907,34 +8590,27 @@ func (c *restClient) UpdatePhraseMatcher(ctx context.Context, req *contactcenter if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetPhraseMatcher().GetName()) + baseUrl.Path += fmt.Sprintf("/v1/%v:deploy", req.GetName()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") - if req.GetUpdateMask() != nil { - field, err := protojson.Marshal(req.GetUpdateMask()) - if err != nil { - return nil, err - } - params.Add("updateMask", string(field[1:len(field)-1])) - } baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "phrase_matcher.name", url.QueryEscape(req.GetPhraseMatcher().GetName()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).UpdatePhraseMatcher[0:len((*c.CallOptions).UpdatePhraseMatcher):len((*c.CallOptions).UpdatePhraseMatcher)], opts...) + opts = append((*c.CallOptions).DeployQaScorecardRevision[0:len((*c.CallOptions).DeployQaScorecardRevision):len((*c.CallOptions).DeployQaScorecardRevision)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &contactcenterinsightspb.PhraseMatcher{} + resp := &contactcenterinsightspb.QaScorecardRevision{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) if err != nil { return err } @@ -4968,36 +8644,39 @@ func (c *restClient) UpdatePhraseMatcher(ctx context.Context, req *contactcenter return resp, nil } -// CalculateStats gets conversation statistics. -func (c *restClient) CalculateStats(ctx context.Context, req *contactcenterinsightspb.CalculateStatsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.CalculateStatsResponse, error) { +// UndeployQaScorecardRevision undeploy a QaScorecardRevision. +func (c *restClient) UndeployQaScorecardRevision(ctx context.Context, req *contactcenterinsightspb.UndeployQaScorecardRevisionRequest, opts ...gax.CallOption) (*contactcenterinsightspb.QaScorecardRevision, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) + if err != nil { + return nil, err + } + baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v/conversations:calculateStats", req.GetLocation()) + baseUrl.Path += fmt.Sprintf("/v1/%v:undeploy", req.GetName()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") - if req.GetFilter() != "" { - params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) - } baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "location", url.QueryEscape(req.GetLocation()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).CalculateStats[0:len((*c.CallOptions).CalculateStats):len((*c.CallOptions).CalculateStats)], opts...) + opts = append((*c.CallOptions).UndeployQaScorecardRevision[0:len((*c.CallOptions).UndeployQaScorecardRevision):len((*c.CallOptions).UndeployQaScorecardRevision)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &contactcenterinsightspb.CalculateStatsResponse{} + resp := &contactcenterinsightspb.QaScorecardRevision{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) if err != nil { return err } @@ -5031,16 +8710,19 @@ func (c *restClient) CalculateStats(ctx context.Context, req *contactcenterinsig return resp, nil } -// GetSettings gets project-level settings. -func (c *restClient) GetSettings(ctx context.Context, req *contactcenterinsightspb.GetSettingsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Settings, error) { +// DeleteQaScorecardRevision deletes a QaScorecardRevision. +func (c *restClient) DeleteQaScorecardRevision(ctx context.Context, req *contactcenterinsightspb.DeleteQaScorecardRevisionRequest, opts ...gax.CallOption) error { baseUrl, err := url.Parse(c.endpoint) if err != nil { - return nil, err + return err } baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") + if req.GetForce() { + params.Add("force", fmt.Sprintf("%v", req.GetForce())) + } baseUrl.RawQuery = params.Encode() @@ -5050,14 +8732,11 @@ func (c *restClient) GetSettings(ctx context.Context, req *contactcenterinsights hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).GetSettings[0:len((*c.CallOptions).GetSettings):len((*c.CallOptions).GetSettings)], opts...) - unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &contactcenterinsightspb.Settings{} - e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) if err != nil { return err } @@ -5070,31 +8749,108 @@ func (c *restClient) GetSettings(ctx context.Context, req *contactcenterinsights } defer httpRsp.Body.Close() - if err = googleapi.CheckResponse(httpRsp); err != nil { - return err - } + // Returns nil if there is no error, otherwise wraps + // the response code and body into a non-nil error + return googleapi.CheckResponse(httpRsp) + }, opts...) +} - buf, err := io.ReadAll(httpRsp.Body) +// ListQaScorecardRevisions lists all revisions under the parent QaScorecard. +func (c *restClient) ListQaScorecardRevisions(ctx context.Context, req *contactcenterinsightspb.ListQaScorecardRevisionsRequest, opts ...gax.CallOption) *QaScorecardRevisionIterator { + it := &QaScorecardRevisionIterator{} + req = proto.Clone(req).(*contactcenterinsightspb.ListQaScorecardRevisionsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.QaScorecardRevision, string, error) { + resp := &contactcenterinsightspb.ListQaScorecardRevisionsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) if err != nil { - return err + return nil, "", err } + baseUrl.Path += fmt.Sprintf("/v1/%v/revisions", req.GetParent()) - if err := unm.Unmarshal(buf, resp); err != nil { - return err + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) } - return nil - }, opts...) - if e != nil { - return nil, e + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() + + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil + }, opts...) + if e != nil { + return nil, "", e + } + it.Response = resp + return resp.GetQaScorecardRevisions(), resp.GetNextPageToken(), nil } - return resp, nil + + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it } -// UpdateSettings updates project-level settings. -func (c *restClient) UpdateSettings(ctx context.Context, req *contactcenterinsightspb.UpdateSettingsRequest, opts ...gax.CallOption) (*contactcenterinsightspb.Settings, error) { +// CreateFeedbackLabel create feedback label. +func (c *restClient) CreateFeedbackLabel(ctx context.Context, req *contactcenterinsightspb.CreateFeedbackLabelRequest, opts ...gax.CallOption) (*contactcenterinsightspb.FeedbackLabel, error) { m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} - body := req.GetSettings() + body := req.GetFeedbackLabel() jsonReq, err := m.Marshal(body) if err != nil { return nil, err @@ -5104,34 +8860,30 @@ func (c *restClient) UpdateSettings(ctx context.Context, req *contactcenterinsig if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetSettings().GetName()) + baseUrl.Path += fmt.Sprintf("/v1/%v/feedbackLabels", req.GetParent()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") - if req.GetUpdateMask() != nil { - field, err := protojson.Marshal(req.GetUpdateMask()) - if err != nil { - return nil, err - } - params.Add("updateMask", string(field[1:len(field)-1])) + if req.GetFeedbackLabelId() != "" { + params.Add("feedbackLabelId", fmt.Sprintf("%v", req.GetFeedbackLabelId())) } baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "settings.name", url.QueryEscape(req.GetSettings().GetName()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).UpdateSettings[0:len((*c.CallOptions).UpdateSettings):len((*c.CallOptions).UpdateSettings)], opts...) + opts = append((*c.CallOptions).CreateFeedbackLabel[0:len((*c.CallOptions).CreateFeedbackLabel):len((*c.CallOptions).CreateFeedbackLabel)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &contactcenterinsightspb.Settings{} + resp := &contactcenterinsightspb.FeedbackLabel{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) if err != nil { return err } @@ -5165,83 +8917,105 @@ func (c *restClient) UpdateSettings(ctx context.Context, req *contactcenterinsig return resp, nil } -// GetEncryptionSpec gets location-level encryption key specification. -func (c *restClient) GetEncryptionSpec(ctx context.Context, req *contactcenterinsightspb.GetEncryptionSpecRequest, opts ...gax.CallOption) (*contactcenterinsightspb.EncryptionSpec, error) { - baseUrl, err := url.Parse(c.endpoint) - if err != nil { - return nil, err - } - baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) +// ListFeedbackLabels list feedback labels. +func (c *restClient) ListFeedbackLabels(ctx context.Context, req *contactcenterinsightspb.ListFeedbackLabelsRequest, opts ...gax.CallOption) *FeedbackLabelIterator { + it := &FeedbackLabelIterator{} + req = proto.Clone(req).(*contactcenterinsightspb.ListFeedbackLabelsRequest) + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.FeedbackLabel, string, error) { + resp := &contactcenterinsightspb.ListFeedbackLabelsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + baseUrl, err := url.Parse(c.endpoint) + if err != nil { + return nil, "", err + } + baseUrl.Path += fmt.Sprintf("/v1/%v/feedbackLabels", req.GetParent()) - params := url.Values{} - params.Add("$alt", "json;enum-encoding=int") + params := url.Values{} + params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } + if req.GetPageSize() != 0 { + params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) + } + if req.GetPageToken() != "" { + params.Add("pageToken", fmt.Sprintf("%v", req.GetPageToken())) + } - baseUrl.RawQuery = params.Encode() + baseUrl.RawQuery = params.Encode() + + // Build HTTP headers from client and context metadata. + hds := append(c.xGoogHeaders, "Content-Type", "application/json") + headers := gax.BuildHeaders(ctx, hds...) + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + if settings.Path != "" { + baseUrl.Path = settings.Path + } + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + if err != nil { + return err + } + httpReq.Header = headers + + httpRsp, err := c.httpClient.Do(httpReq) + if err != nil { + return err + } + defer httpRsp.Body.Close() - // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } - hds = append(c.xGoogHeaders, hds...) - hds = append(hds, "Content-Type", "application/json") - headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).GetEncryptionSpec[0:len((*c.CallOptions).GetEncryptionSpec):len((*c.CallOptions).GetEncryptionSpec)], opts...) - unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &contactcenterinsightspb.EncryptionSpec{} - e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { - if settings.Path != "" { - baseUrl.Path = settings.Path - } - httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) - if err != nil { - return err - } - httpReq = httpReq.WithContext(ctx) - httpReq.Header = headers + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } - httpRsp, err := c.httpClient.Do(httpReq) - if err != nil { - return err - } - defer httpRsp.Body.Close() + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } - if err = googleapi.CheckResponse(httpRsp); err != nil { - return err + return nil + }, opts...) + if e != nil { + return nil, "", e } + it.Response = resp + return resp.GetFeedbackLabels(), resp.GetNextPageToken(), nil + } - buf, err := io.ReadAll(httpRsp.Body) + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) if err != nil { - return err + return "", err } + it.items = append(it.items, items...) + return nextPageToken, nil + } - if err := unm.Unmarshal(buf, resp); err != nil { - return err - } + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() - return nil - }, opts...) - if e != nil { - return nil, e - } - return resp, nil + return it } -// InitializeEncryptionSpec initializes a location-level encryption key specification. An error will -// be thrown if the location has resources already created before the -// initialization. Once the encryption specification is initialized at a -// location, it is immutable and all newly created resources under the -// location will be encrypted with the existing specification. -func (c *restClient) InitializeEncryptionSpec(ctx context.Context, req *contactcenterinsightspb.InitializeEncryptionSpecRequest, opts ...gax.CallOption) (*InitializeEncryptionSpecOperation, error) { - m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} - jsonReq, err := m.Marshal(req) - if err != nil { - return nil, err - } - +// GetFeedbackLabel get feedback label. +func (c *restClient) GetFeedbackLabel(ctx context.Context, req *contactcenterinsightspb.GetFeedbackLabelRequest, opts ...gax.CallOption) (*contactcenterinsightspb.FeedbackLabel, error) { baseUrl, err := url.Parse(c.endpoint) if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v:initialize", req.GetEncryptionSpec().GetName()) + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") @@ -5249,18 +9023,19 @@ func (c *restClient) InitializeEncryptionSpec(ctx context.Context, req *contactc baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "encryption_spec.name", url.QueryEscape(req.GetEncryptionSpec().GetName()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) + opts = append((*c.CallOptions).GetFeedbackLabel[0:len((*c.CallOptions).GetFeedbackLabel):len((*c.CallOptions).GetFeedbackLabel)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &longrunningpb.Operation{} + resp := &contactcenterinsightspb.FeedbackLabel{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) if err != nil { return err } @@ -5291,18 +9066,13 @@ func (c *restClient) InitializeEncryptionSpec(ctx context.Context, req *contactc if e != nil { return nil, e } - - override := fmt.Sprintf("/v1/%s", resp.GetName()) - return &InitializeEncryptionSpecOperation{ - lro: longrunning.InternalNewOperation(*c.LROClient, resp), - pollPath: override, - }, nil + return resp, nil } -// CreateView creates a view. -func (c *restClient) CreateView(ctx context.Context, req *contactcenterinsightspb.CreateViewRequest, opts ...gax.CallOption) (*contactcenterinsightspb.View, error) { +// UpdateFeedbackLabel update feedback label. +func (c *restClient) UpdateFeedbackLabel(ctx context.Context, req *contactcenterinsightspb.UpdateFeedbackLabelRequest, opts ...gax.CallOption) (*contactcenterinsightspb.FeedbackLabel, error) { m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} - body := req.GetView() + body := req.GetFeedbackLabel() jsonReq, err := m.Marshal(body) if err != nil { return nil, err @@ -5312,27 +9082,34 @@ func (c *restClient) CreateView(ctx context.Context, req *contactcenterinsightsp if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v/views", req.GetParent()) + baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetFeedbackLabel().GetName()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") + if req.GetUpdateMask() != nil { + field, err := protojson.Marshal(req.GetUpdateMask()) + if err != nil { + return nil, err + } + params.Add("updateMask", string(field[1:len(field)-1])) + } baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "feedback_label.name", url.QueryEscape(req.GetFeedbackLabel().GetName()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).CreateView[0:len((*c.CallOptions).CreateView):len((*c.CallOptions).CreateView)], opts...) + opts = append((*c.CallOptions).UpdateFeedbackLabel[0:len((*c.CallOptions).UpdateFeedbackLabel):len((*c.CallOptions).UpdateFeedbackLabel)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &contactcenterinsightspb.View{} + resp := &contactcenterinsightspb.FeedbackLabel{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) + httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) if err != nil { return err } @@ -5366,11 +9143,11 @@ func (c *restClient) CreateView(ctx context.Context, req *contactcenterinsightsp return resp, nil } -// GetView gets a view. -func (c *restClient) GetView(ctx context.Context, req *contactcenterinsightspb.GetViewRequest, opts ...gax.CallOption) (*contactcenterinsightspb.View, error) { +// DeleteFeedbackLabel delete feedback label. +func (c *restClient) DeleteFeedbackLabel(ctx context.Context, req *contactcenterinsightspb.DeleteFeedbackLabelRequest, opts ...gax.CallOption) error { baseUrl, err := url.Parse(c.endpoint) if err != nil { - return nil, err + return err } baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) @@ -5385,14 +9162,11 @@ func (c *restClient) GetView(ctx context.Context, req *contactcenterinsightspb.G hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).GetView[0:len((*c.CallOptions).GetView):len((*c.CallOptions).GetView)], opts...) - unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &contactcenterinsightspb.View{} - e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("GET", baseUrl.String(), nil) + httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) if err != nil { return err } @@ -5405,34 +9179,19 @@ func (c *restClient) GetView(ctx context.Context, req *contactcenterinsightspb.G } defer httpRsp.Body.Close() - if err = googleapi.CheckResponse(httpRsp); err != nil { - return err - } - - buf, err := io.ReadAll(httpRsp.Body) - if err != nil { - return err - } - - if err := unm.Unmarshal(buf, resp); err != nil { - return err - } - - return nil + // Returns nil if there is no error, otherwise wraps + // the response code and body into a non-nil error + return googleapi.CheckResponse(httpRsp) }, opts...) - if e != nil { - return nil, e - } - return resp, nil } -// ListViews lists views. -func (c *restClient) ListViews(ctx context.Context, req *contactcenterinsightspb.ListViewsRequest, opts ...gax.CallOption) *ViewIterator { - it := &ViewIterator{} - req = proto.Clone(req).(*contactcenterinsightspb.ListViewsRequest) +// ListAllFeedbackLabels list all feedback labels by project number. +func (c *restClient) ListAllFeedbackLabels(ctx context.Context, req *contactcenterinsightspb.ListAllFeedbackLabelsRequest, opts ...gax.CallOption) *FeedbackLabelIterator { + it := &FeedbackLabelIterator{} + req = proto.Clone(req).(*contactcenterinsightspb.ListAllFeedbackLabelsRequest) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.View, string, error) { - resp := &contactcenterinsightspb.ListViewsResponse{} + it.InternalFetch = func(pageSize int, pageToken string) ([]*contactcenterinsightspb.FeedbackLabel, string, error) { + resp := &contactcenterinsightspb.ListAllFeedbackLabelsResponse{} if pageToken != "" { req.PageToken = pageToken } @@ -5445,10 +9204,13 @@ func (c *restClient) ListViews(ctx context.Context, req *contactcenterinsightspb if err != nil { return nil, "", err } - baseUrl.Path += fmt.Sprintf("/v1/%v/views", req.GetParent()) + baseUrl.Path += fmt.Sprintf("/v1/%v:listAllFeedbackLabels", req.GetParent()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") + if req.GetFilter() != "" { + params.Add("filter", fmt.Sprintf("%v", req.GetFilter())) + } if req.GetPageSize() != 0 { params.Add("pageSize", fmt.Sprintf("%v", req.GetPageSize())) } @@ -5496,7 +9258,7 @@ func (c *restClient) ListViews(ctx context.Context, req *contactcenterinsightspb return nil, "", e } it.Response = resp - return resp.GetViews(), resp.GetNextPageToken(), nil + return resp.GetFeedbackLabels(), resp.GetNextPageToken(), nil } fetch := func(pageSize int, pageToken string) (string, error) { @@ -5515,11 +9277,10 @@ func (c *restClient) ListViews(ctx context.Context, req *contactcenterinsightspb return it } -// UpdateView updates a view. -func (c *restClient) UpdateView(ctx context.Context, req *contactcenterinsightspb.UpdateViewRequest, opts ...gax.CallOption) (*contactcenterinsightspb.View, error) { +// BulkUploadFeedbackLabels upload feedback labels in bulk. +func (c *restClient) BulkUploadFeedbackLabels(ctx context.Context, req *contactcenterinsightspb.BulkUploadFeedbackLabelsRequest, opts ...gax.CallOption) (*BulkUploadFeedbackLabelsOperation, error) { m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} - body := req.GetView() - jsonReq, err := m.Marshal(body) + jsonReq, err := m.Marshal(req) if err != nil { return nil, err } @@ -5528,34 +9289,26 @@ func (c *restClient) UpdateView(ctx context.Context, req *contactcenterinsightsp if err != nil { return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetView().GetName()) + baseUrl.Path += fmt.Sprintf("/v1/%v:bulkUploadFeedbackLabels", req.GetParent()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") - if req.GetUpdateMask() != nil { - field, err := protojson.Marshal(req.GetUpdateMask()) - if err != nil { - return nil, err - } - params.Add("updateMask", string(field[1:len(field)-1])) - } baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "view.name", url.QueryEscape(req.GetView().GetName()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - opts = append((*c.CallOptions).UpdateView[0:len((*c.CallOptions).UpdateView):len((*c.CallOptions).UpdateView)], opts...) unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} - resp := &contactcenterinsightspb.View{} + resp := &longrunningpb.Operation{} e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("PATCH", baseUrl.String(), bytes.NewReader(jsonReq)) + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) if err != nil { return err } @@ -5586,16 +9339,27 @@ func (c *restClient) UpdateView(ctx context.Context, req *contactcenterinsightsp if e != nil { return nil, e } - return resp, nil + + override := fmt.Sprintf("/v1/%s", resp.GetName()) + return &BulkUploadFeedbackLabelsOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil } -// DeleteView deletes a view. -func (c *restClient) DeleteView(ctx context.Context, req *contactcenterinsightspb.DeleteViewRequest, opts ...gax.CallOption) error { +// BulkDownloadFeedbackLabels download feedback labels in bulk. +func (c *restClient) BulkDownloadFeedbackLabels(ctx context.Context, req *contactcenterinsightspb.BulkDownloadFeedbackLabelsRequest, opts ...gax.CallOption) (*BulkDownloadFeedbackLabelsOperation, error) { + m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} + jsonReq, err := m.Marshal(req) + if err != nil { + return nil, err + } + baseUrl, err := url.Parse(c.endpoint) if err != nil { - return err + return nil, err } - baseUrl.Path += fmt.Sprintf("/v1/%v", req.GetName()) + baseUrl.Path += fmt.Sprintf("/v1/%v:bulkDownloadFeedbackLabels", req.GetParent()) params := url.Values{} params.Add("$alt", "json;enum-encoding=int") @@ -5603,16 +9367,18 @@ func (c *restClient) DeleteView(ctx context.Context, req *contactcenterinsightsp baseUrl.RawQuery = params.Encode() // Build HTTP headers from client and context metadata. - hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} hds = append(c.xGoogHeaders, hds...) hds = append(hds, "Content-Type", "application/json") headers := gax.BuildHeaders(ctx, hds...) - return gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + unm := protojson.UnmarshalOptions{AllowPartial: true, DiscardUnknown: true} + resp := &longrunningpb.Operation{} + e := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { if settings.Path != "" { baseUrl.Path = settings.Path } - httpReq, err := http.NewRequest("DELETE", baseUrl.String(), nil) + httpReq, err := http.NewRequest("POST", baseUrl.String(), bytes.NewReader(jsonReq)) if err != nil { return err } @@ -5625,10 +9391,30 @@ func (c *restClient) DeleteView(ctx context.Context, req *contactcenterinsightsp } defer httpRsp.Body.Close() - // Returns nil if there is no error, otherwise wraps - // the response code and body into a non-nil error - return googleapi.CheckResponse(httpRsp) + if err = googleapi.CheckResponse(httpRsp); err != nil { + return err + } + + buf, err := io.ReadAll(httpRsp.Body) + if err != nil { + return err + } + + if err := unm.Unmarshal(buf, resp); err != nil { + return err + } + + return nil }, opts...) + if e != nil { + return nil, e + } + + override := fmt.Sprintf("/v1/%s", resp.GetName()) + return &BulkDownloadFeedbackLabelsOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + pollPath: override, + }, nil } // CancelOperation is a utility method from google.longrunning.Operations. @@ -5861,6 +9647,42 @@ func (c *restClient) BulkDeleteConversationsOperation(name string) *BulkDeleteCo } } +// BulkDownloadFeedbackLabelsOperation returns a new BulkDownloadFeedbackLabelsOperation from a given name. +// The name must be that of a previously created BulkDownloadFeedbackLabelsOperation, possibly from a different process. +func (c *gRPCClient) BulkDownloadFeedbackLabelsOperation(name string) *BulkDownloadFeedbackLabelsOperation { + return &BulkDownloadFeedbackLabelsOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// BulkDownloadFeedbackLabelsOperation returns a new BulkDownloadFeedbackLabelsOperation from a given name. +// The name must be that of a previously created BulkDownloadFeedbackLabelsOperation, possibly from a different process. +func (c *restClient) BulkDownloadFeedbackLabelsOperation(name string) *BulkDownloadFeedbackLabelsOperation { + override := fmt.Sprintf("/v1/%s", name) + return &BulkDownloadFeedbackLabelsOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + pollPath: override, + } +} + +// BulkUploadFeedbackLabelsOperation returns a new BulkUploadFeedbackLabelsOperation from a given name. +// The name must be that of a previously created BulkUploadFeedbackLabelsOperation, possibly from a different process. +func (c *gRPCClient) BulkUploadFeedbackLabelsOperation(name string) *BulkUploadFeedbackLabelsOperation { + return &BulkUploadFeedbackLabelsOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// BulkUploadFeedbackLabelsOperation returns a new BulkUploadFeedbackLabelsOperation from a given name. +// The name must be that of a previously created BulkUploadFeedbackLabelsOperation, possibly from a different process. +func (c *restClient) BulkUploadFeedbackLabelsOperation(name string) *BulkUploadFeedbackLabelsOperation { + override := fmt.Sprintf("/v1/%s", name) + return &BulkUploadFeedbackLabelsOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + pollPath: override, + } +} + // CreateAnalysisOperation returns a new CreateAnalysisOperation from a given name. // The name must be that of a previously created CreateAnalysisOperation, possibly from a different process. func (c *gRPCClient) CreateAnalysisOperation(name string) *CreateAnalysisOperation { @@ -6023,6 +9845,42 @@ func (c *restClient) InitializeEncryptionSpecOperation(name string) *InitializeE } } +// QueryMetricsOperation returns a new QueryMetricsOperation from a given name. +// The name must be that of a previously created QueryMetricsOperation, possibly from a different process. +func (c *gRPCClient) QueryMetricsOperation(name string) *QueryMetricsOperation { + return &QueryMetricsOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// QueryMetricsOperation returns a new QueryMetricsOperation from a given name. +// The name must be that of a previously created QueryMetricsOperation, possibly from a different process. +func (c *restClient) QueryMetricsOperation(name string) *QueryMetricsOperation { + override := fmt.Sprintf("/v1/%s", name) + return &QueryMetricsOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + pollPath: override, + } +} + +// TuneQaScorecardRevisionOperation returns a new TuneQaScorecardRevisionOperation from a given name. +// The name must be that of a previously created TuneQaScorecardRevisionOperation, possibly from a different process. +func (c *gRPCClient) TuneQaScorecardRevisionOperation(name string) *TuneQaScorecardRevisionOperation { + return &TuneQaScorecardRevisionOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + +// TuneQaScorecardRevisionOperation returns a new TuneQaScorecardRevisionOperation from a given name. +// The name must be that of a previously created TuneQaScorecardRevisionOperation, possibly from a different process. +func (c *restClient) TuneQaScorecardRevisionOperation(name string) *TuneQaScorecardRevisionOperation { + override := fmt.Sprintf("/v1/%s", name) + return &TuneQaScorecardRevisionOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + pollPath: override, + } +} + // UndeployIssueModelOperation returns a new UndeployIssueModelOperation from a given name. // The name must be that of a previously created UndeployIssueModelOperation, possibly from a different process. func (c *gRPCClient) UndeployIssueModelOperation(name string) *UndeployIssueModelOperation { diff --git a/contactcenterinsights/apiv1/contact_center_insights_client_example_go123_test.go b/contactcenterinsights/apiv1/contact_center_insights_client_example_go123_test.go index 4eb961c84387..2110abefdce9 100644 --- a/contactcenterinsights/apiv1/contact_center_insights_client_example_go123_test.go +++ b/contactcenterinsights/apiv1/contact_center_insights_client_example_go123_test.go @@ -26,6 +26,32 @@ import ( longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" ) +func ExampleClient_ListAllFeedbackLabels_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.ListAllFeedbackLabelsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ListAllFeedbackLabelsRequest. + } + for resp, err := range c.ListAllFeedbackLabels(ctx, req).All() { + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + func ExampleClient_ListAnalyses_all() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. @@ -52,6 +78,32 @@ func ExampleClient_ListAnalyses_all() { } } +func ExampleClient_ListAnalysisRules_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.ListAnalysisRulesRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ListAnalysisRulesRequest. + } + for resp, err := range c.ListAnalysisRules(ctx, req).All() { + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + func ExampleClient_ListConversations_all() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. @@ -78,6 +130,32 @@ func ExampleClient_ListConversations_all() { } } +func ExampleClient_ListFeedbackLabels_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.ListFeedbackLabelsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ListFeedbackLabelsRequest. + } + for resp, err := range c.ListFeedbackLabels(ctx, req).All() { + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + func ExampleClient_ListPhraseMatchers_all() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. @@ -104,6 +182,84 @@ func ExampleClient_ListPhraseMatchers_all() { } } +func ExampleClient_ListQaQuestions_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.ListQaQuestionsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ListQaQuestionsRequest. + } + for resp, err := range c.ListQaQuestions(ctx, req).All() { + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleClient_ListQaScorecardRevisions_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.ListQaScorecardRevisionsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ListQaScorecardRevisionsRequest. + } + for resp, err := range c.ListQaScorecardRevisions(ctx, req).All() { + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + +func ExampleClient_ListQaScorecards_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.ListQaScorecardsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ListQaScorecardsRequest. + } + for resp, err := range c.ListQaScorecards(ctx, req).All() { + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + func ExampleClient_ListViews_all() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. diff --git a/contactcenterinsights/apiv1/contact_center_insights_client_example_test.go b/contactcenterinsights/apiv1/contact_center_insights_client_example_test.go index 3b5a6ceaab57..304e82864eed 100644 --- a/contactcenterinsights/apiv1/contact_center_insights_client_example_test.go +++ b/contactcenterinsights/apiv1/contact_center_insights_client_example_test.go @@ -119,7 +119,7 @@ func ExampleClient_BulkDeleteConversations() { _ = resp } -func ExampleClient_CalculateIssueModelStats() { +func ExampleClient_BulkDownloadFeedbackLabels() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -132,11 +132,16 @@ func ExampleClient_CalculateIssueModelStats() { } defer c.Close() - req := &contactcenterinsightspb.CalculateIssueModelStatsRequest{ + req := &contactcenterinsightspb.BulkDownloadFeedbackLabelsRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CalculateIssueModelStatsRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#BulkDownloadFeedbackLabelsRequest. } - resp, err := c.CalculateIssueModelStats(ctx, req) + op, err := c.BulkDownloadFeedbackLabels(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) if err != nil { // TODO: Handle error. } @@ -144,7 +149,7 @@ func ExampleClient_CalculateIssueModelStats() { _ = resp } -func ExampleClient_CalculateStats() { +func ExampleClient_BulkUploadFeedbackLabels() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -157,11 +162,16 @@ func ExampleClient_CalculateStats() { } defer c.Close() - req := &contactcenterinsightspb.CalculateStatsRequest{ + req := &contactcenterinsightspb.BulkUploadFeedbackLabelsRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CalculateStatsRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#BulkUploadFeedbackLabelsRequest. } - resp, err := c.CalculateStats(ctx, req) + op, err := c.BulkUploadFeedbackLabels(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) if err != nil { // TODO: Handle error. } @@ -169,7 +179,7 @@ func ExampleClient_CalculateStats() { _ = resp } -func ExampleClient_CreateAnalysis() { +func ExampleClient_CalculateIssueModelStats() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -182,16 +192,11 @@ func ExampleClient_CreateAnalysis() { } defer c.Close() - req := &contactcenterinsightspb.CreateAnalysisRequest{ + req := &contactcenterinsightspb.CalculateIssueModelStatsRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CreateAnalysisRequest. - } - op, err := c.CreateAnalysis(ctx, req) - if err != nil { - // TODO: Handle error. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CalculateIssueModelStatsRequest. } - - resp, err := op.Wait(ctx) + resp, err := c.CalculateIssueModelStats(ctx, req) if err != nil { // TODO: Handle error. } @@ -199,7 +204,7 @@ func ExampleClient_CreateAnalysis() { _ = resp } -func ExampleClient_CreateConversation() { +func ExampleClient_CalculateStats() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -212,11 +217,11 @@ func ExampleClient_CreateConversation() { } defer c.Close() - req := &contactcenterinsightspb.CreateConversationRequest{ + req := &contactcenterinsightspb.CalculateStatsRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CreateConversationRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CalculateStatsRequest. } - resp, err := c.CreateConversation(ctx, req) + resp, err := c.CalculateStats(ctx, req) if err != nil { // TODO: Handle error. } @@ -224,7 +229,7 @@ func ExampleClient_CreateConversation() { _ = resp } -func ExampleClient_CreateIssueModel() { +func ExampleClient_CreateAnalysis() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -237,11 +242,11 @@ func ExampleClient_CreateIssueModel() { } defer c.Close() - req := &contactcenterinsightspb.CreateIssueModelRequest{ + req := &contactcenterinsightspb.CreateAnalysisRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CreateIssueModelRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CreateAnalysisRequest. } - op, err := c.CreateIssueModel(ctx, req) + op, err := c.CreateAnalysis(ctx, req) if err != nil { // TODO: Handle error. } @@ -254,7 +259,7 @@ func ExampleClient_CreateIssueModel() { _ = resp } -func ExampleClient_CreatePhraseMatcher() { +func ExampleClient_CreateAnalysisRule() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -267,11 +272,11 @@ func ExampleClient_CreatePhraseMatcher() { } defer c.Close() - req := &contactcenterinsightspb.CreatePhraseMatcherRequest{ + req := &contactcenterinsightspb.CreateAnalysisRuleRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CreatePhraseMatcherRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CreateAnalysisRuleRequest. } - resp, err := c.CreatePhraseMatcher(ctx, req) + resp, err := c.CreateAnalysisRule(ctx, req) if err != nil { // TODO: Handle error. } @@ -279,7 +284,7 @@ func ExampleClient_CreatePhraseMatcher() { _ = resp } -func ExampleClient_CreateView() { +func ExampleClient_CreateConversation() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -292,11 +297,11 @@ func ExampleClient_CreateView() { } defer c.Close() - req := &contactcenterinsightspb.CreateViewRequest{ + req := &contactcenterinsightspb.CreateConversationRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CreateViewRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CreateConversationRequest. } - resp, err := c.CreateView(ctx, req) + resp, err := c.CreateConversation(ctx, req) if err != nil { // TODO: Handle error. } @@ -304,7 +309,7 @@ func ExampleClient_CreateView() { _ = resp } -func ExampleClient_DeleteAnalysis() { +func ExampleClient_CreateFeedbackLabel() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -317,17 +322,19 @@ func ExampleClient_DeleteAnalysis() { } defer c.Close() - req := &contactcenterinsightspb.DeleteAnalysisRequest{ + req := &contactcenterinsightspb.CreateFeedbackLabelRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeleteAnalysisRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CreateFeedbackLabelRequest. } - err = c.DeleteAnalysis(ctx, req) + resp, err := c.CreateFeedbackLabel(ctx, req) if err != nil { // TODO: Handle error. } + // TODO: Use resp. + _ = resp } -func ExampleClient_DeleteConversation() { +func ExampleClient_CreateIssueModel() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -340,17 +347,24 @@ func ExampleClient_DeleteConversation() { } defer c.Close() - req := &contactcenterinsightspb.DeleteConversationRequest{ + req := &contactcenterinsightspb.CreateIssueModelRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeleteConversationRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CreateIssueModelRequest. } - err = c.DeleteConversation(ctx, req) + op, err := c.CreateIssueModel(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) if err != nil { // TODO: Handle error. } + // TODO: Use resp. + _ = resp } -func ExampleClient_DeleteIssue() { +func ExampleClient_CreatePhraseMatcher() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -363,17 +377,19 @@ func ExampleClient_DeleteIssue() { } defer c.Close() - req := &contactcenterinsightspb.DeleteIssueRequest{ + req := &contactcenterinsightspb.CreatePhraseMatcherRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeleteIssueRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CreatePhraseMatcherRequest. } - err = c.DeleteIssue(ctx, req) + resp, err := c.CreatePhraseMatcher(ctx, req) if err != nil { // TODO: Handle error. } + // TODO: Use resp. + _ = resp } -func ExampleClient_DeleteIssueModel() { +func ExampleClient_CreateQaQuestion() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -386,22 +402,19 @@ func ExampleClient_DeleteIssueModel() { } defer c.Close() - req := &contactcenterinsightspb.DeleteIssueModelRequest{ + req := &contactcenterinsightspb.CreateQaQuestionRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeleteIssueModelRequest. - } - op, err := c.DeleteIssueModel(ctx, req) - if err != nil { - // TODO: Handle error. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CreateQaQuestionRequest. } - - err = op.Wait(ctx) + resp, err := c.CreateQaQuestion(ctx, req) if err != nil { // TODO: Handle error. } + // TODO: Use resp. + _ = resp } -func ExampleClient_DeletePhraseMatcher() { +func ExampleClient_CreateQaScorecard() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -414,17 +427,19 @@ func ExampleClient_DeletePhraseMatcher() { } defer c.Close() - req := &contactcenterinsightspb.DeletePhraseMatcherRequest{ + req := &contactcenterinsightspb.CreateQaScorecardRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeletePhraseMatcherRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CreateQaScorecardRequest. } - err = c.DeletePhraseMatcher(ctx, req) + resp, err := c.CreateQaScorecard(ctx, req) if err != nil { // TODO: Handle error. } + // TODO: Use resp. + _ = resp } -func ExampleClient_DeleteView() { +func ExampleClient_CreateQaScorecardRevision() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -437,17 +452,19 @@ func ExampleClient_DeleteView() { } defer c.Close() - req := &contactcenterinsightspb.DeleteViewRequest{ + req := &contactcenterinsightspb.CreateQaScorecardRevisionRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeleteViewRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CreateQaScorecardRevisionRequest. } - err = c.DeleteView(ctx, req) + resp, err := c.CreateQaScorecardRevision(ctx, req) if err != nil { // TODO: Handle error. } + // TODO: Use resp. + _ = resp } -func ExampleClient_DeployIssueModel() { +func ExampleClient_CreateView() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -460,16 +477,11 @@ func ExampleClient_DeployIssueModel() { } defer c.Close() - req := &contactcenterinsightspb.DeployIssueModelRequest{ + req := &contactcenterinsightspb.CreateViewRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeployIssueModelRequest. - } - op, err := c.DeployIssueModel(ctx, req) - if err != nil { - // TODO: Handle error. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CreateViewRequest. } - - resp, err := op.Wait(ctx) + resp, err := c.CreateView(ctx, req) if err != nil { // TODO: Handle error. } @@ -477,7 +489,7 @@ func ExampleClient_DeployIssueModel() { _ = resp } -func ExampleClient_ExportInsightsData() { +func ExampleClient_DeleteAnalysis() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -490,24 +502,17 @@ func ExampleClient_ExportInsightsData() { } defer c.Close() - req := &contactcenterinsightspb.ExportInsightsDataRequest{ + req := &contactcenterinsightspb.DeleteAnalysisRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ExportInsightsDataRequest. - } - op, err := c.ExportInsightsData(ctx, req) - if err != nil { - // TODO: Handle error. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeleteAnalysisRequest. } - - resp, err := op.Wait(ctx) + err = c.DeleteAnalysis(ctx, req) if err != nil { // TODO: Handle error. } - // TODO: Use resp. - _ = resp } -func ExampleClient_ExportIssueModel() { +func ExampleClient_DeleteAnalysisRule() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -520,24 +525,17 @@ func ExampleClient_ExportIssueModel() { } defer c.Close() - req := &contactcenterinsightspb.ExportIssueModelRequest{ + req := &contactcenterinsightspb.DeleteAnalysisRuleRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ExportIssueModelRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeleteAnalysisRuleRequest. } - op, err := c.ExportIssueModel(ctx, req) - if err != nil { - // TODO: Handle error. - } - - resp, err := op.Wait(ctx) + err = c.DeleteAnalysisRule(ctx, req) if err != nil { // TODO: Handle error. } - // TODO: Use resp. - _ = resp } -func ExampleClient_GetAnalysis() { +func ExampleClient_DeleteConversation() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -550,19 +548,17 @@ func ExampleClient_GetAnalysis() { } defer c.Close() - req := &contactcenterinsightspb.GetAnalysisRequest{ + req := &contactcenterinsightspb.DeleteConversationRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetAnalysisRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeleteConversationRequest. } - resp, err := c.GetAnalysis(ctx, req) + err = c.DeleteConversation(ctx, req) if err != nil { // TODO: Handle error. } - // TODO: Use resp. - _ = resp } -func ExampleClient_GetConversation() { +func ExampleClient_DeleteFeedbackLabel() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -575,19 +571,17 @@ func ExampleClient_GetConversation() { } defer c.Close() - req := &contactcenterinsightspb.GetConversationRequest{ + req := &contactcenterinsightspb.DeleteFeedbackLabelRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetConversationRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeleteFeedbackLabelRequest. } - resp, err := c.GetConversation(ctx, req) + err = c.DeleteFeedbackLabel(ctx, req) if err != nil { // TODO: Handle error. } - // TODO: Use resp. - _ = resp } -func ExampleClient_GetEncryptionSpec() { +func ExampleClient_DeleteIssue() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -600,19 +594,17 @@ func ExampleClient_GetEncryptionSpec() { } defer c.Close() - req := &contactcenterinsightspb.GetEncryptionSpecRequest{ + req := &contactcenterinsightspb.DeleteIssueRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetEncryptionSpecRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeleteIssueRequest. } - resp, err := c.GetEncryptionSpec(ctx, req) + err = c.DeleteIssue(ctx, req) if err != nil { // TODO: Handle error. } - // TODO: Use resp. - _ = resp } -func ExampleClient_GetIssue() { +func ExampleClient_DeleteIssueModel() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -625,19 +617,22 @@ func ExampleClient_GetIssue() { } defer c.Close() - req := &contactcenterinsightspb.GetIssueRequest{ + req := &contactcenterinsightspb.DeleteIssueModelRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetIssueRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeleteIssueModelRequest. } - resp, err := c.GetIssue(ctx, req) + op, err := c.DeleteIssueModel(ctx, req) + if err != nil { + // TODO: Handle error. + } + + err = op.Wait(ctx) if err != nil { // TODO: Handle error. } - // TODO: Use resp. - _ = resp } -func ExampleClient_GetIssueModel() { +func ExampleClient_DeletePhraseMatcher() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -650,19 +645,17 @@ func ExampleClient_GetIssueModel() { } defer c.Close() - req := &contactcenterinsightspb.GetIssueModelRequest{ + req := &contactcenterinsightspb.DeletePhraseMatcherRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetIssueModelRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeletePhraseMatcherRequest. } - resp, err := c.GetIssueModel(ctx, req) + err = c.DeletePhraseMatcher(ctx, req) if err != nil { // TODO: Handle error. } - // TODO: Use resp. - _ = resp } -func ExampleClient_GetPhraseMatcher() { +func ExampleClient_DeleteQaQuestion() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -675,19 +668,17 @@ func ExampleClient_GetPhraseMatcher() { } defer c.Close() - req := &contactcenterinsightspb.GetPhraseMatcherRequest{ + req := &contactcenterinsightspb.DeleteQaQuestionRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetPhraseMatcherRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeleteQaQuestionRequest. } - resp, err := c.GetPhraseMatcher(ctx, req) + err = c.DeleteQaQuestion(ctx, req) if err != nil { // TODO: Handle error. } - // TODO: Use resp. - _ = resp } -func ExampleClient_GetSettings() { +func ExampleClient_DeleteQaScorecard() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -700,19 +691,17 @@ func ExampleClient_GetSettings() { } defer c.Close() - req := &contactcenterinsightspb.GetSettingsRequest{ + req := &contactcenterinsightspb.DeleteQaScorecardRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetSettingsRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeleteQaScorecardRequest. } - resp, err := c.GetSettings(ctx, req) + err = c.DeleteQaScorecard(ctx, req) if err != nil { // TODO: Handle error. } - // TODO: Use resp. - _ = resp } -func ExampleClient_GetView() { +func ExampleClient_DeleteQaScorecardRevision() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -725,19 +714,17 @@ func ExampleClient_GetView() { } defer c.Close() - req := &contactcenterinsightspb.GetViewRequest{ + req := &contactcenterinsightspb.DeleteQaScorecardRevisionRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetViewRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeleteQaScorecardRevisionRequest. } - resp, err := c.GetView(ctx, req) + err = c.DeleteQaScorecardRevision(ctx, req) if err != nil { // TODO: Handle error. } - // TODO: Use resp. - _ = resp } -func ExampleClient_ImportIssueModel() { +func ExampleClient_DeleteView() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -750,24 +737,17 @@ func ExampleClient_ImportIssueModel() { } defer c.Close() - req := &contactcenterinsightspb.ImportIssueModelRequest{ + req := &contactcenterinsightspb.DeleteViewRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ImportIssueModelRequest. - } - op, err := c.ImportIssueModel(ctx, req) - if err != nil { - // TODO: Handle error. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeleteViewRequest. } - - resp, err := op.Wait(ctx) + err = c.DeleteView(ctx, req) if err != nil { // TODO: Handle error. } - // TODO: Use resp. - _ = resp } -func ExampleClient_IngestConversations() { +func ExampleClient_DeployIssueModel() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -780,11 +760,11 @@ func ExampleClient_IngestConversations() { } defer c.Close() - req := &contactcenterinsightspb.IngestConversationsRequest{ + req := &contactcenterinsightspb.DeployIssueModelRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#IngestConversationsRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeployIssueModelRequest. } - op, err := c.IngestConversations(ctx, req) + op, err := c.DeployIssueModel(ctx, req) if err != nil { // TODO: Handle error. } @@ -797,7 +777,7 @@ func ExampleClient_IngestConversations() { _ = resp } -func ExampleClient_InitializeEncryptionSpec() { +func ExampleClient_DeployQaScorecardRevision() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -810,16 +790,11 @@ func ExampleClient_InitializeEncryptionSpec() { } defer c.Close() - req := &contactcenterinsightspb.InitializeEncryptionSpecRequest{ + req := &contactcenterinsightspb.DeployQaScorecardRevisionRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#InitializeEncryptionSpecRequest. - } - op, err := c.InitializeEncryptionSpec(ctx, req) - if err != nil { - // TODO: Handle error. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeployQaScorecardRevisionRequest. } - - resp, err := op.Wait(ctx) + resp, err := c.DeployQaScorecardRevision(ctx, req) if err != nil { // TODO: Handle error. } @@ -827,7 +802,7 @@ func ExampleClient_InitializeEncryptionSpec() { _ = resp } -func ExampleClient_ListAnalyses() { +func ExampleClient_ExportInsightsData() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. // It will require modifications to work: @@ -840,7 +815,519 @@ func ExampleClient_ListAnalyses() { } defer c.Close() - req := &contactcenterinsightspb.ListAnalysesRequest{ + req := &contactcenterinsightspb.ExportInsightsDataRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ExportInsightsDataRequest. + } + op, err := c.ExportInsightsData(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_ExportIssueModel() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.ExportIssueModelRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ExportIssueModelRequest. + } + op, err := c.ExportIssueModel(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_GetAnalysis() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.GetAnalysisRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetAnalysisRequest. + } + resp, err := c.GetAnalysis(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_GetAnalysisRule() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.GetAnalysisRuleRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetAnalysisRuleRequest. + } + resp, err := c.GetAnalysisRule(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_GetConversation() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.GetConversationRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetConversationRequest. + } + resp, err := c.GetConversation(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_GetEncryptionSpec() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.GetEncryptionSpecRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetEncryptionSpecRequest. + } + resp, err := c.GetEncryptionSpec(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_GetFeedbackLabel() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.GetFeedbackLabelRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetFeedbackLabelRequest. + } + resp, err := c.GetFeedbackLabel(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_GetIssue() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.GetIssueRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetIssueRequest. + } + resp, err := c.GetIssue(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_GetIssueModel() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.GetIssueModelRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetIssueModelRequest. + } + resp, err := c.GetIssueModel(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_GetPhraseMatcher() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.GetPhraseMatcherRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetPhraseMatcherRequest. + } + resp, err := c.GetPhraseMatcher(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_GetQaQuestion() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.GetQaQuestionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetQaQuestionRequest. + } + resp, err := c.GetQaQuestion(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_GetQaScorecard() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.GetQaScorecardRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetQaScorecardRequest. + } + resp, err := c.GetQaScorecard(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_GetQaScorecardRevision() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.GetQaScorecardRevisionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetQaScorecardRevisionRequest. + } + resp, err := c.GetQaScorecardRevision(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_GetSettings() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.GetSettingsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetSettingsRequest. + } + resp, err := c.GetSettings(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_GetView() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.GetViewRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetViewRequest. + } + resp, err := c.GetView(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_ImportIssueModel() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.ImportIssueModelRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ImportIssueModelRequest. + } + op, err := c.ImportIssueModel(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_IngestConversations() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.IngestConversationsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#IngestConversationsRequest. + } + op, err := c.IngestConversations(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_InitializeEncryptionSpec() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.InitializeEncryptionSpecRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#InitializeEncryptionSpecRequest. + } + op, err := c.InitializeEncryptionSpec(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_ListAllFeedbackLabels() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.ListAllFeedbackLabelsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ListAllFeedbackLabelsRequest. + } + it := c.ListAllFeedbackLabels(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*contactcenterinsightspb.ListAllFeedbackLabelsResponse) + } +} + +func ExampleClient_ListAnalyses() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.ListAnalysesRequest{ // TODO: Fill request struct fields. // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ListAnalysesRequest. } @@ -864,6 +1351,43 @@ func ExampleClient_ListAnalyses() { } } +func ExampleClient_ListAnalysisRules() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.ListAnalysisRulesRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ListAnalysisRulesRequest. + } + it := c.ListAnalysisRules(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*contactcenterinsightspb.ListAnalysisRulesResponse) + } +} + func ExampleClient_ListConversations() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. @@ -879,9 +1403,46 @@ func ExampleClient_ListConversations() { req := &contactcenterinsightspb.ListConversationsRequest{ // TODO: Fill request struct fields. - // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ListConversationsRequest. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ListConversationsRequest. + } + it := c.ListConversations(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*contactcenterinsightspb.ListConversationsResponse) + } +} + +func ExampleClient_ListFeedbackLabels() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.ListFeedbackLabelsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ListFeedbackLabelsRequest. } - it := c.ListConversations(ctx, req) + it := c.ListFeedbackLabels(ctx, req) for { resp, err := it.Next() if err == iterator.Done { @@ -897,7 +1458,7 @@ func ExampleClient_ListConversations() { // you can do so by casting the `Response` as below. // Otherwise, remove this line. Only populated after // first call to Next(). Not safe for concurrent access. - _ = it.Response.(*contactcenterinsightspb.ListConversationsResponse) + _ = it.Response.(*contactcenterinsightspb.ListFeedbackLabelsResponse) } } @@ -988,6 +1549,117 @@ func ExampleClient_ListPhraseMatchers() { } } +func ExampleClient_ListQaQuestions() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.ListQaQuestionsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ListQaQuestionsRequest. + } + it := c.ListQaQuestions(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*contactcenterinsightspb.ListQaQuestionsResponse) + } +} + +func ExampleClient_ListQaScorecardRevisions() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.ListQaScorecardRevisionsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ListQaScorecardRevisionsRequest. + } + it := c.ListQaScorecardRevisions(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*contactcenterinsightspb.ListQaScorecardRevisionsResponse) + } +} + +func ExampleClient_ListQaScorecards() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.ListQaScorecardsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ListQaScorecardsRequest. + } + it := c.ListQaScorecards(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*contactcenterinsightspb.ListQaScorecardsResponse) + } +} + func ExampleClient_ListViews() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. @@ -1025,6 +1697,66 @@ func ExampleClient_ListViews() { } } +func ExampleClient_QueryMetrics() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.QueryMetricsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#QueryMetricsRequest. + } + op, err := c.QueryMetrics(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_TuneQaScorecardRevision() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.TuneQaScorecardRevisionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#TuneQaScorecardRevisionRequest. + } + op, err := c.TuneQaScorecardRevision(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + func ExampleClient_UndeployIssueModel() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. @@ -1055,6 +1787,56 @@ func ExampleClient_UndeployIssueModel() { _ = resp } +func ExampleClient_UndeployQaScorecardRevision() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.UndeployQaScorecardRevisionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#UndeployQaScorecardRevisionRequest. + } + resp, err := c.UndeployQaScorecardRevision(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_UpdateAnalysisRule() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.UpdateAnalysisRuleRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#UpdateAnalysisRuleRequest. + } + resp, err := c.UpdateAnalysisRule(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + func ExampleClient_UpdateConversation() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. @@ -1080,6 +1862,31 @@ func ExampleClient_UpdateConversation() { _ = resp } +func ExampleClient_UpdateFeedbackLabel() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.UpdateFeedbackLabelRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#UpdateFeedbackLabelRequest. + } + resp, err := c.UpdateFeedbackLabel(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + func ExampleClient_UpdateIssue() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. @@ -1155,6 +1962,56 @@ func ExampleClient_UpdatePhraseMatcher() { _ = resp } +func ExampleClient_UpdateQaQuestion() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.UpdateQaQuestionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#UpdateQaQuestionRequest. + } + resp, err := c.UpdateQaQuestion(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +func ExampleClient_UpdateQaScorecard() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.UpdateQaScorecardRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#UpdateQaScorecardRequest. + } + resp, err := c.UpdateQaScorecard(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + func ExampleClient_UpdateSettings() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. diff --git a/contactcenterinsights/apiv1/contactcenterinsightspb/contact_center_insights.pb.go b/contactcenterinsights/apiv1/contactcenterinsightspb/contact_center_insights.pb.go index a60925e0eed6..bbd4be5c3276 100755 --- a/contactcenterinsights/apiv1/contactcenterinsightspb/contact_center_insights.pb.go +++ b/contactcenterinsights/apiv1/contactcenterinsightspb/contact_center_insights.pb.go @@ -28,6 +28,7 @@ import ( longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" _ "google.golang.org/genproto/googleapis/api/annotations" status "google.golang.org/genproto/googleapis/rpc/status" + interval "google.golang.org/genproto/googleapis/type/interval" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status1 "google.golang.org/grpc/status" @@ -208,6 +209,323 @@ func (ExportInsightsDataRequest_WriteDisposition) EnumDescriptor() ([]byte, []in return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{25, 0} } +// The key of the dimension. +type Dimension_DimensionKey int32 + +const ( + // The key of the dimension is unspecified. + Dimension_DIMENSION_KEY_UNSPECIFIED Dimension_DimensionKey = 0 + // The dimension is keyed by issues. + Dimension_ISSUE Dimension_DimensionKey = 1 + // The dimension is keyed by agents. + Dimension_AGENT Dimension_DimensionKey = 2 + // The dimension is keyed by agent teams. + Dimension_AGENT_TEAM Dimension_DimensionKey = 3 + // The dimension is keyed by QaQuestionIds. + // Note that: We only group by the QuestionId and not the revision-id of the + // scorecard this question is a part of. This allows for showing stats for + // the same question across different scorecard revisions. + Dimension_QA_QUESTION_ID Dimension_DimensionKey = 4 + // The dimension is keyed by QaQuestionIds-Answer value pairs. + // Note that: We only group by the QuestionId and not the revision-id of the + // scorecard this question is a part of. This allows for showing + // distribution of answers per question across different scorecard + // revisions. + Dimension_QA_QUESTION_ANSWER_VALUE Dimension_DimensionKey = 5 + // The dimension is keyed by the conversation profile ID. + Dimension_CONVERSATION_PROFILE_ID Dimension_DimensionKey = 6 +) + +// Enum value maps for Dimension_DimensionKey. +var ( + Dimension_DimensionKey_name = map[int32]string{ + 0: "DIMENSION_KEY_UNSPECIFIED", + 1: "ISSUE", + 2: "AGENT", + 3: "AGENT_TEAM", + 4: "QA_QUESTION_ID", + 5: "QA_QUESTION_ANSWER_VALUE", + 6: "CONVERSATION_PROFILE_ID", + } + Dimension_DimensionKey_value = map[string]int32{ + "DIMENSION_KEY_UNSPECIFIED": 0, + "ISSUE": 1, + "AGENT": 2, + "AGENT_TEAM": 3, + "QA_QUESTION_ID": 4, + "QA_QUESTION_ANSWER_VALUE": 5, + "CONVERSATION_PROFILE_ID": 6, + } +) + +func (x Dimension_DimensionKey) Enum() *Dimension_DimensionKey { + p := new(Dimension_DimensionKey) + *p = x + return p +} + +func (x Dimension_DimensionKey) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Dimension_DimensionKey) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_enumTypes[3].Descriptor() +} + +func (Dimension_DimensionKey) Type() protoreflect.EnumType { + return &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_enumTypes[3] +} + +func (x Dimension_DimensionKey) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Dimension_DimensionKey.Descriptor instead. +func (Dimension_DimensionKey) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{79, 0} +} + +// A time granularity divides the time line into discrete time periods. +// This is useful for defining buckets over which filtering and aggregation +// should be performed. +type QueryMetricsRequest_TimeGranularity int32 + +const ( + // The time granularity is unspecified and will default to NONE. + QueryMetricsRequest_TIME_GRANULARITY_UNSPECIFIED QueryMetricsRequest_TimeGranularity = 0 + // No time granularity. The response won't contain a time series. + // This is the default value if no time granularity is specified. + QueryMetricsRequest_NONE QueryMetricsRequest_TimeGranularity = 1 + // Data points in the time series will aggregate at a daily granularity. + // 1 day means [midnight to midnight). + QueryMetricsRequest_DAILY QueryMetricsRequest_TimeGranularity = 2 + // Data points in the time series will aggregate at a daily granularity. + // 1 HOUR means [01:00 to 02:00). + QueryMetricsRequest_HOURLY QueryMetricsRequest_TimeGranularity = 3 + // Data points in the time series will aggregate at a daily granularity. + // PER_MINUTE means [01:00 to 01:01). + QueryMetricsRequest_PER_MINUTE QueryMetricsRequest_TimeGranularity = 4 + // Data points in the time series will aggregate at a 1 minute granularity. + // PER_5_MINUTES means [01:00 to 01:05). + QueryMetricsRequest_PER_5_MINUTES QueryMetricsRequest_TimeGranularity = 5 + // Data points in the time series will aggregate at a monthly granularity. + // 1 MONTH means [01st of the month to 1st of the next month). + QueryMetricsRequest_MONTHLY QueryMetricsRequest_TimeGranularity = 6 +) + +// Enum value maps for QueryMetricsRequest_TimeGranularity. +var ( + QueryMetricsRequest_TimeGranularity_name = map[int32]string{ + 0: "TIME_GRANULARITY_UNSPECIFIED", + 1: "NONE", + 2: "DAILY", + 3: "HOURLY", + 4: "PER_MINUTE", + 5: "PER_5_MINUTES", + 6: "MONTHLY", + } + QueryMetricsRequest_TimeGranularity_value = map[string]int32{ + "TIME_GRANULARITY_UNSPECIFIED": 0, + "NONE": 1, + "DAILY": 2, + "HOURLY": 3, + "PER_MINUTE": 4, + "PER_5_MINUTES": 5, + "MONTHLY": 6, + } +) + +func (x QueryMetricsRequest_TimeGranularity) Enum() *QueryMetricsRequest_TimeGranularity { + p := new(QueryMetricsRequest_TimeGranularity) + *p = x + return p +} + +func (x QueryMetricsRequest_TimeGranularity) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (QueryMetricsRequest_TimeGranularity) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_enumTypes[4].Descriptor() +} + +func (QueryMetricsRequest_TimeGranularity) Type() protoreflect.EnumType { + return &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_enumTypes[4] +} + +func (x QueryMetricsRequest_TimeGranularity) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use QueryMetricsRequest_TimeGranularity.Descriptor instead. +func (QueryMetricsRequest_TimeGranularity) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{80, 0} +} + +// All permissible file formats. +type BulkUploadFeedbackLabelsRequest_GcsSource_Format int32 + +const ( + // Unspecified format. + BulkUploadFeedbackLabelsRequest_GcsSource_FORMAT_UNSPECIFIED BulkUploadFeedbackLabelsRequest_GcsSource_Format = 0 + // CSV format. + BulkUploadFeedbackLabelsRequest_GcsSource_CSV BulkUploadFeedbackLabelsRequest_GcsSource_Format = 1 + // JSON format. + BulkUploadFeedbackLabelsRequest_GcsSource_JSON BulkUploadFeedbackLabelsRequest_GcsSource_Format = 2 +) + +// Enum value maps for BulkUploadFeedbackLabelsRequest_GcsSource_Format. +var ( + BulkUploadFeedbackLabelsRequest_GcsSource_Format_name = map[int32]string{ + 0: "FORMAT_UNSPECIFIED", + 1: "CSV", + 2: "JSON", + } + BulkUploadFeedbackLabelsRequest_GcsSource_Format_value = map[string]int32{ + "FORMAT_UNSPECIFIED": 0, + "CSV": 1, + "JSON": 2, + } +) + +func (x BulkUploadFeedbackLabelsRequest_GcsSource_Format) Enum() *BulkUploadFeedbackLabelsRequest_GcsSource_Format { + p := new(BulkUploadFeedbackLabelsRequest_GcsSource_Format) + *p = x + return p +} + +func (x BulkUploadFeedbackLabelsRequest_GcsSource_Format) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BulkUploadFeedbackLabelsRequest_GcsSource_Format) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_enumTypes[5].Descriptor() +} + +func (BulkUploadFeedbackLabelsRequest_GcsSource_Format) Type() protoreflect.EnumType { + return &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_enumTypes[5] +} + +func (x BulkUploadFeedbackLabelsRequest_GcsSource_Format) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BulkUploadFeedbackLabelsRequest_GcsSource_Format.Descriptor instead. +func (BulkUploadFeedbackLabelsRequest_GcsSource_Format) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{113, 0, 0} +} + +// Possible feedback label types that will be downloaded. +type BulkDownloadFeedbackLabelsRequest_FeedbackLabelType int32 + +const ( + // Unspecified format + BulkDownloadFeedbackLabelsRequest_FEEDBACK_LABEL_TYPE_UNSPECIFIED BulkDownloadFeedbackLabelsRequest_FeedbackLabelType = 0 + // Downloaded file will contain all Quality AI labels from the latest + // scorecard revision. + BulkDownloadFeedbackLabelsRequest_QUALITY_AI BulkDownloadFeedbackLabelsRequest_FeedbackLabelType = 1 + // Downloaded file will contain only Topic Modeling labels. + BulkDownloadFeedbackLabelsRequest_TOPIC_MODELING BulkDownloadFeedbackLabelsRequest_FeedbackLabelType = 2 +) + +// Enum value maps for BulkDownloadFeedbackLabelsRequest_FeedbackLabelType. +var ( + BulkDownloadFeedbackLabelsRequest_FeedbackLabelType_name = map[int32]string{ + 0: "FEEDBACK_LABEL_TYPE_UNSPECIFIED", + 1: "QUALITY_AI", + 2: "TOPIC_MODELING", + } + BulkDownloadFeedbackLabelsRequest_FeedbackLabelType_value = map[string]int32{ + "FEEDBACK_LABEL_TYPE_UNSPECIFIED": 0, + "QUALITY_AI": 1, + "TOPIC_MODELING": 2, + } +) + +func (x BulkDownloadFeedbackLabelsRequest_FeedbackLabelType) Enum() *BulkDownloadFeedbackLabelsRequest_FeedbackLabelType { + p := new(BulkDownloadFeedbackLabelsRequest_FeedbackLabelType) + *p = x + return p +} + +func (x BulkDownloadFeedbackLabelsRequest_FeedbackLabelType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BulkDownloadFeedbackLabelsRequest_FeedbackLabelType) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_enumTypes[6].Descriptor() +} + +func (BulkDownloadFeedbackLabelsRequest_FeedbackLabelType) Type() protoreflect.EnumType { + return &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_enumTypes[6] +} + +func (x BulkDownloadFeedbackLabelsRequest_FeedbackLabelType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BulkDownloadFeedbackLabelsRequest_FeedbackLabelType.Descriptor instead. +func (BulkDownloadFeedbackLabelsRequest_FeedbackLabelType) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{116, 0} +} + +// All permissible file formats. +// See `records_per_file_count` to override the default number of records +// per file. +type BulkDownloadFeedbackLabelsRequest_GcsDestination_Format int32 + +const ( + // Unspecified format. + BulkDownloadFeedbackLabelsRequest_GcsDestination_FORMAT_UNSPECIFIED BulkDownloadFeedbackLabelsRequest_GcsDestination_Format = 0 + // CSV format. + // 1,000 labels are stored per CSV file by default. + BulkDownloadFeedbackLabelsRequest_GcsDestination_CSV BulkDownloadFeedbackLabelsRequest_GcsDestination_Format = 1 + // JSON format. + // 1 label stored per JSON file by default. + BulkDownloadFeedbackLabelsRequest_GcsDestination_JSON BulkDownloadFeedbackLabelsRequest_GcsDestination_Format = 2 +) + +// Enum value maps for BulkDownloadFeedbackLabelsRequest_GcsDestination_Format. +var ( + BulkDownloadFeedbackLabelsRequest_GcsDestination_Format_name = map[int32]string{ + 0: "FORMAT_UNSPECIFIED", + 1: "CSV", + 2: "JSON", + } + BulkDownloadFeedbackLabelsRequest_GcsDestination_Format_value = map[string]int32{ + "FORMAT_UNSPECIFIED": 0, + "CSV": 1, + "JSON": 2, + } +) + +func (x BulkDownloadFeedbackLabelsRequest_GcsDestination_Format) Enum() *BulkDownloadFeedbackLabelsRequest_GcsDestination_Format { + p := new(BulkDownloadFeedbackLabelsRequest_GcsDestination_Format) + *p = x + return p +} + +func (x BulkDownloadFeedbackLabelsRequest_GcsDestination_Format) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BulkDownloadFeedbackLabelsRequest_GcsDestination_Format) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_enumTypes[7].Descriptor() +} + +func (BulkDownloadFeedbackLabelsRequest_GcsDestination_Format) Type() protoreflect.EnumType { + return &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_enumTypes[7] +} + +func (x BulkDownloadFeedbackLabelsRequest_GcsDestination_Format) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BulkDownloadFeedbackLabelsRequest_GcsDestination_Format.Descriptor instead. +func (BulkDownloadFeedbackLabelsRequest_GcsDestination_Format) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{116, 0, 0} +} + // The request for calculating conversation statistics. type CalculateStatsRequest struct { state protoimpl.MessageState @@ -4273,18 +4591,24 @@ func (x *UpdateSettingsRequest) GetUpdateMask() *fieldmaskpb.FieldMask { return nil } -// The request to get location-level encryption specification. -type GetEncryptionSpecRequest struct { +// The request to create a analysis rule. +// analysis_rule_id will be generated by the server. +type CreateAnalysisRuleRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The name of the encryption spec resource to get. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Required. The parent resource of the analysis rule. Required. The location + // to create a analysis rule for. Format: `projects//locations/` or `projects//locations/` + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Required. The analysis rule resource to create. + AnalysisRule *AnalysisRule `protobuf:"bytes,2,opt,name=analysis_rule,json=analysisRule,proto3" json:"analysis_rule,omitempty"` } -func (x *GetEncryptionSpecRequest) Reset() { - *x = GetEncryptionSpecRequest{} +func (x *CreateAnalysisRuleRequest) Reset() { + *x = CreateAnalysisRuleRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4292,13 +4616,13 @@ func (x *GetEncryptionSpecRequest) Reset() { } } -func (x *GetEncryptionSpecRequest) String() string { +func (x *CreateAnalysisRuleRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetEncryptionSpecRequest) ProtoMessage() {} +func (*CreateAnalysisRuleRequest) ProtoMessage() {} -func (x *GetEncryptionSpecRequest) ProtoReflect() protoreflect.Message { +func (x *CreateAnalysisRuleRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4310,33 +4634,37 @@ func (x *GetEncryptionSpecRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetEncryptionSpecRequest.ProtoReflect.Descriptor instead. -func (*GetEncryptionSpecRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use CreateAnalysisRuleRequest.ProtoReflect.Descriptor instead. +func (*CreateAnalysisRuleRequest) Descriptor() ([]byte, []int) { return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{63} } -func (x *GetEncryptionSpecRequest) GetName() string { +func (x *CreateAnalysisRuleRequest) GetParent() string { if x != nil { - return x.Name + return x.Parent } return "" } -// The request to initialize a location-level encryption specification. -type InitializeEncryptionSpecRequest struct { +func (x *CreateAnalysisRuleRequest) GetAnalysisRule() *AnalysisRule { + if x != nil { + return x.AnalysisRule + } + return nil +} + +// The request for getting a analysis rule. +type GetAnalysisRuleRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The encryption spec used for CMEK encryption. It is required that - // the kms key is in the same region as the endpoint. The same key will be - // used for all provisioned resources, if encryption is available. If the - // kms_key_name is left empty, no encryption will be enforced. - EncryptionSpec *EncryptionSpec `protobuf:"bytes,1,opt,name=encryption_spec,json=encryptionSpec,proto3" json:"encryption_spec,omitempty"` + // Required. The name of the AnalysisRule to get. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *InitializeEncryptionSpecRequest) Reset() { - *x = InitializeEncryptionSpecRequest{} +func (x *GetAnalysisRuleRequest) Reset() { + *x = GetAnalysisRuleRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4344,13 +4672,13 @@ func (x *InitializeEncryptionSpecRequest) Reset() { } } -func (x *InitializeEncryptionSpecRequest) String() string { +func (x *GetAnalysisRuleRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*InitializeEncryptionSpecRequest) ProtoMessage() {} +func (*GetAnalysisRuleRequest) ProtoMessage() {} -func (x *InitializeEncryptionSpecRequest) ProtoReflect() protoreflect.Message { +func (x *GetAnalysisRuleRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4362,27 +4690,34 @@ func (x *InitializeEncryptionSpecRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use InitializeEncryptionSpecRequest.ProtoReflect.Descriptor instead. -func (*InitializeEncryptionSpecRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetAnalysisRuleRequest.ProtoReflect.Descriptor instead. +func (*GetAnalysisRuleRequest) Descriptor() ([]byte, []int) { return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{64} } -func (x *InitializeEncryptionSpecRequest) GetEncryptionSpec() *EncryptionSpec { +func (x *GetAnalysisRuleRequest) GetName() string { if x != nil { - return x.EncryptionSpec + return x.Name } - return nil + return "" } -// The response to initialize a location-level encryption specification. -type InitializeEncryptionSpecResponse struct { +// The request to update a analysis rule. +type UpdateAnalysisRuleRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Required. The new analysis rule. + AnalysisRule *AnalysisRule `protobuf:"bytes,1,opt,name=analysis_rule,json=analysisRule,proto3" json:"analysis_rule,omitempty"` + // Optional. The list of fields to be updated. + // If the update_mask is not provided, the update will be applied to all + // fields. + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` } -func (x *InitializeEncryptionSpecResponse) Reset() { - *x = InitializeEncryptionSpecResponse{} +func (x *UpdateAnalysisRuleRequest) Reset() { + *x = UpdateAnalysisRuleRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4390,13 +4725,13 @@ func (x *InitializeEncryptionSpecResponse) Reset() { } } -func (x *InitializeEncryptionSpecResponse) String() string { +func (x *UpdateAnalysisRuleRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*InitializeEncryptionSpecResponse) ProtoMessage() {} +func (*UpdateAnalysisRuleRequest) ProtoMessage() {} -func (x *InitializeEncryptionSpecResponse) ProtoReflect() protoreflect.Message { +func (x *UpdateAnalysisRuleRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4408,30 +4743,37 @@ func (x *InitializeEncryptionSpecResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use InitializeEncryptionSpecResponse.ProtoReflect.Descriptor instead. -func (*InitializeEncryptionSpecResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use UpdateAnalysisRuleRequest.ProtoReflect.Descriptor instead. +func (*UpdateAnalysisRuleRequest) Descriptor() ([]byte, []int) { return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{65} } -// Metadata for initializing a location-level encryption specification. -type InitializeEncryptionSpecMetadata struct { +func (x *UpdateAnalysisRuleRequest) GetAnalysisRule() *AnalysisRule { + if x != nil { + return x.AnalysisRule + } + return nil +} + +func (x *UpdateAnalysisRuleRequest) GetUpdateMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.UpdateMask + } + return nil +} + +// The request to delete a analysis rule. +type DeleteAnalysisRuleRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Output only. The time the operation was created. - CreateTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` - // Output only. The time the operation finished running. - EndTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` - // Output only. The original request for initialization. - Request *InitializeEncryptionSpecRequest `protobuf:"bytes,3,opt,name=request,proto3" json:"request,omitempty"` - // Partial errors during initialising operation that might cause the operation - // output to be incomplete. - PartialErrors []*status.Status `protobuf:"bytes,4,rep,name=partial_errors,json=partialErrors,proto3" json:"partial_errors,omitempty"` + // Required. The name of the analysis rule to delete. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *InitializeEncryptionSpecMetadata) Reset() { - *x = InitializeEncryptionSpecMetadata{} +func (x *DeleteAnalysisRuleRequest) Reset() { + *x = DeleteAnalysisRuleRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4439,13 +4781,13 @@ func (x *InitializeEncryptionSpecMetadata) Reset() { } } -func (x *InitializeEncryptionSpecMetadata) String() string { +func (x *DeleteAnalysisRuleRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*InitializeEncryptionSpecMetadata) ProtoMessage() {} +func (*DeleteAnalysisRuleRequest) ProtoMessage() {} -func (x *InitializeEncryptionSpecMetadata) ProtoReflect() protoreflect.Message { +func (x *DeleteAnalysisRuleRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4457,56 +4799,39 @@ func (x *InitializeEncryptionSpecMetadata) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use InitializeEncryptionSpecMetadata.ProtoReflect.Descriptor instead. -func (*InitializeEncryptionSpecMetadata) Descriptor() ([]byte, []int) { +// Deprecated: Use DeleteAnalysisRuleRequest.ProtoReflect.Descriptor instead. +func (*DeleteAnalysisRuleRequest) Descriptor() ([]byte, []int) { return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{66} } -func (x *InitializeEncryptionSpecMetadata) GetCreateTime() *timestamppb.Timestamp { - if x != nil { - return x.CreateTime - } - return nil -} - -func (x *InitializeEncryptionSpecMetadata) GetEndTime() *timestamppb.Timestamp { - if x != nil { - return x.EndTime - } - return nil -} - -func (x *InitializeEncryptionSpecMetadata) GetRequest() *InitializeEncryptionSpecRequest { - if x != nil { - return x.Request - } - return nil -} - -func (x *InitializeEncryptionSpecMetadata) GetPartialErrors() []*status.Status { +func (x *DeleteAnalysisRuleRequest) GetName() string { if x != nil { - return x.PartialErrors + return x.Name } - return nil + return "" } -// The request to create a view. -type CreateViewRequest struct { +// The request to list analysis rules. +type ListAnalysisRulesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The parent resource of the view. Required. The location to create - // a view for. - // Format: `projects//locations/` or - // `projects//locations/` + // Required. The parent resource of the analysis rules. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Required. The view resource to create. - View *View `protobuf:"bytes,2,opt,name=view,proto3" json:"view,omitempty"` + // Optional. The maximum number of analysis rule to return in the response. If + // this value is zero, the service will select a default size. A call may + // return fewer objects than requested. A non-empty `next_page_token` in the + // response indicates that more data is available. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. The value returned by the last `ListAnalysisRulesResponse`; + // indicates that this is a continuation of a prior `ListAnalysisRules` call + // and the system should return the next page of data. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` } -func (x *CreateViewRequest) Reset() { - *x = CreateViewRequest{} +func (x *ListAnalysisRulesRequest) Reset() { + *x = ListAnalysisRulesRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4514,13 +4839,13 @@ func (x *CreateViewRequest) Reset() { } } -func (x *CreateViewRequest) String() string { +func (x *ListAnalysisRulesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CreateViewRequest) ProtoMessage() {} +func (*ListAnalysisRulesRequest) ProtoMessage() {} -func (x *CreateViewRequest) ProtoReflect() protoreflect.Message { +func (x *ListAnalysisRulesRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4532,37 +4857,47 @@ func (x *CreateViewRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CreateViewRequest.ProtoReflect.Descriptor instead. -func (*CreateViewRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListAnalysisRulesRequest.ProtoReflect.Descriptor instead. +func (*ListAnalysisRulesRequest) Descriptor() ([]byte, []int) { return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{67} } -func (x *CreateViewRequest) GetParent() string { +func (x *ListAnalysisRulesRequest) GetParent() string { if x != nil { return x.Parent } return "" } -func (x *CreateViewRequest) GetView() *View { +func (x *ListAnalysisRulesRequest) GetPageSize() int32 { if x != nil { - return x.View + return x.PageSize } - return nil + return 0 } -// The request to get a view. -type GetViewRequest struct { - state protoimpl.MessageState +func (x *ListAnalysisRulesRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +// The response of listing views. +type ListAnalysisRulesResponse struct { + state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The name of the view to get. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // The analysis_rule that match the request. + AnalysisRules []*AnalysisRule `protobuf:"bytes,1,rep,name=analysis_rules,json=analysisRules,proto3" json:"analysis_rules,omitempty"` + // A token, which can be sent as `page_token` to retrieve the next page. + // If this field is omitted, there are no subsequent pages. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } -func (x *GetViewRequest) Reset() { - *x = GetViewRequest{} +func (x *ListAnalysisRulesResponse) Reset() { + *x = ListAnalysisRulesResponse{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4570,13 +4905,13 @@ func (x *GetViewRequest) Reset() { } } -func (x *GetViewRequest) String() string { +func (x *ListAnalysisRulesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetViewRequest) ProtoMessage() {} +func (*ListAnalysisRulesResponse) ProtoMessage() {} -func (x *GetViewRequest) ProtoReflect() protoreflect.Message { +func (x *ListAnalysisRulesResponse) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4588,39 +4923,37 @@ func (x *GetViewRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetViewRequest.ProtoReflect.Descriptor instead. -func (*GetViewRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListAnalysisRulesResponse.ProtoReflect.Descriptor instead. +func (*ListAnalysisRulesResponse) Descriptor() ([]byte, []int) { return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{68} } -func (x *GetViewRequest) GetName() string { +func (x *ListAnalysisRulesResponse) GetAnalysisRules() []*AnalysisRule { if x != nil { - return x.Name + return x.AnalysisRules + } + return nil +} + +func (x *ListAnalysisRulesResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken } return "" } -// The request to list views. -type ListViewsRequest struct { +// The request to get location-level encryption specification. +type GetEncryptionSpecRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The parent resource of the views. - Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // The maximum number of views to return in the response. If this - // value is zero, the service will select a default size. A call may return - // fewer objects than requested. A non-empty `next_page_token` in the response - // indicates that more data is available. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - // The value returned by the last `ListViewsResponse`; indicates - // that this is a continuation of a prior `ListViews` call and - // the system should return the next page of data. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Required. The name of the encryption spec resource to get. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *ListViewsRequest) Reset() { - *x = ListViewsRequest{} +func (x *GetEncryptionSpecRequest) Reset() { + *x = GetEncryptionSpecRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4628,13 +4961,13 @@ func (x *ListViewsRequest) Reset() { } } -func (x *ListViewsRequest) String() string { +func (x *GetEncryptionSpecRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListViewsRequest) ProtoMessage() {} +func (*GetEncryptionSpecRequest) ProtoMessage() {} -func (x *ListViewsRequest) ProtoReflect() protoreflect.Message { +func (x *GetEncryptionSpecRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4646,47 +4979,33 @@ func (x *ListViewsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListViewsRequest.ProtoReflect.Descriptor instead. -func (*ListViewsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetEncryptionSpecRequest.ProtoReflect.Descriptor instead. +func (*GetEncryptionSpecRequest) Descriptor() ([]byte, []int) { return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{69} } -func (x *ListViewsRequest) GetParent() string { - if x != nil { - return x.Parent - } - return "" -} - -func (x *ListViewsRequest) GetPageSize() int32 { - if x != nil { - return x.PageSize - } - return 0 -} - -func (x *ListViewsRequest) GetPageToken() string { +func (x *GetEncryptionSpecRequest) GetName() string { if x != nil { - return x.PageToken + return x.Name } return "" } -// The response of listing views. -type ListViewsResponse struct { +// The request to initialize a location-level encryption specification. +type InitializeEncryptionSpecRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The views that match the request. - Views []*View `protobuf:"bytes,1,rep,name=views,proto3" json:"views,omitempty"` - // A token, which can be sent as `page_token` to retrieve the next page. - // If this field is omitted, there are no subsequent pages. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + // Required. The encryption spec used for CMEK encryption. It is required that + // the kms key is in the same region as the endpoint. The same key will be + // used for all provisioned resources, if encryption is available. If the + // `kms_key_name` field is left empty, no encryption will be enforced. + EncryptionSpec *EncryptionSpec `protobuf:"bytes,1,opt,name=encryption_spec,json=encryptionSpec,proto3" json:"encryption_spec,omitempty"` } -func (x *ListViewsResponse) Reset() { - *x = ListViewsResponse{} +func (x *InitializeEncryptionSpecRequest) Reset() { + *x = InitializeEncryptionSpecRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4694,13 +5013,13 @@ func (x *ListViewsResponse) Reset() { } } -func (x *ListViewsResponse) String() string { +func (x *InitializeEncryptionSpecRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListViewsResponse) ProtoMessage() {} +func (*InitializeEncryptionSpecRequest) ProtoMessage() {} -func (x *ListViewsResponse) ProtoReflect() protoreflect.Message { +func (x *InitializeEncryptionSpecRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4712,39 +5031,27 @@ func (x *ListViewsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListViewsResponse.ProtoReflect.Descriptor instead. -func (*ListViewsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use InitializeEncryptionSpecRequest.ProtoReflect.Descriptor instead. +func (*InitializeEncryptionSpecRequest) Descriptor() ([]byte, []int) { return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{70} } -func (x *ListViewsResponse) GetViews() []*View { +func (x *InitializeEncryptionSpecRequest) GetEncryptionSpec() *EncryptionSpec { if x != nil { - return x.Views + return x.EncryptionSpec } return nil } -func (x *ListViewsResponse) GetNextPageToken() string { - if x != nil { - return x.NextPageToken - } - return "" -} - -// The request to update a view. -type UpdateViewRequest struct { +// The response to initialize a location-level encryption specification. +type InitializeEncryptionSpecResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // Required. The new view. - View *View `protobuf:"bytes,1,opt,name=view,proto3" json:"view,omitempty"` - // The list of fields to be updated. - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` } -func (x *UpdateViewRequest) Reset() { - *x = UpdateViewRequest{} +func (x *InitializeEncryptionSpecResponse) Reset() { + *x = InitializeEncryptionSpecResponse{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4752,13 +5059,13 @@ func (x *UpdateViewRequest) Reset() { } } -func (x *UpdateViewRequest) String() string { +func (x *InitializeEncryptionSpecResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*UpdateViewRequest) ProtoMessage() {} +func (*InitializeEncryptionSpecResponse) ProtoMessage() {} -func (x *UpdateViewRequest) ProtoReflect() protoreflect.Message { +func (x *InitializeEncryptionSpecResponse) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4770,37 +5077,30 @@ func (x *UpdateViewRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateViewRequest.ProtoReflect.Descriptor instead. -func (*UpdateViewRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use InitializeEncryptionSpecResponse.ProtoReflect.Descriptor instead. +func (*InitializeEncryptionSpecResponse) Descriptor() ([]byte, []int) { return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{71} } -func (x *UpdateViewRequest) GetView() *View { - if x != nil { - return x.View - } - return nil -} - -func (x *UpdateViewRequest) GetUpdateMask() *fieldmaskpb.FieldMask { - if x != nil { - return x.UpdateMask - } - return nil -} - -// The request to delete a view. -type DeleteViewRequest struct { +// Metadata for initializing a location-level encryption specification. +type InitializeEncryptionSpecMetadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The name of the view to delete. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Output only. The time the operation was created. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Output only. The time the operation finished running. + EndTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + // Output only. The original request for initialization. + Request *InitializeEncryptionSpecRequest `protobuf:"bytes,3,opt,name=request,proto3" json:"request,omitempty"` + // Partial errors during initializing operation that might cause the operation + // output to be incomplete. + PartialErrors []*status.Status `protobuf:"bytes,4,rep,name=partial_errors,json=partialErrors,proto3" json:"partial_errors,omitempty"` } -func (x *DeleteViewRequest) Reset() { - *x = DeleteViewRequest{} +func (x *InitializeEncryptionSpecMetadata) Reset() { + *x = InitializeEncryptionSpecMetadata{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4808,13 +5108,13 @@ func (x *DeleteViewRequest) Reset() { } } -func (x *DeleteViewRequest) String() string { +func (x *InitializeEncryptionSpecMetadata) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteViewRequest) ProtoMessage() {} +func (*InitializeEncryptionSpecMetadata) ProtoMessage() {} -func (x *DeleteViewRequest) ProtoReflect() protoreflect.Message { +func (x *InitializeEncryptionSpecMetadata) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4826,34 +5126,56 @@ func (x *DeleteViewRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteViewRequest.ProtoReflect.Descriptor instead. -func (*DeleteViewRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use InitializeEncryptionSpecMetadata.ProtoReflect.Descriptor instead. +func (*InitializeEncryptionSpecMetadata) Descriptor() ([]byte, []int) { return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{72} } -func (x *DeleteViewRequest) GetName() string { +func (x *InitializeEncryptionSpecMetadata) GetCreateTime() *timestamppb.Timestamp { if x != nil { - return x.Name + return x.CreateTime } - return "" + return nil } -// A time series representing conversations over time. -type CalculateStatsResponse_TimeSeries struct { +func (x *InitializeEncryptionSpecMetadata) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +func (x *InitializeEncryptionSpecMetadata) GetRequest() *InitializeEncryptionSpecRequest { + if x != nil { + return x.Request + } + return nil +} + +func (x *InitializeEncryptionSpecMetadata) GetPartialErrors() []*status.Status { + if x != nil { + return x.PartialErrors + } + return nil +} + +// The request to create a view. +type CreateViewRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The duration of each interval. - IntervalDuration *durationpb.Duration `protobuf:"bytes,1,opt,name=interval_duration,json=intervalDuration,proto3" json:"interval_duration,omitempty"` - // An ordered list of intervals from earliest to latest, where each interval - // represents the number of conversations that transpired during the time - // window. - Points []*CalculateStatsResponse_TimeSeries_Interval `protobuf:"bytes,2,rep,name=points,proto3" json:"points,omitempty"` + // Required. The parent resource of the view. Required. The location to create + // a view for. + // Format: `projects//locations/` or + // `projects//locations/` + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Required. The view resource to create. + View *View `protobuf:"bytes,2,opt,name=view,proto3" json:"view,omitempty"` } -func (x *CalculateStatsResponse_TimeSeries) Reset() { - *x = CalculateStatsResponse_TimeSeries{} +func (x *CreateViewRequest) Reset() { + *x = CreateViewRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4861,13 +5183,13 @@ func (x *CalculateStatsResponse_TimeSeries) Reset() { } } -func (x *CalculateStatsResponse_TimeSeries) String() string { +func (x *CreateViewRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CalculateStatsResponse_TimeSeries) ProtoMessage() {} +func (*CreateViewRequest) ProtoMessage() {} -func (x *CalculateStatsResponse_TimeSeries) ProtoReflect() protoreflect.Message { +func (x *CreateViewRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4879,54 +5201,52 @@ func (x *CalculateStatsResponse_TimeSeries) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use CalculateStatsResponse_TimeSeries.ProtoReflect.Descriptor instead. -func (*CalculateStatsResponse_TimeSeries) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{1, 0} +// Deprecated: Use CreateViewRequest.ProtoReflect.Descriptor instead. +func (*CreateViewRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{73} } -func (x *CalculateStatsResponse_TimeSeries) GetIntervalDuration() *durationpb.Duration { +func (x *CreateViewRequest) GetParent() string { if x != nil { - return x.IntervalDuration + return x.Parent } - return nil + return "" } -func (x *CalculateStatsResponse_TimeSeries) GetPoints() []*CalculateStatsResponse_TimeSeries_Interval { +func (x *CreateViewRequest) GetView() *View { if x != nil { - return x.Points + return x.View } return nil } -// A single interval in a time series. -type CalculateStatsResponse_TimeSeries_Interval struct { +// The request to get a view. +type GetViewRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The start time of this interval. - StartTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` - // The number of conversations created in this interval. - ConversationCount int32 `protobuf:"varint,2,opt,name=conversation_count,json=conversationCount,proto3" json:"conversation_count,omitempty"` + // Required. The name of the view to get. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *CalculateStatsResponse_TimeSeries_Interval) Reset() { - *x = CalculateStatsResponse_TimeSeries_Interval{} +func (x *GetViewRequest) Reset() { + *x = GetViewRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[78] + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CalculateStatsResponse_TimeSeries_Interval) String() string { +func (x *GetViewRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CalculateStatsResponse_TimeSeries_Interval) ProtoMessage() {} +func (*GetViewRequest) ProtoMessage() {} -func (x *CalculateStatsResponse_TimeSeries_Interval) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[78] +func (x *GetViewRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4937,70 +5257,54 @@ func (x *CalculateStatsResponse_TimeSeries_Interval) ProtoReflect() protoreflect return mi.MessageOf(x) } -// Deprecated: Use CalculateStatsResponse_TimeSeries_Interval.ProtoReflect.Descriptor instead. -func (*CalculateStatsResponse_TimeSeries_Interval) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{1, 0, 0} -} - -func (x *CalculateStatsResponse_TimeSeries_Interval) GetStartTime() *timestamppb.Timestamp { - if x != nil { - return x.StartTime - } - return nil +// Deprecated: Use GetViewRequest.ProtoReflect.Descriptor instead. +func (*GetViewRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{74} } -func (x *CalculateStatsResponse_TimeSeries_Interval) GetConversationCount() int32 { +func (x *GetViewRequest) GetName() string { if x != nil { - return x.ConversationCount + return x.Name } - return 0 + return "" } -// Configuration for Cloud Storage bucket sources. -type IngestConversationsRequest_GcsSource struct { +// The request to list views. +type ListViewsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The Cloud Storage bucket containing source objects. - BucketUri string `protobuf:"bytes,1,opt,name=bucket_uri,json=bucketUri,proto3" json:"bucket_uri,omitempty"` - // Optional. Specifies the type of the objects in `bucket_uri`. - BucketObjectType IngestConversationsRequest_GcsSource_BucketObjectType `protobuf:"varint,2,opt,name=bucket_object_type,json=bucketObjectType,proto3,enum=google.cloud.contactcenterinsights.v1.IngestConversationsRequest_GcsSource_BucketObjectType" json:"bucket_object_type,omitempty"` - // Optional. The Cloud Storage path to the conversation metadata. Note that: - // [1] Metadata files are expected to be in JSON format. - // [2] Metadata and source files (transcripts or audio) must be in - // - // separate buckets. - // - // [3] A source file and its corresponding metadata file must share the same - // name to - // - // be properly ingested, E.g. `gs://bucket/audio/conversation1.mp3` and - // `gs://bucket/metadata/conversation1.json`. - MetadataBucketUri *string `protobuf:"bytes,3,opt,name=metadata_bucket_uri,json=metadataBucketUri,proto3,oneof" json:"metadata_bucket_uri,omitempty"` - // Optional. Custom keys to extract as conversation labels from metadata - // files in `metadata_bucket_uri`. Keys not included in this field will be - // ignored. Note that there is a limit of 20 labels per conversation. - CustomMetadataKeys []string `protobuf:"bytes,12,rep,name=custom_metadata_keys,json=customMetadataKeys,proto3" json:"custom_metadata_keys,omitempty"` + // Required. The parent resource of the views. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // The maximum number of views to return in the response. If this + // value is zero, the service will select a default size. A call may return + // fewer objects than requested. A non-empty `next_page_token` in the response + // indicates that more data is available. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // The value returned by the last `ListViewsResponse`; indicates + // that this is a continuation of a prior `ListViews` call and + // the system should return the next page of data. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` } -func (x *IngestConversationsRequest_GcsSource) Reset() { - *x = IngestConversationsRequest_GcsSource{} +func (x *ListViewsRequest) Reset() { + *x = ListViewsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[79] + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IngestConversationsRequest_GcsSource) String() string { +func (x *ListViewsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IngestConversationsRequest_GcsSource) ProtoMessage() {} +func (*ListViewsRequest) ProtoMessage() {} -func (x *IngestConversationsRequest_GcsSource) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[79] +func (x *ListViewsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5011,66 +5315,62 @@ func (x *IngestConversationsRequest_GcsSource) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use IngestConversationsRequest_GcsSource.ProtoReflect.Descriptor instead. -func (*IngestConversationsRequest_GcsSource) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{11, 0} +// Deprecated: Use ListViewsRequest.ProtoReflect.Descriptor instead. +func (*ListViewsRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{75} } -func (x *IngestConversationsRequest_GcsSource) GetBucketUri() string { +func (x *ListViewsRequest) GetParent() string { if x != nil { - return x.BucketUri + return x.Parent } return "" } -func (x *IngestConversationsRequest_GcsSource) GetBucketObjectType() IngestConversationsRequest_GcsSource_BucketObjectType { +func (x *ListViewsRequest) GetPageSize() int32 { if x != nil { - return x.BucketObjectType - } - return IngestConversationsRequest_GcsSource_BUCKET_OBJECT_TYPE_UNSPECIFIED -} - -func (x *IngestConversationsRequest_GcsSource) GetMetadataBucketUri() string { - if x != nil && x.MetadataBucketUri != nil { - return *x.MetadataBucketUri + return x.PageSize } - return "" + return 0 } -func (x *IngestConversationsRequest_GcsSource) GetCustomMetadataKeys() []string { +func (x *ListViewsRequest) GetPageToken() string { if x != nil { - return x.CustomMetadataKeys + return x.PageToken } - return nil + return "" } -// Configuration for processing transcript objects. -type IngestConversationsRequest_TranscriptObjectConfig struct { +// The response of listing views. +type ListViewsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. The medium transcript objects represent. - Medium Conversation_Medium `protobuf:"varint,1,opt,name=medium,proto3,enum=google.cloud.contactcenterinsights.v1.Conversation_Medium" json:"medium,omitempty"` + // The views that match the request. + Views []*View `protobuf:"bytes,1,rep,name=views,proto3" json:"views,omitempty"` + // A token, which can be sent as `page_token` to retrieve the next page. + // If this field is omitted, there are no subsequent pages. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } -func (x *IngestConversationsRequest_TranscriptObjectConfig) Reset() { - *x = IngestConversationsRequest_TranscriptObjectConfig{} +func (x *ListViewsResponse) Reset() { + *x = ListViewsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[80] + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IngestConversationsRequest_TranscriptObjectConfig) String() string { +func (x *ListViewsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IngestConversationsRequest_TranscriptObjectConfig) ProtoMessage() {} +func (*ListViewsResponse) ProtoMessage() {} -func (x *IngestConversationsRequest_TranscriptObjectConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[80] +func (x *ListViewsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5081,56 +5381,54 @@ func (x *IngestConversationsRequest_TranscriptObjectConfig) ProtoReflect() proto return mi.MessageOf(x) } -// Deprecated: Use IngestConversationsRequest_TranscriptObjectConfig.ProtoReflect.Descriptor instead. -func (*IngestConversationsRequest_TranscriptObjectConfig) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{11, 1} +// Deprecated: Use ListViewsResponse.ProtoReflect.Descriptor instead. +func (*ListViewsResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{76} } -func (x *IngestConversationsRequest_TranscriptObjectConfig) GetMedium() Conversation_Medium { +func (x *ListViewsResponse) GetViews() []*View { if x != nil { - return x.Medium + return x.Views } - return Conversation_MEDIUM_UNSPECIFIED + return nil } -// Configuration that applies to all conversations. -type IngestConversationsRequest_ConversationConfig struct { +func (x *ListViewsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// The request to update a view. +type UpdateViewRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Optional. An opaque, user-specified string representing a human agent who - // handled all conversations in the import. Note that this will be - // overridden if per-conversation metadata is provided through the - // `metadata_bucket_uri`. - AgentId string `protobuf:"bytes,1,opt,name=agent_id,json=agentId,proto3" json:"agent_id,omitempty"` - // Optional. Indicates which of the channels, 1 or 2, contains the agent. - // Note that this must be set for conversations to be properly displayed and - // analyzed. - AgentChannel int32 `protobuf:"varint,2,opt,name=agent_channel,json=agentChannel,proto3" json:"agent_channel,omitempty"` - // Optional. Indicates which of the channels, 1 or 2, contains the agent. - // Note that this must be set for conversations to be properly displayed and - // analyzed. - CustomerChannel int32 `protobuf:"varint,3,opt,name=customer_channel,json=customerChannel,proto3" json:"customer_channel,omitempty"` + // Required. The new view. + View *View `protobuf:"bytes,1,opt,name=view,proto3" json:"view,omitempty"` + // The list of fields to be updated. + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` } -func (x *IngestConversationsRequest_ConversationConfig) Reset() { - *x = IngestConversationsRequest_ConversationConfig{} +func (x *UpdateViewRequest) Reset() { + *x = UpdateViewRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[81] + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IngestConversationsRequest_ConversationConfig) String() string { +func (x *UpdateViewRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IngestConversationsRequest_ConversationConfig) ProtoMessage() {} +func (*UpdateViewRequest) ProtoMessage() {} -func (x *IngestConversationsRequest_ConversationConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[81] +func (x *UpdateViewRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5141,68 +5439,52 @@ func (x *IngestConversationsRequest_ConversationConfig) ProtoReflect() protorefl return mi.MessageOf(x) } -// Deprecated: Use IngestConversationsRequest_ConversationConfig.ProtoReflect.Descriptor instead. -func (*IngestConversationsRequest_ConversationConfig) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{11, 2} -} - -func (x *IngestConversationsRequest_ConversationConfig) GetAgentId() string { - if x != nil { - return x.AgentId - } - return "" +// Deprecated: Use UpdateViewRequest.ProtoReflect.Descriptor instead. +func (*UpdateViewRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{77} } -func (x *IngestConversationsRequest_ConversationConfig) GetAgentChannel() int32 { +func (x *UpdateViewRequest) GetView() *View { if x != nil { - return x.AgentChannel + return x.View } - return 0 + return nil } -func (x *IngestConversationsRequest_ConversationConfig) GetCustomerChannel() int32 { +func (x *UpdateViewRequest) GetUpdateMask() *fieldmaskpb.FieldMask { if x != nil { - return x.CustomerChannel + return x.UpdateMask } - return 0 + return nil } -// Statistics for IngestConversations operation. -type IngestConversationsMetadata_IngestConversationsStats struct { +// The request to delete a view. +type DeleteViewRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Output only. The number of objects processed during the ingest operation. - ProcessedObjectCount int32 `protobuf:"varint,1,opt,name=processed_object_count,json=processedObjectCount,proto3" json:"processed_object_count,omitempty"` - // Output only. The number of objects skipped because another conversation - // with the same transcript uri had already been ingested. - DuplicatesSkippedCount int32 `protobuf:"varint,2,opt,name=duplicates_skipped_count,json=duplicatesSkippedCount,proto3" json:"duplicates_skipped_count,omitempty"` - // Output only. The number of new conversations added during this ingest - // operation. - SuccessfulIngestCount int32 `protobuf:"varint,3,opt,name=successful_ingest_count,json=successfulIngestCount,proto3" json:"successful_ingest_count,omitempty"` - // Output only. The number of objects which were unable to be ingested due - // to errors. The errors are populated in the partial_errors field. - FailedIngestCount int32 `protobuf:"varint,4,opt,name=failed_ingest_count,json=failedIngestCount,proto3" json:"failed_ingest_count,omitempty"` + // Required. The name of the view to delete. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *IngestConversationsMetadata_IngestConversationsStats) Reset() { - *x = IngestConversationsMetadata_IngestConversationsStats{} +func (x *DeleteViewRequest) Reset() { + *x = DeleteViewRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[82] + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IngestConversationsMetadata_IngestConversationsStats) String() string { +func (x *DeleteViewRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IngestConversationsMetadata_IngestConversationsStats) ProtoMessage() {} +func (*DeleteViewRequest) ProtoMessage() {} -func (x *IngestConversationsMetadata_IngestConversationsStats) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[82] +func (x *DeleteViewRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5213,76 +5495,194 @@ func (x *IngestConversationsMetadata_IngestConversationsStats) ProtoReflect() pr return mi.MessageOf(x) } -// Deprecated: Use IngestConversationsMetadata_IngestConversationsStats.ProtoReflect.Descriptor instead. -func (*IngestConversationsMetadata_IngestConversationsStats) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{12, 0} +// Deprecated: Use DeleteViewRequest.ProtoReflect.Descriptor instead. +func (*DeleteViewRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{78} } -func (x *IngestConversationsMetadata_IngestConversationsStats) GetProcessedObjectCount() int32 { +func (x *DeleteViewRequest) GetName() string { if x != nil { - return x.ProcessedObjectCount + return x.Name } - return 0 + return "" } -func (x *IngestConversationsMetadata_IngestConversationsStats) GetDuplicatesSkippedCount() int32 { - if x != nil { - return x.DuplicatesSkippedCount - } - return 0 -} +// A dimension determines the grouping key for the query. In SQL terms, these +// would be part of both the "SELECT" and "GROUP BY" clauses. +type Dimension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *IngestConversationsMetadata_IngestConversationsStats) GetSuccessfulIngestCount() int32 { - if x != nil { - return x.SuccessfulIngestCount + // Output-only metadata about the dimension. + // + // Types that are assignable to DimensionMetadata: + // + // *Dimension_IssueDimensionMetadata_ + // *Dimension_AgentDimensionMetadata_ + // *Dimension_QaQuestionDimensionMetadata_ + // *Dimension_QaQuestionAnswerDimensionMetadata_ + DimensionMetadata isDimension_DimensionMetadata `protobuf_oneof:"dimension_metadata"` + // The key of the dimension. + DimensionKey Dimension_DimensionKey `protobuf:"varint,1,opt,name=dimension_key,json=dimensionKey,proto3,enum=google.cloud.contactcenterinsights.v1.Dimension_DimensionKey" json:"dimension_key,omitempty"` +} + +func (x *Dimension) Reset() { + *x = Dimension{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[79] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *IngestConversationsMetadata_IngestConversationsStats) GetFailedIngestCount() int32 { +func (x *Dimension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Dimension) ProtoMessage() {} + +func (x *Dimension) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[79] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Dimension.ProtoReflect.Descriptor instead. +func (*Dimension) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{79} +} + +func (m *Dimension) GetDimensionMetadata() isDimension_DimensionMetadata { + if m != nil { + return m.DimensionMetadata + } + return nil +} + +func (x *Dimension) GetIssueDimensionMetadata() *Dimension_IssueDimensionMetadata { + if x, ok := x.GetDimensionMetadata().(*Dimension_IssueDimensionMetadata_); ok { + return x.IssueDimensionMetadata + } + return nil +} + +func (x *Dimension) GetAgentDimensionMetadata() *Dimension_AgentDimensionMetadata { + if x, ok := x.GetDimensionMetadata().(*Dimension_AgentDimensionMetadata_); ok { + return x.AgentDimensionMetadata + } + return nil +} + +func (x *Dimension) GetQaQuestionDimensionMetadata() *Dimension_QaQuestionDimensionMetadata { + if x, ok := x.GetDimensionMetadata().(*Dimension_QaQuestionDimensionMetadata_); ok { + return x.QaQuestionDimensionMetadata + } + return nil +} + +func (x *Dimension) GetQaQuestionAnswerDimensionMetadata() *Dimension_QaQuestionAnswerDimensionMetadata { + if x, ok := x.GetDimensionMetadata().(*Dimension_QaQuestionAnswerDimensionMetadata_); ok { + return x.QaQuestionAnswerDimensionMetadata + } + return nil +} + +func (x *Dimension) GetDimensionKey() Dimension_DimensionKey { if x != nil { - return x.FailedIngestCount + return x.DimensionKey } - return 0 + return Dimension_DIMENSION_KEY_UNSPECIFIED } -// A BigQuery Table Reference. -type ExportInsightsDataRequest_BigQueryDestination struct { +type isDimension_DimensionMetadata interface { + isDimension_DimensionMetadata() +} + +type Dimension_IssueDimensionMetadata_ struct { + // Output only. Metadata about the issue dimension. + IssueDimensionMetadata *Dimension_IssueDimensionMetadata `protobuf:"bytes,2,opt,name=issue_dimension_metadata,json=issueDimensionMetadata,proto3,oneof"` +} + +type Dimension_AgentDimensionMetadata_ struct { + // Output only. Metadata about the agent dimension. + AgentDimensionMetadata *Dimension_AgentDimensionMetadata `protobuf:"bytes,3,opt,name=agent_dimension_metadata,json=agentDimensionMetadata,proto3,oneof"` +} + +type Dimension_QaQuestionDimensionMetadata_ struct { + // Output only. Metadata about the QA question dimension. + QaQuestionDimensionMetadata *Dimension_QaQuestionDimensionMetadata `protobuf:"bytes,4,opt,name=qa_question_dimension_metadata,json=qaQuestionDimensionMetadata,proto3,oneof"` +} + +type Dimension_QaQuestionAnswerDimensionMetadata_ struct { + // Output only. Metadata about the QA question-answer dimension. + QaQuestionAnswerDimensionMetadata *Dimension_QaQuestionAnswerDimensionMetadata `protobuf:"bytes,5,opt,name=qa_question_answer_dimension_metadata,json=qaQuestionAnswerDimensionMetadata,proto3,oneof"` +} + +func (*Dimension_IssueDimensionMetadata_) isDimension_DimensionMetadata() {} + +func (*Dimension_AgentDimensionMetadata_) isDimension_DimensionMetadata() {} + +func (*Dimension_QaQuestionDimensionMetadata_) isDimension_DimensionMetadata() {} + +func (*Dimension_QaQuestionAnswerDimensionMetadata_) isDimension_DimensionMetadata() {} + +// The request for querying metrics. +type QueryMetricsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // A project ID or number. If specified, then export will attempt to - // write data to this project instead of the resource project. Otherwise, - // the resource project will be used. - ProjectId string `protobuf:"bytes,3,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` - // Required. The name of the BigQuery dataset that the snapshot result - // should be exported to. If this dataset does not exist, the export call - // returns an INVALID_ARGUMENT error. - Dataset string `protobuf:"bytes,1,opt,name=dataset,proto3" json:"dataset,omitempty"` - // The BigQuery table name to which the insights data should be written. - // If this table does not exist, the export call returns an INVALID_ARGUMENT - // error. - Table string `protobuf:"bytes,2,opt,name=table,proto3" json:"table,omitempty"` + // Required. The location of the data. + // "projects/{project}/locations/{location}" + Location string `protobuf:"bytes,1,opt,name=location,proto3" json:"location,omitempty"` + // Required. Filter to select a subset of conversations to compute the + // metrics. Must specify a window of the conversation create time to compute + // the metrics. The returned metrics will be from the range [DATE(starting + // create time), DATE(ending create time)). + Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` + // The time granularity of each data point in the time series. + // Defaults to NONE if this field is unspecified. + TimeGranularity QueryMetricsRequest_TimeGranularity `protobuf:"varint,3,opt,name=time_granularity,json=timeGranularity,proto3,enum=google.cloud.contactcenterinsights.v1.QueryMetricsRequest_TimeGranularity" json:"time_granularity,omitempty"` + // The dimensions that determine the grouping key for the query. Defaults to + // no dimension if this field is unspecified. If a dimension is specified, + // its key must also be specified. Each dimension's key must be unique. + // + // If a time granularity is also specified, metric values in the dimension + // will be bucketed by this granularity. + // + // Up to one dimension is supported for now. + Dimensions []*Dimension `protobuf:"bytes,4,rep,name=dimensions,proto3" json:"dimensions,omitempty"` + // Measures to return. Defaults to all measures if this field is unspecified. + // A valid mask should traverse from the `measure` field from the response. + // For example, a path from a measure mask to get the conversation count is + // "conversation_measure.count". + MeasureMask *fieldmaskpb.FieldMask `protobuf:"bytes,5,opt,name=measure_mask,json=measureMask,proto3" json:"measure_mask,omitempty"` } -func (x *ExportInsightsDataRequest_BigQueryDestination) Reset() { - *x = ExportInsightsDataRequest_BigQueryDestination{} +func (x *QueryMetricsRequest) Reset() { + *x = QueryMetricsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[83] + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ExportInsightsDataRequest_BigQueryDestination) String() string { +func (x *QueryMetricsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExportInsightsDataRequest_BigQueryDestination) ProtoMessage() {} +func (*QueryMetricsRequest) ProtoMessage() {} -func (x *ExportInsightsDataRequest_BigQueryDestination) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[83] +func (x *QueryMetricsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5293,59 +5693,203 @@ func (x *ExportInsightsDataRequest_BigQueryDestination) ProtoReflect() protorefl return mi.MessageOf(x) } -// Deprecated: Use ExportInsightsDataRequest_BigQueryDestination.ProtoReflect.Descriptor instead. -func (*ExportInsightsDataRequest_BigQueryDestination) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{25, 0} +// Deprecated: Use QueryMetricsRequest.ProtoReflect.Descriptor instead. +func (*QueryMetricsRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{80} } -func (x *ExportInsightsDataRequest_BigQueryDestination) GetProjectId() string { +func (x *QueryMetricsRequest) GetLocation() string { if x != nil { - return x.ProjectId + return x.Location } return "" } -func (x *ExportInsightsDataRequest_BigQueryDestination) GetDataset() string { +func (x *QueryMetricsRequest) GetFilter() string { if x != nil { - return x.Dataset + return x.Filter } return "" } -func (x *ExportInsightsDataRequest_BigQueryDestination) GetTable() string { +func (x *QueryMetricsRequest) GetTimeGranularity() QueryMetricsRequest_TimeGranularity { if x != nil { - return x.Table + return x.TimeGranularity + } + return QueryMetricsRequest_TIME_GRANULARITY_UNSPECIFIED +} + +func (x *QueryMetricsRequest) GetDimensions() []*Dimension { + if x != nil { + return x.Dimensions + } + return nil +} + +func (x *QueryMetricsRequest) GetMeasureMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.MeasureMask + } + return nil +} + +// The response for querying metrics. +type QueryMetricsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The location of the data. + // "projects/{project}/locations/{location}" + Location string `protobuf:"bytes,1,opt,name=location,proto3" json:"location,omitempty"` + // The metrics last update time. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + // A slice contains a total and (if the request specified a time granularity) + // a time series of metric values. Each slice contains a unique combination of + // the cardinality of dimensions from the request. + Slices []*QueryMetricsResponse_Slice `protobuf:"bytes,2,rep,name=slices,proto3" json:"slices,omitempty"` + // The macro average slice contains aggregated averages across the selected + // dimension. i.e. if group_by agent is specified this field will contain the + // average across all agents. + // This field is only populated if the request specifies a Dimension. + MacroAverageSlice *QueryMetricsResponse_Slice `protobuf:"bytes,4,opt,name=macro_average_slice,json=macroAverageSlice,proto3,oneof" json:"macro_average_slice,omitempty"` +} + +func (x *QueryMetricsResponse) Reset() { + *x = QueryMetricsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[81] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryMetricsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryMetricsResponse) ProtoMessage() {} + +func (x *QueryMetricsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[81] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QueryMetricsResponse.ProtoReflect.Descriptor instead. +func (*QueryMetricsResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{81} +} + +func (x *QueryMetricsResponse) GetLocation() string { + if x != nil { + return x.Location } return "" } -// Google Cloud Storage Object URI to save the issue model to. -type ExportIssueModelRequest_GcsDestination struct { +func (x *QueryMetricsResponse) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +func (x *QueryMetricsResponse) GetSlices() []*QueryMetricsResponse_Slice { + if x != nil { + return x.Slices + } + return nil +} + +func (x *QueryMetricsResponse) GetMacroAverageSlice() *QueryMetricsResponse_Slice { + if x != nil { + return x.MacroAverageSlice + } + return nil +} + +// The metadata from querying metrics. +type QueryMetricsMetadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields +} - // Required. Format: `gs:///` - ObjectUri string `protobuf:"bytes,1,opt,name=object_uri,json=objectUri,proto3" json:"object_uri,omitempty"` +func (x *QueryMetricsMetadata) Reset() { + *x = QueryMetricsMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[82] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (x *ExportIssueModelRequest_GcsDestination) Reset() { - *x = ExportIssueModelRequest_GcsDestination{} +func (x *QueryMetricsMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryMetricsMetadata) ProtoMessage() {} + +func (x *QueryMetricsMetadata) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[82] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QueryMetricsMetadata.ProtoReflect.Descriptor instead. +func (*QueryMetricsMetadata) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{82} +} + +// The request for creating a QaQuestion. +type CreateQaQuestionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent resource of the QaQuestion. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Required. The QaQuestion to create. + QaQuestion *QaQuestion `protobuf:"bytes,2,opt,name=qa_question,json=qaQuestion,proto3" json:"qa_question,omitempty"` + // Optional. A unique ID for the new question. This ID will become the final + // component of the question's resource name. If no ID is specified, a + // server-generated ID will be used. + // + // This value should be 4-64 characters and must match the regular + // expression `^[a-z0-9-]{4,64}$`. Valid characters are `[a-z][0-9]-`. + QaQuestionId string `protobuf:"bytes,3,opt,name=qa_question_id,json=qaQuestionId,proto3" json:"qa_question_id,omitempty"` +} + +func (x *CreateQaQuestionRequest) Reset() { + *x = CreateQaQuestionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[84] + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ExportIssueModelRequest_GcsDestination) String() string { +func (x *CreateQaQuestionRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExportIssueModelRequest_GcsDestination) ProtoMessage() {} +func (*CreateQaQuestionRequest) ProtoMessage() {} -func (x *ExportIssueModelRequest_GcsDestination) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[84] +func (x *CreateQaQuestionRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5356,45 +5900,59 @@ func (x *ExportIssueModelRequest_GcsDestination) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use ExportIssueModelRequest_GcsDestination.ProtoReflect.Descriptor instead. -func (*ExportIssueModelRequest_GcsDestination) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{42, 0} +// Deprecated: Use CreateQaQuestionRequest.ProtoReflect.Descriptor instead. +func (*CreateQaQuestionRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{83} } -func (x *ExportIssueModelRequest_GcsDestination) GetObjectUri() string { +func (x *CreateQaQuestionRequest) GetParent() string { if x != nil { - return x.ObjectUri + return x.Parent } return "" } -// Google Cloud Storage Object URI to get the issue model file from. -type ImportIssueModelRequest_GcsSource struct { +func (x *CreateQaQuestionRequest) GetQaQuestion() *QaQuestion { + if x != nil { + return x.QaQuestion + } + return nil +} + +func (x *CreateQaQuestionRequest) GetQaQuestionId() string { + if x != nil { + return x.QaQuestionId + } + return "" +} + +// The request for a QaQuestion. +type GetQaQuestionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Format: `gs:///` - ObjectUri string `protobuf:"bytes,1,opt,name=object_uri,json=objectUri,proto3" json:"object_uri,omitempty"` + // Required. The name of the QaQuestion to get. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *ImportIssueModelRequest_GcsSource) Reset() { - *x = ImportIssueModelRequest_GcsSource{} +func (x *GetQaQuestionRequest) Reset() { + *x = GetQaQuestionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[85] + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ImportIssueModelRequest_GcsSource) String() string { +func (x *GetQaQuestionRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ImportIssueModelRequest_GcsSource) ProtoMessage() {} +func (*GetQaQuestionRequest) ProtoMessage() {} -func (x *ImportIssueModelRequest_GcsSource) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[85] +func (x *GetQaQuestionRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5405,26 +5963,4037 @@ func (x *ImportIssueModelRequest_GcsSource) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ImportIssueModelRequest_GcsSource.ProtoReflect.Descriptor instead. -func (*ImportIssueModelRequest_GcsSource) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{45, 0} +// Deprecated: Use GetQaQuestionRequest.ProtoReflect.Descriptor instead. +func (*GetQaQuestionRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{84} } -func (x *ImportIssueModelRequest_GcsSource) GetObjectUri() string { +func (x *GetQaQuestionRequest) GetName() string { if x != nil { - return x.ObjectUri + return x.Name } return "" } -var File_google_cloud_contactcenterinsights_v1_contact_center_insights_proto protoreflect.FileDescriptor +// Request to list QaQuestions. +type ListQaQuestionsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -var file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDesc = []byte{ - 0x0a, 0x43, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x25, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + // Required. The parent resource of the questions. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. The maximum number of questions to return in the response. If the + // value is zero, the service will select a default size. A call might return + // fewer objects than requested. A non-empty `next_page_token` in the response + // indicates that more data is available. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. The value returned by the last `ListQaQuestionsResponse`. This + // value indicates that this is a continuation of a prior `ListQaQuestions` + // call and that the system should return the next page of data. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` +} + +func (x *ListQaQuestionsRequest) Reset() { + *x = ListQaQuestionsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[85] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListQaQuestionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListQaQuestionsRequest) ProtoMessage() {} + +func (x *ListQaQuestionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[85] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListQaQuestionsRequest.ProtoReflect.Descriptor instead. +func (*ListQaQuestionsRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{85} +} + +func (x *ListQaQuestionsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListQaQuestionsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListQaQuestionsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +// The response from a ListQaQuestions request. +type ListQaQuestionsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The QaQuestions under the parent. + QaQuestions []*QaQuestion `protobuf:"bytes,1,rep,name=qa_questions,json=qaQuestions,proto3" json:"qa_questions,omitempty"` + // A token, which can be sent as `page_token` to retrieve the next page. + // If this field is omitted, there are no subsequent pages. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListQaQuestionsResponse) Reset() { + *x = ListQaQuestionsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[86] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListQaQuestionsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListQaQuestionsResponse) ProtoMessage() {} + +func (x *ListQaQuestionsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[86] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListQaQuestionsResponse.ProtoReflect.Descriptor instead. +func (*ListQaQuestionsResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{86} +} + +func (x *ListQaQuestionsResponse) GetQaQuestions() []*QaQuestion { + if x != nil { + return x.QaQuestions + } + return nil +} + +func (x *ListQaQuestionsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// The request for updating a QaQuestion. +type UpdateQaQuestionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The QaQuestion to update. + QaQuestion *QaQuestion `protobuf:"bytes,1,opt,name=qa_question,json=qaQuestion,proto3" json:"qa_question,omitempty"` + // Required. The list of fields to be updated. All possible fields can be + // updated by passing `*`, or a subset of the following updateable fields can + // be provided: + // + // * `abbreviation` + // * `answer_choices` + // * `answer_instructions` + // * `order` + // * `question_body` + // * `tags` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` +} + +func (x *UpdateQaQuestionRequest) Reset() { + *x = UpdateQaQuestionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[87] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateQaQuestionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateQaQuestionRequest) ProtoMessage() {} + +func (x *UpdateQaQuestionRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[87] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateQaQuestionRequest.ProtoReflect.Descriptor instead. +func (*UpdateQaQuestionRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{87} +} + +func (x *UpdateQaQuestionRequest) GetQaQuestion() *QaQuestion { + if x != nil { + return x.QaQuestion + } + return nil +} + +func (x *UpdateQaQuestionRequest) GetUpdateMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.UpdateMask + } + return nil +} + +// The request for deleting a QaQuestion. +type DeleteQaQuestionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the QaQuestion to delete. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *DeleteQaQuestionRequest) Reset() { + *x = DeleteQaQuestionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[88] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteQaQuestionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteQaQuestionRequest) ProtoMessage() {} + +func (x *DeleteQaQuestionRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[88] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteQaQuestionRequest.ProtoReflect.Descriptor instead. +func (*DeleteQaQuestionRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{88} +} + +func (x *DeleteQaQuestionRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// The request for creating a QaScorecard. +type CreateQaScorecardRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent resource of the QaScorecard. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Required. The QaScorecard to create. + QaScorecard *QaScorecard `protobuf:"bytes,2,opt,name=qa_scorecard,json=qaScorecard,proto3" json:"qa_scorecard,omitempty"` + // Optional. A unique ID for the new QaScorecard. This ID will become the + // final component of the QaScorecard's resource name. If no ID is specified, + // a server-generated ID will be used. + // + // This value should be 4-64 characters and must match the regular + // expression `^[a-z0-9-]{4,64}$`. Valid characters are `[a-z][0-9]-`. + QaScorecardId string `protobuf:"bytes,3,opt,name=qa_scorecard_id,json=qaScorecardId,proto3" json:"qa_scorecard_id,omitempty"` +} + +func (x *CreateQaScorecardRequest) Reset() { + *x = CreateQaScorecardRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[89] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateQaScorecardRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateQaScorecardRequest) ProtoMessage() {} + +func (x *CreateQaScorecardRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[89] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateQaScorecardRequest.ProtoReflect.Descriptor instead. +func (*CreateQaScorecardRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{89} +} + +func (x *CreateQaScorecardRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *CreateQaScorecardRequest) GetQaScorecard() *QaScorecard { + if x != nil { + return x.QaScorecard + } + return nil +} + +func (x *CreateQaScorecardRequest) GetQaScorecardId() string { + if x != nil { + return x.QaScorecardId + } + return "" +} + +// The request for a QaScorecard. By default, returns the latest revision. +type GetQaScorecardRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the QaScorecard to get. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetQaScorecardRequest) Reset() { + *x = GetQaScorecardRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[90] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetQaScorecardRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetQaScorecardRequest) ProtoMessage() {} + +func (x *GetQaScorecardRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[90] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetQaScorecardRequest.ProtoReflect.Descriptor instead. +func (*GetQaScorecardRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{90} +} + +func (x *GetQaScorecardRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// The request for updating a QaScorecard. +type UpdateQaScorecardRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The QaScorecard to update. + QaScorecard *QaScorecard `protobuf:"bytes,1,opt,name=qa_scorecard,json=qaScorecard,proto3" json:"qa_scorecard,omitempty"` + // Required. The list of fields to be updated. All possible fields can be + // updated by passing `*`, or a subset of the following updateable fields can + // be provided: + // + // * `description` + // * `display_name` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` +} + +func (x *UpdateQaScorecardRequest) Reset() { + *x = UpdateQaScorecardRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[91] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateQaScorecardRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateQaScorecardRequest) ProtoMessage() {} + +func (x *UpdateQaScorecardRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[91] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateQaScorecardRequest.ProtoReflect.Descriptor instead. +func (*UpdateQaScorecardRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{91} +} + +func (x *UpdateQaScorecardRequest) GetQaScorecard() *QaScorecard { + if x != nil { + return x.QaScorecard + } + return nil +} + +func (x *UpdateQaScorecardRequest) GetUpdateMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.UpdateMask + } + return nil +} + +// The request for deleting a QaScorecard. +type DeleteQaScorecardRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the QaScorecard to delete. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Optional. If set to true, all of this QaScorecard's child resources will + // also be deleted. Otherwise, the request will only succeed if it has none. + Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"` +} + +func (x *DeleteQaScorecardRequest) Reset() { + *x = DeleteQaScorecardRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[92] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteQaScorecardRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteQaScorecardRequest) ProtoMessage() {} + +func (x *DeleteQaScorecardRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[92] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteQaScorecardRequest.ProtoReflect.Descriptor instead. +func (*DeleteQaScorecardRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{92} +} + +func (x *DeleteQaScorecardRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *DeleteQaScorecardRequest) GetForce() bool { + if x != nil { + return x.Force + } + return false +} + +// The request for creating a QaScorecardRevision. +type CreateQaScorecardRevisionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent resource of the QaScorecardRevision. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Required. The QaScorecardRevision to create. + QaScorecardRevision *QaScorecardRevision `protobuf:"bytes,2,opt,name=qa_scorecard_revision,json=qaScorecardRevision,proto3" json:"qa_scorecard_revision,omitempty"` + // Optional. A unique ID for the new QaScorecardRevision. This ID will become + // the final component of the QaScorecardRevision's resource name. If no ID is + // specified, a server-generated ID will be used. + // + // This value should be 4-64 characters and must match the regular + // expression `^[a-z0-9-]{4,64}$`. Valid characters are `[a-z][0-9]-`. + QaScorecardRevisionId string `protobuf:"bytes,3,opt,name=qa_scorecard_revision_id,json=qaScorecardRevisionId,proto3" json:"qa_scorecard_revision_id,omitempty"` +} + +func (x *CreateQaScorecardRevisionRequest) Reset() { + *x = CreateQaScorecardRevisionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[93] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateQaScorecardRevisionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateQaScorecardRevisionRequest) ProtoMessage() {} + +func (x *CreateQaScorecardRevisionRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[93] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateQaScorecardRevisionRequest.ProtoReflect.Descriptor instead. +func (*CreateQaScorecardRevisionRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{93} +} + +func (x *CreateQaScorecardRevisionRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *CreateQaScorecardRevisionRequest) GetQaScorecardRevision() *QaScorecardRevision { + if x != nil { + return x.QaScorecardRevision + } + return nil +} + +func (x *CreateQaScorecardRevisionRequest) GetQaScorecardRevisionId() string { + if x != nil { + return x.QaScorecardRevisionId + } + return "" +} + +// The request for a QaScorecardRevision. +type GetQaScorecardRevisionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the QaScorecardRevision to get. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetQaScorecardRevisionRequest) Reset() { + *x = GetQaScorecardRevisionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[94] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetQaScorecardRevisionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetQaScorecardRevisionRequest) ProtoMessage() {} + +func (x *GetQaScorecardRevisionRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[94] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetQaScorecardRevisionRequest.ProtoReflect.Descriptor instead. +func (*GetQaScorecardRevisionRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{94} +} + +func (x *GetQaScorecardRevisionRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Request for TuneQaScorecardRevision endpoint. +type TuneQaScorecardRevisionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent resource for new fine tuning job instance. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Required. Filter for selecting the feedback labels that needs to be + // used for training. + // This filter can be used to limit the feedback labels used for tuning to a + // feedback labels created or updated for a specific time-window etc. + Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` + // Optional. Run in validate only mode, no fine tuning will actually run. + // Data quality validations like training data distributions will run. + // Even when set to false, the data quality validations will still run but + // once the validations complete we will proceed with the fine tune, if + // applicable. + ValidateOnly bool `protobuf:"varint,3,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"` +} + +func (x *TuneQaScorecardRevisionRequest) Reset() { + *x = TuneQaScorecardRevisionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[95] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TuneQaScorecardRevisionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TuneQaScorecardRevisionRequest) ProtoMessage() {} + +func (x *TuneQaScorecardRevisionRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[95] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TuneQaScorecardRevisionRequest.ProtoReflect.Descriptor instead. +func (*TuneQaScorecardRevisionRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{95} +} + +func (x *TuneQaScorecardRevisionRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *TuneQaScorecardRevisionRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + +func (x *TuneQaScorecardRevisionRequest) GetValidateOnly() bool { + if x != nil { + return x.ValidateOnly + } + return false +} + +// Response for TuneQaScorecardRevision endpoint. +type TuneQaScorecardRevisionResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *TuneQaScorecardRevisionResponse) Reset() { + *x = TuneQaScorecardRevisionResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[96] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TuneQaScorecardRevisionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TuneQaScorecardRevisionResponse) ProtoMessage() {} + +func (x *TuneQaScorecardRevisionResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[96] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TuneQaScorecardRevisionResponse.ProtoReflect.Descriptor instead. +func (*TuneQaScorecardRevisionResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{96} +} + +// Metadata for TuneQaScorecardRevision endpoint. +type TuneQaScorecardRevisionMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. The time the operation was created. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Output only. The time the operation finished running. + EndTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + // Output only. The original request. + Request *TuneQaScorecardRevisionRequest `protobuf:"bytes,3,opt,name=request,proto3" json:"request,omitempty"` + // Output only. The results of data validation per question in the request. + QaQuestionDatasetValidationResults []*TuneQaScorecardRevisionMetadata_QaQuestionDatasetValidationResult `protobuf:"bytes,4,rep,name=qa_question_dataset_validation_results,json=qaQuestionDatasetValidationResults,proto3" json:"qa_question_dataset_validation_results,omitempty"` + // Output only. The metrics for each QaQuestion in the TuneScorecardRevision + // request. + QaQuestionDatasetTuningMetrics []*TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics `protobuf:"bytes,5,rep,name=qa_question_dataset_tuning_metrics,json=qaQuestionDatasetTuningMetrics,proto3" json:"qa_question_dataset_tuning_metrics,omitempty"` + // Output only. The percentage of the tuning job that has completed. Always + // between 0 and 1 where 0 indicates the job has not started i.e. 0% and 1 + // indicates the job has completed i.e. 100%. + TuningCompletionRatio float64 `protobuf:"fixed64,6,opt,name=tuning_completion_ratio,json=tuningCompletionRatio,proto3" json:"tuning_completion_ratio,omitempty"` +} + +func (x *TuneQaScorecardRevisionMetadata) Reset() { + *x = TuneQaScorecardRevisionMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[97] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TuneQaScorecardRevisionMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TuneQaScorecardRevisionMetadata) ProtoMessage() {} + +func (x *TuneQaScorecardRevisionMetadata) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[97] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TuneQaScorecardRevisionMetadata.ProtoReflect.Descriptor instead. +func (*TuneQaScorecardRevisionMetadata) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{97} +} + +func (x *TuneQaScorecardRevisionMetadata) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *TuneQaScorecardRevisionMetadata) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +func (x *TuneQaScorecardRevisionMetadata) GetRequest() *TuneQaScorecardRevisionRequest { + if x != nil { + return x.Request + } + return nil +} + +func (x *TuneQaScorecardRevisionMetadata) GetQaQuestionDatasetValidationResults() []*TuneQaScorecardRevisionMetadata_QaQuestionDatasetValidationResult { + if x != nil { + return x.QaQuestionDatasetValidationResults + } + return nil +} + +func (x *TuneQaScorecardRevisionMetadata) GetQaQuestionDatasetTuningMetrics() []*TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics { + if x != nil { + return x.QaQuestionDatasetTuningMetrics + } + return nil +} + +func (x *TuneQaScorecardRevisionMetadata) GetTuningCompletionRatio() float64 { + if x != nil { + return x.TuningCompletionRatio + } + return 0 +} + +// The request to deploy a QaScorecardRevision +type DeployQaScorecardRevisionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the QaScorecardRevision to deploy. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *DeployQaScorecardRevisionRequest) Reset() { + *x = DeployQaScorecardRevisionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[98] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeployQaScorecardRevisionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeployQaScorecardRevisionRequest) ProtoMessage() {} + +func (x *DeployQaScorecardRevisionRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[98] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeployQaScorecardRevisionRequest.ProtoReflect.Descriptor instead. +func (*DeployQaScorecardRevisionRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{98} +} + +func (x *DeployQaScorecardRevisionRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// The request to undeploy a QaScorecardRevision +type UndeployQaScorecardRevisionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the QaScorecardRevision to undeploy. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *UndeployQaScorecardRevisionRequest) Reset() { + *x = UndeployQaScorecardRevisionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[99] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UndeployQaScorecardRevisionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UndeployQaScorecardRevisionRequest) ProtoMessage() {} + +func (x *UndeployQaScorecardRevisionRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[99] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UndeployQaScorecardRevisionRequest.ProtoReflect.Descriptor instead. +func (*UndeployQaScorecardRevisionRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{99} +} + +func (x *UndeployQaScorecardRevisionRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// The request to delete a QaScorecardRevision. +type DeleteQaScorecardRevisionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the QaScorecardRevision to delete. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Optional. If set to true, all of this QaScorecardRevision's child resources + // will also be deleted. Otherwise, the request will only succeed if it has + // none. + Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"` +} + +func (x *DeleteQaScorecardRevisionRequest) Reset() { + *x = DeleteQaScorecardRevisionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[100] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteQaScorecardRevisionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteQaScorecardRevisionRequest) ProtoMessage() {} + +func (x *DeleteQaScorecardRevisionRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[100] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteQaScorecardRevisionRequest.ProtoReflect.Descriptor instead. +func (*DeleteQaScorecardRevisionRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{100} +} + +func (x *DeleteQaScorecardRevisionRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *DeleteQaScorecardRevisionRequest) GetForce() bool { + if x != nil { + return x.Force + } + return false +} + +// Request to list QaScorecards. +type ListQaScorecardsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent resource of the scorecards. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. The maximum number of scorecards to return in the response. If + // the value is zero, the service will select a default size. A call might + // return fewer objects than requested. A non-empty `next_page_token` in the + // response indicates that more data is available. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. The value returned by the last `ListQaScorecardsResponse`. This + // value indicates that this is a continuation of a prior `ListQaScorecards` + // call and that the system should return the next page of data. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` +} + +func (x *ListQaScorecardsRequest) Reset() { + *x = ListQaScorecardsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[101] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListQaScorecardsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListQaScorecardsRequest) ProtoMessage() {} + +func (x *ListQaScorecardsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[101] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListQaScorecardsRequest.ProtoReflect.Descriptor instead. +func (*ListQaScorecardsRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{101} +} + +func (x *ListQaScorecardsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListQaScorecardsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListQaScorecardsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +// The response from a ListQaScorecards request. +type ListQaScorecardsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The QaScorecards under the parent. + QaScorecards []*QaScorecard `protobuf:"bytes,1,rep,name=qa_scorecards,json=qaScorecards,proto3" json:"qa_scorecards,omitempty"` + // A token, which can be sent as `page_token` to retrieve the next page. + // If this field is omitted, there are no subsequent pages. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListQaScorecardsResponse) Reset() { + *x = ListQaScorecardsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[102] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListQaScorecardsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListQaScorecardsResponse) ProtoMessage() {} + +func (x *ListQaScorecardsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[102] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListQaScorecardsResponse.ProtoReflect.Descriptor instead. +func (*ListQaScorecardsResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{102} +} + +func (x *ListQaScorecardsResponse) GetQaScorecards() []*QaScorecard { + if x != nil { + return x.QaScorecards + } + return nil +} + +func (x *ListQaScorecardsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// Request to list QaScorecardRevisions +type ListQaScorecardRevisionsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent resource of the scorecard revisions. To list all + // revisions of all scorecards, substitute the QaScorecard ID with a '-' + // character. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. The maximum number of scorecard revisions to return in the + // response. If the value is zero, the service will select a default size. A + // call might return fewer objects than requested. A non-empty + // `next_page_token` in the response indicates that more data is available. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. The value returned by the last + // `ListQaScorecardRevisionsResponse`. This value indicates that this is a + // continuation of a prior `ListQaScorecardRevisions` call and that the system + // should return the next page of data. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. A filter to reduce results to a specific subset. Useful for + // querying scorecard revisions with specific properties. + Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` +} + +func (x *ListQaScorecardRevisionsRequest) Reset() { + *x = ListQaScorecardRevisionsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[103] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListQaScorecardRevisionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListQaScorecardRevisionsRequest) ProtoMessage() {} + +func (x *ListQaScorecardRevisionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[103] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListQaScorecardRevisionsRequest.ProtoReflect.Descriptor instead. +func (*ListQaScorecardRevisionsRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{103} +} + +func (x *ListQaScorecardRevisionsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListQaScorecardRevisionsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListQaScorecardRevisionsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +func (x *ListQaScorecardRevisionsRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + +// The response from a ListQaScorecardRevisions request. +type ListQaScorecardRevisionsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The QaScorecards under the parent. + QaScorecardRevisions []*QaScorecardRevision `protobuf:"bytes,1,rep,name=qa_scorecard_revisions,json=qaScorecardRevisions,proto3" json:"qa_scorecard_revisions,omitempty"` + // A token, which can be sent as `page_token` to retrieve the next page. + // If this field is omitted, there are no subsequent pages. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListQaScorecardRevisionsResponse) Reset() { + *x = ListQaScorecardRevisionsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[104] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListQaScorecardRevisionsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListQaScorecardRevisionsResponse) ProtoMessage() {} + +func (x *ListQaScorecardRevisionsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[104] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListQaScorecardRevisionsResponse.ProtoReflect.Descriptor instead. +func (*ListQaScorecardRevisionsResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{104} +} + +func (x *ListQaScorecardRevisionsResponse) GetQaScorecardRevisions() []*QaScorecardRevision { + if x != nil { + return x.QaScorecardRevisions + } + return nil +} + +func (x *ListQaScorecardRevisionsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// The request for creating a feedback label. +type CreateFeedbackLabelRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent resource of the feedback label. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. The ID of the feedback label to create. + // If one is not specified it will be generated by the server. + FeedbackLabelId string `protobuf:"bytes,2,opt,name=feedback_label_id,json=feedbackLabelId,proto3" json:"feedback_label_id,omitempty"` + // Required. The feedback label to create. + FeedbackLabel *FeedbackLabel `protobuf:"bytes,3,opt,name=feedback_label,json=feedbackLabel,proto3" json:"feedback_label,omitempty"` +} + +func (x *CreateFeedbackLabelRequest) Reset() { + *x = CreateFeedbackLabelRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[105] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateFeedbackLabelRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateFeedbackLabelRequest) ProtoMessage() {} + +func (x *CreateFeedbackLabelRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[105] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateFeedbackLabelRequest.ProtoReflect.Descriptor instead. +func (*CreateFeedbackLabelRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{105} +} + +func (x *CreateFeedbackLabelRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *CreateFeedbackLabelRequest) GetFeedbackLabelId() string { + if x != nil { + return x.FeedbackLabelId + } + return "" +} + +func (x *CreateFeedbackLabelRequest) GetFeedbackLabel() *FeedbackLabel { + if x != nil { + return x.FeedbackLabel + } + return nil +} + +// The request for listing feedback labels. +type ListFeedbackLabelsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent resource of the feedback labels. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. A filter to reduce results to a specific subset. Supports + // disjunctions (OR) and conjunctions (AND). Automatically sorts by + // conversation ID. To sort by all feedback labels in a project see + // ListAllFeedbackLabels. + // + // Supported fields: + // + // * `issue_model_id` + // * `qa_question_id` + // * `qa_scorecard_id` + // * `min_create_time` + // * `max_create_time` + // * `min_update_time` + // * `max_update_time` + // * `feedback_label_type`: QUALITY_AI, TOPIC_MODELING + Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` + // Optional. The maximum number of feedback labels to return in the response. + // A valid page size ranges from 0 to 100,000 inclusive. If the page size is + // zero or unspecified, a default page size of 100 will be chosen. Note that a + // call might return fewer results than the requested page size. + PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. The value returned by the last `ListFeedbackLabelsResponse`. This + // value indicates that this is a continuation of a prior `ListFeedbackLabels` + // call and that the system should return the next page of data. + PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` +} + +func (x *ListFeedbackLabelsRequest) Reset() { + *x = ListFeedbackLabelsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[106] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListFeedbackLabelsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListFeedbackLabelsRequest) ProtoMessage() {} + +func (x *ListFeedbackLabelsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[106] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListFeedbackLabelsRequest.ProtoReflect.Descriptor instead. +func (*ListFeedbackLabelsRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{106} +} + +func (x *ListFeedbackLabelsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListFeedbackLabelsRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + +func (x *ListFeedbackLabelsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListFeedbackLabelsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +// The response for listing feedback labels. +type ListFeedbackLabelsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The feedback labels that match the request. + FeedbackLabels []*FeedbackLabel `protobuf:"bytes,1,rep,name=feedback_labels,json=feedbackLabels,proto3" json:"feedback_labels,omitempty"` + // The next page token. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListFeedbackLabelsResponse) Reset() { + *x = ListFeedbackLabelsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[107] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListFeedbackLabelsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListFeedbackLabelsResponse) ProtoMessage() {} + +func (x *ListFeedbackLabelsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[107] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListFeedbackLabelsResponse.ProtoReflect.Descriptor instead. +func (*ListFeedbackLabelsResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{107} +} + +func (x *ListFeedbackLabelsResponse) GetFeedbackLabels() []*FeedbackLabel { + if x != nil { + return x.FeedbackLabels + } + return nil +} + +func (x *ListFeedbackLabelsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// The request for getting a feedback label. +type GetFeedbackLabelRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the feedback label to get. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetFeedbackLabelRequest) Reset() { + *x = GetFeedbackLabelRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[108] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetFeedbackLabelRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetFeedbackLabelRequest) ProtoMessage() {} + +func (x *GetFeedbackLabelRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[108] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetFeedbackLabelRequest.ProtoReflect.Descriptor instead. +func (*GetFeedbackLabelRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{108} +} + +func (x *GetFeedbackLabelRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// The request for updating a feedback label. +type UpdateFeedbackLabelRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The feedback label to update. + FeedbackLabel *FeedbackLabel `protobuf:"bytes,1,opt,name=feedback_label,json=feedbackLabel,proto3" json:"feedback_label,omitempty"` + // Required. The list of fields to be updated. + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` +} + +func (x *UpdateFeedbackLabelRequest) Reset() { + *x = UpdateFeedbackLabelRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[109] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateFeedbackLabelRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateFeedbackLabelRequest) ProtoMessage() {} + +func (x *UpdateFeedbackLabelRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[109] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateFeedbackLabelRequest.ProtoReflect.Descriptor instead. +func (*UpdateFeedbackLabelRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{109} +} + +func (x *UpdateFeedbackLabelRequest) GetFeedbackLabel() *FeedbackLabel { + if x != nil { + return x.FeedbackLabel + } + return nil +} + +func (x *UpdateFeedbackLabelRequest) GetUpdateMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.UpdateMask + } + return nil +} + +// The request for deleting a feedback label. +type DeleteFeedbackLabelRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the feedback label to delete. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *DeleteFeedbackLabelRequest) Reset() { + *x = DeleteFeedbackLabelRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[110] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteFeedbackLabelRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteFeedbackLabelRequest) ProtoMessage() {} + +func (x *DeleteFeedbackLabelRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[110] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteFeedbackLabelRequest.ProtoReflect.Descriptor instead. +func (*DeleteFeedbackLabelRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{110} +} + +func (x *DeleteFeedbackLabelRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// The request for listing all feedback labels. +type ListAllFeedbackLabelsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The parent resource of all feedback labels per project. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. The maximum number of feedback labels to return in the response. + // A valid page size ranges from 0 to 100,000 inclusive. If the page size is + // zero or unspecified, a default page size of 100 will be chosen. Note that a + // call might return fewer results than the requested page size. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. The value returned by the last `ListAllFeedbackLabelsResponse`. + // This value indicates that this is a continuation of a prior + // `ListAllFeedbackLabels` call and that the system should return the next + // page of data. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. A filter to reduce results to a specific subset in the entire + // project. Supports disjunctions (OR) and conjunctions (AND). + // + // Supported fields: + // + // * `issue_model_id` + // * `qa_question_id` + // * `min_create_time` + // * `max_create_time` + // * `min_update_time` + // * `max_update_time` + // * `feedback_label_type`: QUALITY_AI, TOPIC_MODELING + Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` +} + +func (x *ListAllFeedbackLabelsRequest) Reset() { + *x = ListAllFeedbackLabelsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[111] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListAllFeedbackLabelsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAllFeedbackLabelsRequest) ProtoMessage() {} + +func (x *ListAllFeedbackLabelsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[111] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListAllFeedbackLabelsRequest.ProtoReflect.Descriptor instead. +func (*ListAllFeedbackLabelsRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{111} +} + +func (x *ListAllFeedbackLabelsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListAllFeedbackLabelsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListAllFeedbackLabelsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +func (x *ListAllFeedbackLabelsRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + +// The response for listing all feedback labels. +type ListAllFeedbackLabelsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The feedback labels that match the request. + FeedbackLabels []*FeedbackLabel `protobuf:"bytes,1,rep,name=feedback_labels,json=feedbackLabels,proto3" json:"feedback_labels,omitempty"` + // A token, which can be sent as `page_token` to retrieve the next page. + // If this field is omitted, there are no subsequent pages. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` +} + +func (x *ListAllFeedbackLabelsResponse) Reset() { + *x = ListAllFeedbackLabelsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[112] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListAllFeedbackLabelsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAllFeedbackLabelsResponse) ProtoMessage() {} + +func (x *ListAllFeedbackLabelsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[112] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListAllFeedbackLabelsResponse.ProtoReflect.Descriptor instead. +func (*ListAllFeedbackLabelsResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{112} +} + +func (x *ListAllFeedbackLabelsResponse) GetFeedbackLabels() []*FeedbackLabel { + if x != nil { + return x.FeedbackLabels + } + return nil +} + +func (x *ListAllFeedbackLabelsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +// The request for bulk uploading feedback labels. +type BulkUploadFeedbackLabelsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Configuration for an external data store containing objects that will + // be converted to FeedbackLabels. + // + // Types that are assignable to Source: + // + // *BulkUploadFeedbackLabelsRequest_GcsSource_ + Source isBulkUploadFeedbackLabelsRequest_Source `protobuf_oneof:"source"` + // Required. The parent resource for new feedback labels. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. If set, upload will not happen and the labels will be validated. + // If not set, then default behavior will be to upload the labels after + // validation is complete. + ValidateOnly bool `protobuf:"varint,3,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"` +} + +func (x *BulkUploadFeedbackLabelsRequest) Reset() { + *x = BulkUploadFeedbackLabelsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[113] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BulkUploadFeedbackLabelsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BulkUploadFeedbackLabelsRequest) ProtoMessage() {} + +func (x *BulkUploadFeedbackLabelsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[113] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BulkUploadFeedbackLabelsRequest.ProtoReflect.Descriptor instead. +func (*BulkUploadFeedbackLabelsRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{113} +} + +func (m *BulkUploadFeedbackLabelsRequest) GetSource() isBulkUploadFeedbackLabelsRequest_Source { + if m != nil { + return m.Source + } + return nil +} + +func (x *BulkUploadFeedbackLabelsRequest) GetGcsSource() *BulkUploadFeedbackLabelsRequest_GcsSource { + if x, ok := x.GetSource().(*BulkUploadFeedbackLabelsRequest_GcsSource_); ok { + return x.GcsSource + } + return nil +} + +func (x *BulkUploadFeedbackLabelsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *BulkUploadFeedbackLabelsRequest) GetValidateOnly() bool { + if x != nil { + return x.ValidateOnly + } + return false +} + +type isBulkUploadFeedbackLabelsRequest_Source interface { + isBulkUploadFeedbackLabelsRequest_Source() +} + +type BulkUploadFeedbackLabelsRequest_GcsSource_ struct { + // A cloud storage bucket source. + GcsSource *BulkUploadFeedbackLabelsRequest_GcsSource `protobuf:"bytes,2,opt,name=gcs_source,json=gcsSource,proto3,oneof"` +} + +func (*BulkUploadFeedbackLabelsRequest_GcsSource_) isBulkUploadFeedbackLabelsRequest_Source() {} + +// Response for the Bulk Upload Feedback Labels API. +type BulkUploadFeedbackLabelsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *BulkUploadFeedbackLabelsResponse) Reset() { + *x = BulkUploadFeedbackLabelsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[114] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BulkUploadFeedbackLabelsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BulkUploadFeedbackLabelsResponse) ProtoMessage() {} + +func (x *BulkUploadFeedbackLabelsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[114] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BulkUploadFeedbackLabelsResponse.ProtoReflect.Descriptor instead. +func (*BulkUploadFeedbackLabelsResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{114} +} + +// Metadata for the Bulk Upload Feedback Labels API. +type BulkUploadFeedbackLabelsMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. The time the operation was created. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Output only. The time the operation finished running. + EndTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + // Output only. The original request for ingest. + Request *BulkUploadFeedbackLabelsRequest `protobuf:"bytes,3,opt,name=request,proto3" json:"request,omitempty"` + // Partial errors during ingest operation that might cause the operation + // output to be incomplete. + PartialErrors []*status.Status `protobuf:"bytes,4,rep,name=partial_errors,json=partialErrors,proto3" json:"partial_errors,omitempty"` + // Output only. Statistics for BulkUploadFeedbackLabels operation. + UploadStats *BulkUploadFeedbackLabelsMetadata_UploadStats `protobuf:"bytes,5,opt,name=upload_stats,json=uploadStats,proto3" json:"upload_stats,omitempty"` +} + +func (x *BulkUploadFeedbackLabelsMetadata) Reset() { + *x = BulkUploadFeedbackLabelsMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[115] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BulkUploadFeedbackLabelsMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BulkUploadFeedbackLabelsMetadata) ProtoMessage() {} + +func (x *BulkUploadFeedbackLabelsMetadata) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[115] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BulkUploadFeedbackLabelsMetadata.ProtoReflect.Descriptor instead. +func (*BulkUploadFeedbackLabelsMetadata) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{115} +} + +func (x *BulkUploadFeedbackLabelsMetadata) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *BulkUploadFeedbackLabelsMetadata) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +func (x *BulkUploadFeedbackLabelsMetadata) GetRequest() *BulkUploadFeedbackLabelsRequest { + if x != nil { + return x.Request + } + return nil +} + +func (x *BulkUploadFeedbackLabelsMetadata) GetPartialErrors() []*status.Status { + if x != nil { + return x.PartialErrors + } + return nil +} + +func (x *BulkUploadFeedbackLabelsMetadata) GetUploadStats() *BulkUploadFeedbackLabelsMetadata_UploadStats { + if x != nil { + return x.UploadStats + } + return nil +} + +// Request for the BulkDownloadFeedbackLabel endpoint. +type BulkDownloadFeedbackLabelsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Configuration for an external data store to which the feedback labels + // will be written to. + // + // Types that are assignable to Destination: + // + // *BulkDownloadFeedbackLabelsRequest_GcsDestination_ + Destination isBulkDownloadFeedbackLabelsRequest_Destination `protobuf_oneof:"destination"` + // Required. The parent resource for new feedback labels. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. A filter to reduce results to a specific subset. Supports + // disjunctions (OR) and conjunctions (AND). + // + // Supported fields: + // + // * `issue_model_id` + // * `qa_question_id` + // * `qa_scorecard_id` + // * `min_create_time` + // * `max_create_time` + // * `min_update_time` + // * `max_update_time` + // * `feedback_label_type`: QUALITY_AI, TOPIC_MODELING + Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` + // Optional. Limits the maximum number of feedback labels that will be + // downloaded. The first `N` feedback labels will be downloaded. + MaxDownloadCount int32 `protobuf:"varint,4,opt,name=max_download_count,json=maxDownloadCount,proto3" json:"max_download_count,omitempty"` + // Optional. The type of feedback labels that will be downloaded. + FeedbackLabelType BulkDownloadFeedbackLabelsRequest_FeedbackLabelType `protobuf:"varint,5,opt,name=feedback_label_type,json=feedbackLabelType,proto3,enum=google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsRequest_FeedbackLabelType" json:"feedback_label_type,omitempty"` + // Optional. Filter parent conversations to download feedback labels for. + // When specified, the feedback labels will be downloaded for the + // conversations that match the filter. + // If `template_qa_scorecard_id` is set, all the conversations that match the + // filter will be paired with the questions under the scorecard for labeling. + ConversationFilter string `protobuf:"bytes,6,opt,name=conversation_filter,json=conversationFilter,proto3" json:"conversation_filter,omitempty"` + // Optional. If set, a template for labeling conversations and scorecard + // questions will be created from the conversation_filter and the questions + // under the scorecard(s). The feedback label `filter` will be ignored. + TemplateQaScorecardId []string `protobuf:"bytes,7,rep,name=template_qa_scorecard_id,json=templateQaScorecardId,proto3" json:"template_qa_scorecard_id,omitempty"` +} + +func (x *BulkDownloadFeedbackLabelsRequest) Reset() { + *x = BulkDownloadFeedbackLabelsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[116] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BulkDownloadFeedbackLabelsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BulkDownloadFeedbackLabelsRequest) ProtoMessage() {} + +func (x *BulkDownloadFeedbackLabelsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[116] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BulkDownloadFeedbackLabelsRequest.ProtoReflect.Descriptor instead. +func (*BulkDownloadFeedbackLabelsRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{116} +} + +func (m *BulkDownloadFeedbackLabelsRequest) GetDestination() isBulkDownloadFeedbackLabelsRequest_Destination { + if m != nil { + return m.Destination + } + return nil +} + +func (x *BulkDownloadFeedbackLabelsRequest) GetGcsDestination() *BulkDownloadFeedbackLabelsRequest_GcsDestination { + if x, ok := x.GetDestination().(*BulkDownloadFeedbackLabelsRequest_GcsDestination_); ok { + return x.GcsDestination + } + return nil +} + +func (x *BulkDownloadFeedbackLabelsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *BulkDownloadFeedbackLabelsRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + +func (x *BulkDownloadFeedbackLabelsRequest) GetMaxDownloadCount() int32 { + if x != nil { + return x.MaxDownloadCount + } + return 0 +} + +func (x *BulkDownloadFeedbackLabelsRequest) GetFeedbackLabelType() BulkDownloadFeedbackLabelsRequest_FeedbackLabelType { + if x != nil { + return x.FeedbackLabelType + } + return BulkDownloadFeedbackLabelsRequest_FEEDBACK_LABEL_TYPE_UNSPECIFIED +} + +func (x *BulkDownloadFeedbackLabelsRequest) GetConversationFilter() string { + if x != nil { + return x.ConversationFilter + } + return "" +} + +func (x *BulkDownloadFeedbackLabelsRequest) GetTemplateQaScorecardId() []string { + if x != nil { + return x.TemplateQaScorecardId + } + return nil +} + +type isBulkDownloadFeedbackLabelsRequest_Destination interface { + isBulkDownloadFeedbackLabelsRequest_Destination() +} + +type BulkDownloadFeedbackLabelsRequest_GcsDestination_ struct { + // A cloud storage bucket destination. + GcsDestination *BulkDownloadFeedbackLabelsRequest_GcsDestination `protobuf:"bytes,3,opt,name=gcs_destination,json=gcsDestination,proto3,oneof"` +} + +func (*BulkDownloadFeedbackLabelsRequest_GcsDestination_) isBulkDownloadFeedbackLabelsRequest_Destination() { +} + +// Response for the BulkDownloadFeedbackLabel endpoint. +type BulkDownloadFeedbackLabelsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *BulkDownloadFeedbackLabelsResponse) Reset() { + *x = BulkDownloadFeedbackLabelsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[117] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BulkDownloadFeedbackLabelsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BulkDownloadFeedbackLabelsResponse) ProtoMessage() {} + +func (x *BulkDownloadFeedbackLabelsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[117] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BulkDownloadFeedbackLabelsResponse.ProtoReflect.Descriptor instead. +func (*BulkDownloadFeedbackLabelsResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{117} +} + +// Metadata for the BulkDownloadFeedbackLabel endpoint. +type BulkDownloadFeedbackLabelsMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. The time the operation was created. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Output only. The time the operation finished running. + EndTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` + // Output only. The original request for download. + Request *BulkDownloadFeedbackLabelsRequest `protobuf:"bytes,3,opt,name=request,proto3" json:"request,omitempty"` + // Partial errors during ingest operation that might cause the operation + // output to be incomplete. + PartialErrors []*status.Status `protobuf:"bytes,4,rep,name=partial_errors,json=partialErrors,proto3" json:"partial_errors,omitempty"` + // Output only. Statistics for BulkDownloadFeedbackLabels operation. + DownloadStats *BulkDownloadFeedbackLabelsMetadata_DownloadStats `protobuf:"bytes,5,opt,name=download_stats,json=downloadStats,proto3" json:"download_stats,omitempty"` +} + +func (x *BulkDownloadFeedbackLabelsMetadata) Reset() { + *x = BulkDownloadFeedbackLabelsMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[118] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BulkDownloadFeedbackLabelsMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BulkDownloadFeedbackLabelsMetadata) ProtoMessage() {} + +func (x *BulkDownloadFeedbackLabelsMetadata) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[118] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BulkDownloadFeedbackLabelsMetadata.ProtoReflect.Descriptor instead. +func (*BulkDownloadFeedbackLabelsMetadata) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{118} +} + +func (x *BulkDownloadFeedbackLabelsMetadata) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *BulkDownloadFeedbackLabelsMetadata) GetEndTime() *timestamppb.Timestamp { + if x != nil { + return x.EndTime + } + return nil +} + +func (x *BulkDownloadFeedbackLabelsMetadata) GetRequest() *BulkDownloadFeedbackLabelsRequest { + if x != nil { + return x.Request + } + return nil +} + +func (x *BulkDownloadFeedbackLabelsMetadata) GetPartialErrors() []*status.Status { + if x != nil { + return x.PartialErrors + } + return nil +} + +func (x *BulkDownloadFeedbackLabelsMetadata) GetDownloadStats() *BulkDownloadFeedbackLabelsMetadata_DownloadStats { + if x != nil { + return x.DownloadStats + } + return nil +} + +// A time series representing conversations over time. +type CalculateStatsResponse_TimeSeries struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The duration of each interval. + IntervalDuration *durationpb.Duration `protobuf:"bytes,1,opt,name=interval_duration,json=intervalDuration,proto3" json:"interval_duration,omitempty"` + // An ordered list of intervals from earliest to latest, where each interval + // represents the number of conversations that transpired during the time + // window. + Points []*CalculateStatsResponse_TimeSeries_Interval `protobuf:"bytes,2,rep,name=points,proto3" json:"points,omitempty"` +} + +func (x *CalculateStatsResponse_TimeSeries) Reset() { + *x = CalculateStatsResponse_TimeSeries{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[119] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CalculateStatsResponse_TimeSeries) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CalculateStatsResponse_TimeSeries) ProtoMessage() {} + +func (x *CalculateStatsResponse_TimeSeries) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[119] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CalculateStatsResponse_TimeSeries.ProtoReflect.Descriptor instead. +func (*CalculateStatsResponse_TimeSeries) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *CalculateStatsResponse_TimeSeries) GetIntervalDuration() *durationpb.Duration { + if x != nil { + return x.IntervalDuration + } + return nil +} + +func (x *CalculateStatsResponse_TimeSeries) GetPoints() []*CalculateStatsResponse_TimeSeries_Interval { + if x != nil { + return x.Points + } + return nil +} + +// A single interval in a time series. +type CalculateStatsResponse_TimeSeries_Interval struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The start time of this interval. + StartTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` + // The number of conversations created in this interval. + ConversationCount int32 `protobuf:"varint,2,opt,name=conversation_count,json=conversationCount,proto3" json:"conversation_count,omitempty"` +} + +func (x *CalculateStatsResponse_TimeSeries_Interval) Reset() { + *x = CalculateStatsResponse_TimeSeries_Interval{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[124] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CalculateStatsResponse_TimeSeries_Interval) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CalculateStatsResponse_TimeSeries_Interval) ProtoMessage() {} + +func (x *CalculateStatsResponse_TimeSeries_Interval) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[124] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CalculateStatsResponse_TimeSeries_Interval.ProtoReflect.Descriptor instead. +func (*CalculateStatsResponse_TimeSeries_Interval) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{1, 0, 0} +} + +func (x *CalculateStatsResponse_TimeSeries_Interval) GetStartTime() *timestamppb.Timestamp { + if x != nil { + return x.StartTime + } + return nil +} + +func (x *CalculateStatsResponse_TimeSeries_Interval) GetConversationCount() int32 { + if x != nil { + return x.ConversationCount + } + return 0 +} + +// Configuration for Cloud Storage bucket sources. +type IngestConversationsRequest_GcsSource struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The Cloud Storage bucket containing source objects. + BucketUri string `protobuf:"bytes,1,opt,name=bucket_uri,json=bucketUri,proto3" json:"bucket_uri,omitempty"` + // Optional. Specifies the type of the objects in `bucket_uri`. + BucketObjectType IngestConversationsRequest_GcsSource_BucketObjectType `protobuf:"varint,2,opt,name=bucket_object_type,json=bucketObjectType,proto3,enum=google.cloud.contactcenterinsights.v1.IngestConversationsRequest_GcsSource_BucketObjectType" json:"bucket_object_type,omitempty"` + // Optional. The Cloud Storage path to the conversation metadata. Note that: + // [1] Metadata files are expected to be in JSON format. + // [2] Metadata and source files (transcripts or audio) must be in + // + // separate buckets. + // + // [3] A source file and its corresponding metadata file must share the same + // name to + // + // be properly ingested, E.g. `gs://bucket/audio/conversation1.mp3` and + // `gs://bucket/metadata/conversation1.json`. + MetadataBucketUri *string `protobuf:"bytes,3,opt,name=metadata_bucket_uri,json=metadataBucketUri,proto3,oneof" json:"metadata_bucket_uri,omitempty"` + // Optional. Custom keys to extract as conversation labels from metadata + // files in `metadata_bucket_uri`. Keys not included in this field will be + // ignored. Note that there is a limit of 100 labels per conversation. + CustomMetadataKeys []string `protobuf:"bytes,12,rep,name=custom_metadata_keys,json=customMetadataKeys,proto3" json:"custom_metadata_keys,omitempty"` +} + +func (x *IngestConversationsRequest_GcsSource) Reset() { + *x = IngestConversationsRequest_GcsSource{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[125] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IngestConversationsRequest_GcsSource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IngestConversationsRequest_GcsSource) ProtoMessage() {} + +func (x *IngestConversationsRequest_GcsSource) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[125] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IngestConversationsRequest_GcsSource.ProtoReflect.Descriptor instead. +func (*IngestConversationsRequest_GcsSource) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{11, 0} +} + +func (x *IngestConversationsRequest_GcsSource) GetBucketUri() string { + if x != nil { + return x.BucketUri + } + return "" +} + +func (x *IngestConversationsRequest_GcsSource) GetBucketObjectType() IngestConversationsRequest_GcsSource_BucketObjectType { + if x != nil { + return x.BucketObjectType + } + return IngestConversationsRequest_GcsSource_BUCKET_OBJECT_TYPE_UNSPECIFIED +} + +func (x *IngestConversationsRequest_GcsSource) GetMetadataBucketUri() string { + if x != nil && x.MetadataBucketUri != nil { + return *x.MetadataBucketUri + } + return "" +} + +func (x *IngestConversationsRequest_GcsSource) GetCustomMetadataKeys() []string { + if x != nil { + return x.CustomMetadataKeys + } + return nil +} + +// Configuration for processing transcript objects. +type IngestConversationsRequest_TranscriptObjectConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The medium transcript objects represent. + Medium Conversation_Medium `protobuf:"varint,1,opt,name=medium,proto3,enum=google.cloud.contactcenterinsights.v1.Conversation_Medium" json:"medium,omitempty"` +} + +func (x *IngestConversationsRequest_TranscriptObjectConfig) Reset() { + *x = IngestConversationsRequest_TranscriptObjectConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[126] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IngestConversationsRequest_TranscriptObjectConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IngestConversationsRequest_TranscriptObjectConfig) ProtoMessage() {} + +func (x *IngestConversationsRequest_TranscriptObjectConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[126] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IngestConversationsRequest_TranscriptObjectConfig.ProtoReflect.Descriptor instead. +func (*IngestConversationsRequest_TranscriptObjectConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{11, 1} +} + +func (x *IngestConversationsRequest_TranscriptObjectConfig) GetMedium() Conversation_Medium { + if x != nil { + return x.Medium + } + return Conversation_MEDIUM_UNSPECIFIED +} + +// Configuration that applies to all conversations. +type IngestConversationsRequest_ConversationConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. An opaque, user-specified string representing a human agent who + // handled all conversations in the import. Note that this will be + // overridden if per-conversation metadata is provided through the + // `metadata_bucket_uri`. + AgentId string `protobuf:"bytes,1,opt,name=agent_id,json=agentId,proto3" json:"agent_id,omitempty"` + // Optional. Indicates which of the channels, 1 or 2, contains the agent. + // Note that this must be set for conversations to be properly displayed and + // analyzed. + AgentChannel int32 `protobuf:"varint,2,opt,name=agent_channel,json=agentChannel,proto3" json:"agent_channel,omitempty"` + // Optional. Indicates which of the channels, 1 or 2, contains the agent. + // Note that this must be set for conversations to be properly displayed and + // analyzed. + CustomerChannel int32 `protobuf:"varint,3,opt,name=customer_channel,json=customerChannel,proto3" json:"customer_channel,omitempty"` +} + +func (x *IngestConversationsRequest_ConversationConfig) Reset() { + *x = IngestConversationsRequest_ConversationConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[127] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IngestConversationsRequest_ConversationConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IngestConversationsRequest_ConversationConfig) ProtoMessage() {} + +func (x *IngestConversationsRequest_ConversationConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[127] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IngestConversationsRequest_ConversationConfig.ProtoReflect.Descriptor instead. +func (*IngestConversationsRequest_ConversationConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{11, 2} +} + +func (x *IngestConversationsRequest_ConversationConfig) GetAgentId() string { + if x != nil { + return x.AgentId + } + return "" +} + +func (x *IngestConversationsRequest_ConversationConfig) GetAgentChannel() int32 { + if x != nil { + return x.AgentChannel + } + return 0 +} + +func (x *IngestConversationsRequest_ConversationConfig) GetCustomerChannel() int32 { + if x != nil { + return x.CustomerChannel + } + return 0 +} + +// Statistics for IngestConversations operation. +type IngestConversationsMetadata_IngestConversationsStats struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. The number of objects processed during the ingest operation. + ProcessedObjectCount int32 `protobuf:"varint,1,opt,name=processed_object_count,json=processedObjectCount,proto3" json:"processed_object_count,omitempty"` + // Output only. The number of objects skipped because another conversation + // with the same transcript uri had already been ingested. + DuplicatesSkippedCount int32 `protobuf:"varint,2,opt,name=duplicates_skipped_count,json=duplicatesSkippedCount,proto3" json:"duplicates_skipped_count,omitempty"` + // Output only. The number of new conversations added during this ingest + // operation. + SuccessfulIngestCount int32 `protobuf:"varint,3,opt,name=successful_ingest_count,json=successfulIngestCount,proto3" json:"successful_ingest_count,omitempty"` + // Output only. The number of objects which were unable to be ingested due + // to errors. The errors are populated in the partial_errors field. + FailedIngestCount int32 `protobuf:"varint,4,opt,name=failed_ingest_count,json=failedIngestCount,proto3" json:"failed_ingest_count,omitempty"` +} + +func (x *IngestConversationsMetadata_IngestConversationsStats) Reset() { + *x = IngestConversationsMetadata_IngestConversationsStats{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[128] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IngestConversationsMetadata_IngestConversationsStats) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IngestConversationsMetadata_IngestConversationsStats) ProtoMessage() {} + +func (x *IngestConversationsMetadata_IngestConversationsStats) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[128] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IngestConversationsMetadata_IngestConversationsStats.ProtoReflect.Descriptor instead. +func (*IngestConversationsMetadata_IngestConversationsStats) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{12, 0} +} + +func (x *IngestConversationsMetadata_IngestConversationsStats) GetProcessedObjectCount() int32 { + if x != nil { + return x.ProcessedObjectCount + } + return 0 +} + +func (x *IngestConversationsMetadata_IngestConversationsStats) GetDuplicatesSkippedCount() int32 { + if x != nil { + return x.DuplicatesSkippedCount + } + return 0 +} + +func (x *IngestConversationsMetadata_IngestConversationsStats) GetSuccessfulIngestCount() int32 { + if x != nil { + return x.SuccessfulIngestCount + } + return 0 +} + +func (x *IngestConversationsMetadata_IngestConversationsStats) GetFailedIngestCount() int32 { + if x != nil { + return x.FailedIngestCount + } + return 0 +} + +// A BigQuery Table Reference. +type ExportInsightsDataRequest_BigQueryDestination struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A project ID or number. If specified, then export will attempt to + // write data to this project instead of the resource project. Otherwise, + // the resource project will be used. + ProjectId string `protobuf:"bytes,3,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + // Required. The name of the BigQuery dataset that the snapshot result + // should be exported to. If this dataset does not exist, the export call + // returns an INVALID_ARGUMENT error. + Dataset string `protobuf:"bytes,1,opt,name=dataset,proto3" json:"dataset,omitempty"` + // The BigQuery table name to which the insights data should be written. + // If this table does not exist, the export call returns an INVALID_ARGUMENT + // error. + Table string `protobuf:"bytes,2,opt,name=table,proto3" json:"table,omitempty"` +} + +func (x *ExportInsightsDataRequest_BigQueryDestination) Reset() { + *x = ExportInsightsDataRequest_BigQueryDestination{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[129] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExportInsightsDataRequest_BigQueryDestination) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExportInsightsDataRequest_BigQueryDestination) ProtoMessage() {} + +func (x *ExportInsightsDataRequest_BigQueryDestination) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[129] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExportInsightsDataRequest_BigQueryDestination.ProtoReflect.Descriptor instead. +func (*ExportInsightsDataRequest_BigQueryDestination) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{25, 0} +} + +func (x *ExportInsightsDataRequest_BigQueryDestination) GetProjectId() string { + if x != nil { + return x.ProjectId + } + return "" +} + +func (x *ExportInsightsDataRequest_BigQueryDestination) GetDataset() string { + if x != nil { + return x.Dataset + } + return "" +} + +func (x *ExportInsightsDataRequest_BigQueryDestination) GetTable() string { + if x != nil { + return x.Table + } + return "" +} + +// Google Cloud Storage Object URI to save the issue model to. +type ExportIssueModelRequest_GcsDestination struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Format: `gs:///` + ObjectUri string `protobuf:"bytes,1,opt,name=object_uri,json=objectUri,proto3" json:"object_uri,omitempty"` +} + +func (x *ExportIssueModelRequest_GcsDestination) Reset() { + *x = ExportIssueModelRequest_GcsDestination{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[130] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExportIssueModelRequest_GcsDestination) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExportIssueModelRequest_GcsDestination) ProtoMessage() {} + +func (x *ExportIssueModelRequest_GcsDestination) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[130] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExportIssueModelRequest_GcsDestination.ProtoReflect.Descriptor instead. +func (*ExportIssueModelRequest_GcsDestination) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{42, 0} +} + +func (x *ExportIssueModelRequest_GcsDestination) GetObjectUri() string { + if x != nil { + return x.ObjectUri + } + return "" +} + +// Google Cloud Storage Object URI to get the issue model file from. +type ImportIssueModelRequest_GcsSource struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Format: `gs:///` + ObjectUri string `protobuf:"bytes,1,opt,name=object_uri,json=objectUri,proto3" json:"object_uri,omitempty"` +} + +func (x *ImportIssueModelRequest_GcsSource) Reset() { + *x = ImportIssueModelRequest_GcsSource{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[131] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ImportIssueModelRequest_GcsSource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImportIssueModelRequest_GcsSource) ProtoMessage() {} + +func (x *ImportIssueModelRequest_GcsSource) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[131] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ImportIssueModelRequest_GcsSource.ProtoReflect.Descriptor instead. +func (*ImportIssueModelRequest_GcsSource) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{45, 0} +} + +func (x *ImportIssueModelRequest_GcsSource) GetObjectUri() string { + if x != nil { + return x.ObjectUri + } + return "" +} + +// Metadata about the issue dimension. +type Dimension_IssueDimensionMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The issue ID. + IssueId string `protobuf:"bytes,1,opt,name=issue_id,json=issueId,proto3" json:"issue_id,omitempty"` + // The issue display name. + IssueDisplayName string `protobuf:"bytes,2,opt,name=issue_display_name,json=issueDisplayName,proto3" json:"issue_display_name,omitempty"` + // The parent issue model ID. + IssueModelId string `protobuf:"bytes,3,opt,name=issue_model_id,json=issueModelId,proto3" json:"issue_model_id,omitempty"` +} + +func (x *Dimension_IssueDimensionMetadata) Reset() { + *x = Dimension_IssueDimensionMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[132] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Dimension_IssueDimensionMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Dimension_IssueDimensionMetadata) ProtoMessage() {} + +func (x *Dimension_IssueDimensionMetadata) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[132] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Dimension_IssueDimensionMetadata.ProtoReflect.Descriptor instead. +func (*Dimension_IssueDimensionMetadata) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{79, 0} +} + +func (x *Dimension_IssueDimensionMetadata) GetIssueId() string { + if x != nil { + return x.IssueId + } + return "" +} + +func (x *Dimension_IssueDimensionMetadata) GetIssueDisplayName() string { + if x != nil { + return x.IssueDisplayName + } + return "" +} + +func (x *Dimension_IssueDimensionMetadata) GetIssueModelId() string { + if x != nil { + return x.IssueModelId + } + return "" +} + +// Metadata about the agent dimension. +type Dimension_AgentDimensionMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. A user-specified string representing the agent. + AgentId string `protobuf:"bytes,1,opt,name=agent_id,json=agentId,proto3" json:"agent_id,omitempty"` + // Optional. The agent's name + AgentDisplayName string `protobuf:"bytes,2,opt,name=agent_display_name,json=agentDisplayName,proto3" json:"agent_display_name,omitempty"` + // Optional. A user-specified string representing the agent's team. + AgentTeam string `protobuf:"bytes,3,opt,name=agent_team,json=agentTeam,proto3" json:"agent_team,omitempty"` +} + +func (x *Dimension_AgentDimensionMetadata) Reset() { + *x = Dimension_AgentDimensionMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[133] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Dimension_AgentDimensionMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Dimension_AgentDimensionMetadata) ProtoMessage() {} + +func (x *Dimension_AgentDimensionMetadata) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[133] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Dimension_AgentDimensionMetadata.ProtoReflect.Descriptor instead. +func (*Dimension_AgentDimensionMetadata) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{79, 1} +} + +func (x *Dimension_AgentDimensionMetadata) GetAgentId() string { + if x != nil { + return x.AgentId + } + return "" +} + +func (x *Dimension_AgentDimensionMetadata) GetAgentDisplayName() string { + if x != nil { + return x.AgentDisplayName + } + return "" +} + +func (x *Dimension_AgentDimensionMetadata) GetAgentTeam() string { + if x != nil { + return x.AgentTeam + } + return "" +} + +// Metadata about the QA question dimension. +type Dimension_QaQuestionDimensionMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. The QA scorecard ID. + QaScorecardId string `protobuf:"bytes,1,opt,name=qa_scorecard_id,json=qaScorecardId,proto3" json:"qa_scorecard_id,omitempty"` + // Optional. The QA question ID. + QaQuestionId string `protobuf:"bytes,2,opt,name=qa_question_id,json=qaQuestionId,proto3" json:"qa_question_id,omitempty"` + // Optional. The full body of the question. + QuestionBody string `protobuf:"bytes,3,opt,name=question_body,json=questionBody,proto3" json:"question_body,omitempty"` +} + +func (x *Dimension_QaQuestionDimensionMetadata) Reset() { + *x = Dimension_QaQuestionDimensionMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[134] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Dimension_QaQuestionDimensionMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Dimension_QaQuestionDimensionMetadata) ProtoMessage() {} + +func (x *Dimension_QaQuestionDimensionMetadata) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[134] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Dimension_QaQuestionDimensionMetadata.ProtoReflect.Descriptor instead. +func (*Dimension_QaQuestionDimensionMetadata) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{79, 2} +} + +func (x *Dimension_QaQuestionDimensionMetadata) GetQaScorecardId() string { + if x != nil { + return x.QaScorecardId + } + return "" +} + +func (x *Dimension_QaQuestionDimensionMetadata) GetQaQuestionId() string { + if x != nil { + return x.QaQuestionId + } + return "" +} + +func (x *Dimension_QaQuestionDimensionMetadata) GetQuestionBody() string { + if x != nil { + return x.QuestionBody + } + return "" +} + +// Metadata about the QA question-answer dimension. +// This is useful for showing the answer distribution for questions for a +// given scorecard. +type Dimension_QaQuestionAnswerDimensionMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. The QA scorecard ID. + QaScorecardId string `protobuf:"bytes,1,opt,name=qa_scorecard_id,json=qaScorecardId,proto3" json:"qa_scorecard_id,omitempty"` + // Optional. The QA question ID. + QaQuestionId string `protobuf:"bytes,2,opt,name=qa_question_id,json=qaQuestionId,proto3" json:"qa_question_id,omitempty"` + // Optional. The full body of the question. + QuestionBody string `protobuf:"bytes,3,opt,name=question_body,json=questionBody,proto3" json:"question_body,omitempty"` + // Optional. The full body of the question. + AnswerValue string `protobuf:"bytes,4,opt,name=answer_value,json=answerValue,proto3" json:"answer_value,omitempty"` +} + +func (x *Dimension_QaQuestionAnswerDimensionMetadata) Reset() { + *x = Dimension_QaQuestionAnswerDimensionMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[135] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Dimension_QaQuestionAnswerDimensionMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Dimension_QaQuestionAnswerDimensionMetadata) ProtoMessage() {} + +func (x *Dimension_QaQuestionAnswerDimensionMetadata) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[135] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Dimension_QaQuestionAnswerDimensionMetadata.ProtoReflect.Descriptor instead. +func (*Dimension_QaQuestionAnswerDimensionMetadata) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{79, 3} +} + +func (x *Dimension_QaQuestionAnswerDimensionMetadata) GetQaScorecardId() string { + if x != nil { + return x.QaScorecardId + } + return "" +} + +func (x *Dimension_QaQuestionAnswerDimensionMetadata) GetQaQuestionId() string { + if x != nil { + return x.QaQuestionId + } + return "" +} + +func (x *Dimension_QaQuestionAnswerDimensionMetadata) GetQuestionBody() string { + if x != nil { + return x.QuestionBody + } + return "" +} + +func (x *Dimension_QaQuestionAnswerDimensionMetadata) GetAnswerValue() string { + if x != nil { + return x.AnswerValue + } + return "" +} + +// A slice contains a total and (if the request specified a time granularity) +// a time series of metric values. Each slice contains a unique combination of +// the cardinality of dimensions from the request. +// +// For example, if the request specifies a single ISSUE dimension and it has a +// cardinality of 2 (i.e. the data used to compute the metrics has 2 issues in +// total), the response will have 2 slices: +// +// * Slice 1 -> dimensions=[Issue 1] +// * Slice 2 -> dimensions=[Issue 2] +type QueryMetricsResponse_Slice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A unique combination of dimensions that this slice represents. + Dimensions []*Dimension `protobuf:"bytes,1,rep,name=dimensions,proto3" json:"dimensions,omitempty"` + // The total metric value. The interval of this data point is + // [starting create time, ending create time) from the request. + Total *QueryMetricsResponse_Slice_DataPoint `protobuf:"bytes,2,opt,name=total,proto3" json:"total,omitempty"` + // A time series of metric values. This is only populated if the request + // specifies a time granularity other than NONE. + TimeSeries *QueryMetricsResponse_Slice_TimeSeries `protobuf:"bytes,3,opt,name=time_series,json=timeSeries,proto3" json:"time_series,omitempty"` +} + +func (x *QueryMetricsResponse_Slice) Reset() { + *x = QueryMetricsResponse_Slice{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[136] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryMetricsResponse_Slice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryMetricsResponse_Slice) ProtoMessage() {} + +func (x *QueryMetricsResponse_Slice) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[136] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QueryMetricsResponse_Slice.ProtoReflect.Descriptor instead. +func (*QueryMetricsResponse_Slice) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{81, 0} +} + +func (x *QueryMetricsResponse_Slice) GetDimensions() []*Dimension { + if x != nil { + return x.Dimensions + } + return nil +} + +func (x *QueryMetricsResponse_Slice) GetTotal() *QueryMetricsResponse_Slice_DataPoint { + if x != nil { + return x.Total + } + return nil +} + +func (x *QueryMetricsResponse_Slice) GetTimeSeries() *QueryMetricsResponse_Slice_TimeSeries { + if x != nil { + return x.TimeSeries + } + return nil +} + +// A data point contains the metric values mapped to an interval. +type QueryMetricsResponse_Slice_DataPoint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The measure included in this data point. + // + // Types that are assignable to Measure: + // + // *QueryMetricsResponse_Slice_DataPoint_ConversationMeasure_ + Measure isQueryMetricsResponse_Slice_DataPoint_Measure `protobuf_oneof:"measure"` + // The interval that this data point represents. + // + // * If this is the total data point, the interval is + // [starting create time, ending create time) from the request. + // * If this a data point from the time series, the interval is + // [time, time + time granularity from the request). + Interval *interval.Interval `protobuf:"bytes,1,opt,name=interval,proto3" json:"interval,omitempty"` +} + +func (x *QueryMetricsResponse_Slice_DataPoint) Reset() { + *x = QueryMetricsResponse_Slice_DataPoint{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[137] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryMetricsResponse_Slice_DataPoint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryMetricsResponse_Slice_DataPoint) ProtoMessage() {} + +func (x *QueryMetricsResponse_Slice_DataPoint) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[137] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QueryMetricsResponse_Slice_DataPoint.ProtoReflect.Descriptor instead. +func (*QueryMetricsResponse_Slice_DataPoint) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{81, 0, 0} +} + +func (m *QueryMetricsResponse_Slice_DataPoint) GetMeasure() isQueryMetricsResponse_Slice_DataPoint_Measure { + if m != nil { + return m.Measure + } + return nil +} + +func (x *QueryMetricsResponse_Slice_DataPoint) GetConversationMeasure() *QueryMetricsResponse_Slice_DataPoint_ConversationMeasure { + if x, ok := x.GetMeasure().(*QueryMetricsResponse_Slice_DataPoint_ConversationMeasure_); ok { + return x.ConversationMeasure + } + return nil +} + +func (x *QueryMetricsResponse_Slice_DataPoint) GetInterval() *interval.Interval { + if x != nil { + return x.Interval + } + return nil +} + +type isQueryMetricsResponse_Slice_DataPoint_Measure interface { + isQueryMetricsResponse_Slice_DataPoint_Measure() +} + +type QueryMetricsResponse_Slice_DataPoint_ConversationMeasure_ struct { + // The measure related to conversations. + ConversationMeasure *QueryMetricsResponse_Slice_DataPoint_ConversationMeasure `protobuf:"bytes,2,opt,name=conversation_measure,json=conversationMeasure,proto3,oneof"` +} + +func (*QueryMetricsResponse_Slice_DataPoint_ConversationMeasure_) isQueryMetricsResponse_Slice_DataPoint_Measure() { +} + +// A time series of metric values. +type QueryMetricsResponse_Slice_TimeSeries struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The data points that make up the time series . + DataPoints []*QueryMetricsResponse_Slice_DataPoint `protobuf:"bytes,4,rep,name=data_points,json=dataPoints,proto3" json:"data_points,omitempty"` +} + +func (x *QueryMetricsResponse_Slice_TimeSeries) Reset() { + *x = QueryMetricsResponse_Slice_TimeSeries{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[138] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryMetricsResponse_Slice_TimeSeries) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryMetricsResponse_Slice_TimeSeries) ProtoMessage() {} + +func (x *QueryMetricsResponse_Slice_TimeSeries) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[138] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QueryMetricsResponse_Slice_TimeSeries.ProtoReflect.Descriptor instead. +func (*QueryMetricsResponse_Slice_TimeSeries) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{81, 0, 1} +} + +func (x *QueryMetricsResponse_Slice_TimeSeries) GetDataPoints() []*QueryMetricsResponse_Slice_DataPoint { + if x != nil { + return x.DataPoints + } + return nil +} + +// The measure related to conversations. +type QueryMetricsResponse_Slice_DataPoint_ConversationMeasure struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The conversation count. + ConversationCount *int32 `protobuf:"varint,1,opt,name=conversation_count,json=conversationCount,proto3,oneof" json:"conversation_count,omitempty"` + // The average silence percentage. + AverageSilencePercentage *float32 `protobuf:"fixed32,2,opt,name=average_silence_percentage,json=averageSilencePercentage,proto3,oneof" json:"average_silence_percentage,omitempty"` + // The average duration. + AverageDuration *durationpb.Duration `protobuf:"bytes,3,opt,name=average_duration,json=averageDuration,proto3,oneof" json:"average_duration,omitempty"` + // The average turn count. + AverageTurnCount *float32 `protobuf:"fixed32,4,opt,name=average_turn_count,json=averageTurnCount,proto3,oneof" json:"average_turn_count,omitempty"` + // The average agent's sentiment score. + AverageAgentSentimentScore *float32 `protobuf:"fixed32,5,opt,name=average_agent_sentiment_score,json=averageAgentSentimentScore,proto3,oneof" json:"average_agent_sentiment_score,omitempty"` + // The average client's sentiment score. + AverageClientSentimentScore *float32 `protobuf:"fixed32,6,opt,name=average_client_sentiment_score,json=averageClientSentimentScore,proto3,oneof" json:"average_client_sentiment_score,omitempty"` + // The average customer satisfaction rating. + AverageCustomerSatisfactionRating *float64 `protobuf:"fixed64,8,opt,name=average_customer_satisfaction_rating,json=averageCustomerSatisfactionRating,proto3,oneof" json:"average_customer_satisfaction_rating,omitempty"` + // Average QA normalized score. + // Will exclude 0's in average calculation. + AverageQaNormalizedScore *float64 `protobuf:"fixed64,7,opt,name=average_qa_normalized_score,json=averageQaNormalizedScore,proto3,oneof" json:"average_qa_normalized_score,omitempty"` + // Average QA normalized score for all the tags. + QaTagScores []*QueryMetricsResponse_Slice_DataPoint_ConversationMeasure_QaTagScore `protobuf:"bytes,9,rep,name=qa_tag_scores,json=qaTagScores,proto3" json:"qa_tag_scores,omitempty"` + // Average QA normalized score averaged for questions averaged across + // all revisions of the parent scorecard. + // Will be only populated if the request specifies a dimension of + // QA_QUESTION_ID. + AverageQaQuestionNormalizedScore *float64 `protobuf:"fixed64,10,opt,name=average_qa_question_normalized_score,json=averageQaQuestionNormalizedScore,proto3,oneof" json:"average_qa_question_normalized_score,omitempty"` +} + +func (x *QueryMetricsResponse_Slice_DataPoint_ConversationMeasure) Reset() { + *x = QueryMetricsResponse_Slice_DataPoint_ConversationMeasure{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[139] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryMetricsResponse_Slice_DataPoint_ConversationMeasure) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryMetricsResponse_Slice_DataPoint_ConversationMeasure) ProtoMessage() {} + +func (x *QueryMetricsResponse_Slice_DataPoint_ConversationMeasure) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[139] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QueryMetricsResponse_Slice_DataPoint_ConversationMeasure.ProtoReflect.Descriptor instead. +func (*QueryMetricsResponse_Slice_DataPoint_ConversationMeasure) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{81, 0, 0, 0} +} + +func (x *QueryMetricsResponse_Slice_DataPoint_ConversationMeasure) GetConversationCount() int32 { + if x != nil && x.ConversationCount != nil { + return *x.ConversationCount + } + return 0 +} + +func (x *QueryMetricsResponse_Slice_DataPoint_ConversationMeasure) GetAverageSilencePercentage() float32 { + if x != nil && x.AverageSilencePercentage != nil { + return *x.AverageSilencePercentage + } + return 0 +} + +func (x *QueryMetricsResponse_Slice_DataPoint_ConversationMeasure) GetAverageDuration() *durationpb.Duration { + if x != nil { + return x.AverageDuration + } + return nil +} + +func (x *QueryMetricsResponse_Slice_DataPoint_ConversationMeasure) GetAverageTurnCount() float32 { + if x != nil && x.AverageTurnCount != nil { + return *x.AverageTurnCount + } + return 0 +} + +func (x *QueryMetricsResponse_Slice_DataPoint_ConversationMeasure) GetAverageAgentSentimentScore() float32 { + if x != nil && x.AverageAgentSentimentScore != nil { + return *x.AverageAgentSentimentScore + } + return 0 +} + +func (x *QueryMetricsResponse_Slice_DataPoint_ConversationMeasure) GetAverageClientSentimentScore() float32 { + if x != nil && x.AverageClientSentimentScore != nil { + return *x.AverageClientSentimentScore + } + return 0 +} + +func (x *QueryMetricsResponse_Slice_DataPoint_ConversationMeasure) GetAverageCustomerSatisfactionRating() float64 { + if x != nil && x.AverageCustomerSatisfactionRating != nil { + return *x.AverageCustomerSatisfactionRating + } + return 0 +} + +func (x *QueryMetricsResponse_Slice_DataPoint_ConversationMeasure) GetAverageQaNormalizedScore() float64 { + if x != nil && x.AverageQaNormalizedScore != nil { + return *x.AverageQaNormalizedScore + } + return 0 +} + +func (x *QueryMetricsResponse_Slice_DataPoint_ConversationMeasure) GetQaTagScores() []*QueryMetricsResponse_Slice_DataPoint_ConversationMeasure_QaTagScore { + if x != nil { + return x.QaTagScores + } + return nil +} + +func (x *QueryMetricsResponse_Slice_DataPoint_ConversationMeasure) GetAverageQaQuestionNormalizedScore() float64 { + if x != nil && x.AverageQaQuestionNormalizedScore != nil { + return *x.AverageQaQuestionNormalizedScore + } + return 0 +} + +// Average QA normalized score for the tag. +type QueryMetricsResponse_Slice_DataPoint_ConversationMeasure_QaTagScore struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Tag name. + Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` + // Average tag normalized score per tag. + AverageTagNormalizedScore float64 `protobuf:"fixed64,2,opt,name=average_tag_normalized_score,json=averageTagNormalizedScore,proto3" json:"average_tag_normalized_score,omitempty"` +} + +func (x *QueryMetricsResponse_Slice_DataPoint_ConversationMeasure_QaTagScore) Reset() { + *x = QueryMetricsResponse_Slice_DataPoint_ConversationMeasure_QaTagScore{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[140] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QueryMetricsResponse_Slice_DataPoint_ConversationMeasure_QaTagScore) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryMetricsResponse_Slice_DataPoint_ConversationMeasure_QaTagScore) ProtoMessage() {} + +func (x *QueryMetricsResponse_Slice_DataPoint_ConversationMeasure_QaTagScore) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[140] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QueryMetricsResponse_Slice_DataPoint_ConversationMeasure_QaTagScore.ProtoReflect.Descriptor instead. +func (*QueryMetricsResponse_Slice_DataPoint_ConversationMeasure_QaTagScore) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{81, 0, 0, 0, 0} +} + +func (x *QueryMetricsResponse_Slice_DataPoint_ConversationMeasure_QaTagScore) GetTag() string { + if x != nil { + return x.Tag + } + return "" +} + +func (x *QueryMetricsResponse_Slice_DataPoint_ConversationMeasure_QaTagScore) GetAverageTagNormalizedScore() float64 { + if x != nil { + return x.AverageTagNormalizedScore + } + return 0 +} + +// Contains validation results for a question in the tuning request. +type TuneQaScorecardRevisionMetadata_QaQuestionDatasetValidationResult struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. The resource path of the question whose dataset was + // evaluated for tuning. + Question string `protobuf:"bytes,1,opt,name=question,proto3" json:"question,omitempty"` + // A list of any applicable data validation warnings about the question's + // feedback labels. + DatasetValidationWarnings []DatasetValidationWarning `protobuf:"varint,2,rep,packed,name=dataset_validation_warnings,json=datasetValidationWarnings,proto3,enum=google.cloud.contactcenterinsights.v1.DatasetValidationWarning" json:"dataset_validation_warnings,omitempty"` + // The number of valid feedback labels in the question's dataset. + ValidFeedbackLabelsCount int32 `protobuf:"varint,3,opt,name=valid_feedback_labels_count,json=validFeedbackLabelsCount,proto3" json:"valid_feedback_labels_count,omitempty"` +} + +func (x *TuneQaScorecardRevisionMetadata_QaQuestionDatasetValidationResult) Reset() { + *x = TuneQaScorecardRevisionMetadata_QaQuestionDatasetValidationResult{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[141] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TuneQaScorecardRevisionMetadata_QaQuestionDatasetValidationResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TuneQaScorecardRevisionMetadata_QaQuestionDatasetValidationResult) ProtoMessage() {} + +func (x *TuneQaScorecardRevisionMetadata_QaQuestionDatasetValidationResult) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[141] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TuneQaScorecardRevisionMetadata_QaQuestionDatasetValidationResult.ProtoReflect.Descriptor instead. +func (*TuneQaScorecardRevisionMetadata_QaQuestionDatasetValidationResult) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{97, 0} +} + +func (x *TuneQaScorecardRevisionMetadata_QaQuestionDatasetValidationResult) GetQuestion() string { + if x != nil { + return x.Question + } + return "" +} + +func (x *TuneQaScorecardRevisionMetadata_QaQuestionDatasetValidationResult) GetDatasetValidationWarnings() []DatasetValidationWarning { + if x != nil { + return x.DatasetValidationWarnings + } + return nil +} + +func (x *TuneQaScorecardRevisionMetadata_QaQuestionDatasetValidationResult) GetValidFeedbackLabelsCount() int32 { + if x != nil { + return x.ValidFeedbackLabelsCount + } + return 0 +} + +// Contains performance metrics for each QaQuestion in the +// TuneScorecardRevision request. +type TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. The resource path of the question whose dataset was + // evaluated for tuning. + Question string `protobuf:"bytes,1,opt,name=question,proto3" json:"question,omitempty"` + // Output only. The metrics for the question's dataset. + Metrics *TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics_Metrics `protobuf:"bytes,2,opt,name=metrics,proto3" json:"metrics,omitempty"` +} + +func (x *TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics) Reset() { + *x = TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[142] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics) ProtoMessage() {} + +func (x *TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[142] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics.ProtoReflect.Descriptor instead. +func (*TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{97, 1} +} + +func (x *TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics) GetQuestion() string { + if x != nil { + return x.Question + } + return "" +} + +func (x *TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics) GetMetrics() *TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics_Metrics { + if x != nil { + return x.Metrics + } + return nil +} + +// Performance metrics for the question's dataset calculated over the tuned +// model. +type TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics_Metrics struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Accuracy of the question's dataset. + Accuracy float64 `protobuf:"fixed64,1,opt,name=accuracy,proto3" json:"accuracy,omitempty"` +} + +func (x *TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics_Metrics) Reset() { + *x = TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics_Metrics{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[143] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics_Metrics) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics_Metrics) ProtoMessage() {} + +func (x *TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics_Metrics) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[143] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics_Metrics.ProtoReflect.Descriptor instead. +func (*TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics_Metrics) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{97, 1, 0} +} + +func (x *TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics_Metrics) GetAccuracy() float64 { + if x != nil { + return x.Accuracy + } + return 0 +} + +// Google Cloud Storage Object details to get the feedback label file from. +type BulkUploadFeedbackLabelsRequest_GcsSource struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. File format which will be ingested. + Format BulkUploadFeedbackLabelsRequest_GcsSource_Format `protobuf:"varint,1,opt,name=format,proto3,enum=google.cloud.contactcenterinsights.v1.BulkUploadFeedbackLabelsRequest_GcsSource_Format" json:"format,omitempty"` + // Required. The Google Cloud Storage URI of the file to import. + // Format: `gs://bucket_name/object_name` + ObjectUri string `protobuf:"bytes,2,opt,name=object_uri,json=objectUri,proto3" json:"object_uri,omitempty"` +} + +func (x *BulkUploadFeedbackLabelsRequest_GcsSource) Reset() { + *x = BulkUploadFeedbackLabelsRequest_GcsSource{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[144] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BulkUploadFeedbackLabelsRequest_GcsSource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BulkUploadFeedbackLabelsRequest_GcsSource) ProtoMessage() {} + +func (x *BulkUploadFeedbackLabelsRequest_GcsSource) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[144] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BulkUploadFeedbackLabelsRequest_GcsSource.ProtoReflect.Descriptor instead. +func (*BulkUploadFeedbackLabelsRequest_GcsSource) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{113, 0} +} + +func (x *BulkUploadFeedbackLabelsRequest_GcsSource) GetFormat() BulkUploadFeedbackLabelsRequest_GcsSource_Format { + if x != nil { + return x.Format + } + return BulkUploadFeedbackLabelsRequest_GcsSource_FORMAT_UNSPECIFIED +} + +func (x *BulkUploadFeedbackLabelsRequest_GcsSource) GetObjectUri() string { + if x != nil { + return x.ObjectUri + } + return "" +} + +// Statistics for BulkUploadFeedbackLabels operation. +type BulkUploadFeedbackLabelsMetadata_UploadStats struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The number of objects processed during the upload operation. + ProcessedObjectCount int32 `protobuf:"varint,1,opt,name=processed_object_count,json=processedObjectCount,proto3" json:"processed_object_count,omitempty"` + // The number of objects skipped because of failed validation + FailedValidationCount int32 `protobuf:"varint,2,opt,name=failed_validation_count,json=failedValidationCount,proto3" json:"failed_validation_count,omitempty"` + // The number of new feedback labels added during this ingest operation. + SuccessfulUploadCount int32 `protobuf:"varint,3,opt,name=successful_upload_count,json=successfulUploadCount,proto3" json:"successful_upload_count,omitempty"` +} + +func (x *BulkUploadFeedbackLabelsMetadata_UploadStats) Reset() { + *x = BulkUploadFeedbackLabelsMetadata_UploadStats{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[145] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BulkUploadFeedbackLabelsMetadata_UploadStats) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BulkUploadFeedbackLabelsMetadata_UploadStats) ProtoMessage() {} + +func (x *BulkUploadFeedbackLabelsMetadata_UploadStats) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[145] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BulkUploadFeedbackLabelsMetadata_UploadStats.ProtoReflect.Descriptor instead. +func (*BulkUploadFeedbackLabelsMetadata_UploadStats) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{115, 0} +} + +func (x *BulkUploadFeedbackLabelsMetadata_UploadStats) GetProcessedObjectCount() int32 { + if x != nil { + return x.ProcessedObjectCount + } + return 0 +} + +func (x *BulkUploadFeedbackLabelsMetadata_UploadStats) GetFailedValidationCount() int32 { + if x != nil { + return x.FailedValidationCount + } + return 0 +} + +func (x *BulkUploadFeedbackLabelsMetadata_UploadStats) GetSuccessfulUploadCount() int32 { + if x != nil { + return x.SuccessfulUploadCount + } + return 0 +} + +// Google Cloud Storage Object details to write the feedback labels to. +type BulkDownloadFeedbackLabelsRequest_GcsDestination struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. File format in which the labels will be exported. + Format BulkDownloadFeedbackLabelsRequest_GcsDestination_Format `protobuf:"varint,1,opt,name=format,proto3,enum=google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsRequest_GcsDestination_Format" json:"format,omitempty"` + // Required. The Google Cloud Storage URI to write the feedback labels to. + // The file name will be used as a prefix for the files written to the + // bucket if the output needs to be split across multiple files, otherwise + // it will be used as is. The file extension will be appended to the file + // name based on the format selected. + // + // E.g. `gs://bucket_name/object_uri_prefix` + ObjectUri string `protobuf:"bytes,2,opt,name=object_uri,json=objectUri,proto3" json:"object_uri,omitempty"` + // Optional. Add whitespace to the JSON file. Makes easier to read, but + // increases file size. Only applicable for JSON format. + AddWhitespace bool `protobuf:"varint,3,opt,name=add_whitespace,json=addWhitespace,proto3" json:"add_whitespace,omitempty"` + // Optional. Always print fields with no presence. + // This is useful for printing fields that are not set, like implicit 0 + // value or empty lists/maps. Only applicable for JSON format. + AlwaysPrintEmptyFields bool `protobuf:"varint,4,opt,name=always_print_empty_fields,json=alwaysPrintEmptyFields,proto3" json:"always_print_empty_fields,omitempty"` + // Optional. The number of records per file. Applicable for either format. + RecordsPerFileCount int64 `protobuf:"varint,5,opt,name=records_per_file_count,json=recordsPerFileCount,proto3" json:"records_per_file_count,omitempty"` +} + +func (x *BulkDownloadFeedbackLabelsRequest_GcsDestination) Reset() { + *x = BulkDownloadFeedbackLabelsRequest_GcsDestination{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[146] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BulkDownloadFeedbackLabelsRequest_GcsDestination) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BulkDownloadFeedbackLabelsRequest_GcsDestination) ProtoMessage() {} + +func (x *BulkDownloadFeedbackLabelsRequest_GcsDestination) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[146] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BulkDownloadFeedbackLabelsRequest_GcsDestination.ProtoReflect.Descriptor instead. +func (*BulkDownloadFeedbackLabelsRequest_GcsDestination) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{116, 0} +} + +func (x *BulkDownloadFeedbackLabelsRequest_GcsDestination) GetFormat() BulkDownloadFeedbackLabelsRequest_GcsDestination_Format { + if x != nil { + return x.Format + } + return BulkDownloadFeedbackLabelsRequest_GcsDestination_FORMAT_UNSPECIFIED +} + +func (x *BulkDownloadFeedbackLabelsRequest_GcsDestination) GetObjectUri() string { + if x != nil { + return x.ObjectUri + } + return "" +} + +func (x *BulkDownloadFeedbackLabelsRequest_GcsDestination) GetAddWhitespace() bool { + if x != nil { + return x.AddWhitespace + } + return false +} + +func (x *BulkDownloadFeedbackLabelsRequest_GcsDestination) GetAlwaysPrintEmptyFields() bool { + if x != nil { + return x.AlwaysPrintEmptyFields + } + return false +} + +func (x *BulkDownloadFeedbackLabelsRequest_GcsDestination) GetRecordsPerFileCount() int64 { + if x != nil { + return x.RecordsPerFileCount + } + return 0 +} + +// Statistics for BulkDownloadFeedbackLabels operation. +type BulkDownloadFeedbackLabelsMetadata_DownloadStats struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The number of objects processed during the download operation. + ProcessedObjectCount int32 `protobuf:"varint,1,opt,name=processed_object_count,json=processedObjectCount,proto3" json:"processed_object_count,omitempty"` + // The number of new feedback labels downloaded during this operation. + // Different from "processed" because some labels might not be downloaded + // because an error. + SuccessfulDownloadCount int32 `protobuf:"varint,2,opt,name=successful_download_count,json=successfulDownloadCount,proto3" json:"successful_download_count,omitempty"` + // Total number of files written to the provided Cloud Storage bucket. + TotalFilesWritten int32 `protobuf:"varint,3,opt,name=total_files_written,json=totalFilesWritten,proto3" json:"total_files_written,omitempty"` + // Output only. Full name of the files written to Cloud storage. + FileNames []string `protobuf:"bytes,4,rep,name=file_names,json=fileNames,proto3" json:"file_names,omitempty"` +} + +func (x *BulkDownloadFeedbackLabelsMetadata_DownloadStats) Reset() { + *x = BulkDownloadFeedbackLabelsMetadata_DownloadStats{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[147] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BulkDownloadFeedbackLabelsMetadata_DownloadStats) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BulkDownloadFeedbackLabelsMetadata_DownloadStats) ProtoMessage() {} + +func (x *BulkDownloadFeedbackLabelsMetadata_DownloadStats) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[147] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BulkDownloadFeedbackLabelsMetadata_DownloadStats.ProtoReflect.Descriptor instead. +func (*BulkDownloadFeedbackLabelsMetadata_DownloadStats) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescGZIP(), []int{118, 0} +} + +func (x *BulkDownloadFeedbackLabelsMetadata_DownloadStats) GetProcessedObjectCount() int32 { + if x != nil { + return x.ProcessedObjectCount + } + return 0 +} + +func (x *BulkDownloadFeedbackLabelsMetadata_DownloadStats) GetSuccessfulDownloadCount() int32 { + if x != nil { + return x.SuccessfulDownloadCount + } + return 0 +} + +func (x *BulkDownloadFeedbackLabelsMetadata_DownloadStats) GetTotalFilesWritten() int32 { + if x != nil { + return x.TotalFilesWritten + } + return 0 +} + +func (x *BulkDownloadFeedbackLabelsMetadata_DownloadStats) GetFileNames() []string { + if x != nil { + return x.FileNames + } + return nil +} + +var File_google_cloud_contactcenterinsights_v1_contact_center_insights_proto protoreflect.FileDescriptor + +var file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDesc = []byte{ + 0x0a, 0x43, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x5f, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x25, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, @@ -5436,127 +10005,1503 @@ var file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_raw 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x35, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6c, - 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, - 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, - 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x76, 0x0a, 0x15, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, - 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xa2, 0x0c, 0x0a, - 0x16, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x61, 0x76, 0x65, 0x72, 0x61, - 0x67, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x61, 0x76, - 0x65, 0x72, 0x61, 0x67, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, - 0x12, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x61, 0x76, 0x65, 0x72, 0x61, - 0x67, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x12, 0x63, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x96, 0x01, 0x0a, 0x19, 0x73, - 0x6d, 0x61, 0x72, 0x74, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x65, 0x72, - 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x5a, + 0x68, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6c, + 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, + 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, + 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, 0x70, + 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0x76, 0x0a, 0x15, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x08, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, + 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xa2, 0x0c, 0x0a, 0x16, 0x43, 0x61, 0x6c, + 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x64, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, + 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x76, 0x65, + 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x54, 0x75, + 0x72, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x96, 0x01, 0x0a, 0x19, 0x73, 0x6d, 0x61, 0x72, 0x74, + 0x5f, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x5a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x6d, 0x61, 0x72, 0x74, 0x48, + 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x17, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x48, 0x69, 0x67, + 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, + 0x99, 0x01, 0x0a, 0x1a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x6c, + 0x69, 0x67, 0x68, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x5b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6c, + 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x69, 0x67, 0x68, 0x6c, 0x69, + 0x67, 0x68, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x18, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, + 0x68, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x78, 0x0a, 0x0d, 0x69, + 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x4f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, + 0x6c, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x13, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x08, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x54, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6c, 0x63, + 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x69, 0x73, 0x73, 0x75, 0x65, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x8d, 0x01, 0x0a, + 0x1e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, + 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, + 0x1b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x1a, 0xb5, 0x02, 0x0a, + 0x0a, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x46, 0x0a, 0x11, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x69, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6c, 0x63, + 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x2e, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x1a, 0x74, + 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x4a, 0x0a, 0x1c, 0x53, 0x6d, 0x61, 0x72, 0x74, 0x48, 0x69, 0x67, + 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x4b, 0x0a, 0x1d, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x69, 0x67, 0x68, 0x6c, 0x69, + 0x67, 0x68, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, + 0x11, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x8c, + 0x01, 0x0a, 0x16, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x5c, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xec, 0x02, + 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x5d, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x33, 0x0a, 0x31, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6c, + 0x0a, 0x12, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x11, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xe5, 0x01, 0x0a, + 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, + 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x5c, 0x0a, + 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x63, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x63, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xb1, 0x03, 0x0a, 0x19, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x5c, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x66, 0x0a, 0x10, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5d, 0x0a, 0x0d, 0x73, 0x70, 0x65, + 0x65, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x65, 0x65, 0x63, 0x68, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x73, 0x70, 0x65, 0x65, + 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xa6, 0x03, 0x0a, 0x1a, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, + 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x5f, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x12, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x75, 0x0a, 0x18, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x16, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x65, 0x64, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x22, 0x9e, 0x02, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, + 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, + 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, + 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, + 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, + 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x4b, 0x0a, 0x04, 0x76, 0x69, 0x65, 0x77, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x69, 0x65, 0x77, 0x52, 0x04, 0x76, 0x69, + 0x65, 0x77, 0x22, 0x9e, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x59, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, + 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x22, 0xb4, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xe0, 0x41, + 0x02, 0xfa, 0x41, 0x33, 0x0a, 0x31, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a, + 0x04, 0x76, 0x69, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x56, 0x69, 0x65, 0x77, 0x52, 0x04, 0x76, 0x69, 0x65, 0x77, 0x22, 0xb6, 0x01, 0x0a, 0x19, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5c, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, + 0x61, 0x73, 0x6b, 0x22, 0x80, 0x01, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x4d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x39, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x33, 0x0a, 0x31, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0xad, 0x0b, 0x0a, 0x1a, 0x49, 0x6e, 0x67, 0x65, 0x73, + 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6c, 0x0a, 0x0a, 0x67, 0x63, 0x73, 0x5f, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x47, 0x63, 0x73, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x67, 0x63, 0x73, 0x53, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x94, 0x01, 0x0a, 0x18, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x58, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, + 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x48, 0x01, 0x52, 0x16, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, + 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x85, 0x01, + 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x54, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x66, 0x0a, 0x10, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x72, 0x65, + 0x64, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5d, 0x0a, + 0x0d, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x65, + 0x65, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, + 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x29, 0x0a, 0x0b, + 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x9d, 0x03, 0x0a, 0x09, 0x47, 0x63, 0x73, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, + 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x55, 0x72, 0x69, 0x12, 0x8f, 0x01, 0x0a, 0x12, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x5c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, + 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x62, 0x75, 0x63, 0x6b, 0x65, + 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x13, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x75, + 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, + 0x11, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x55, + 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x0c, 0x20, + 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x12, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x51, 0x0a, 0x10, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x43, 0x52, 0x49, + 0x50, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x10, 0x02, 0x42, + 0x16, 0x0a, 0x14, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x62, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x1a, 0x71, 0x0a, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x57, 0x0a, 0x06, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x06, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x1a, 0x8e, 0x01, 0x0a, 0x12, 0x43, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x28, 0x0a, 0x0d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x2e, 0x0a, 0x10, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x42, 0x08, 0x0a, 0x06, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0xe7, 0x05, 0x0a, 0x1b, 0x49, 0x6e, 0x67, 0x65, 0x73, + 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x60, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, + 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, + 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x9e, 0x01, 0x0a, 0x1a, 0x69, 0x6e, 0x67, 0x65, 0x73, + 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x5b, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x18, 0x69, + 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x1a, 0x86, 0x02, 0x0a, 0x18, 0x49, 0x6e, 0x67, 0x65, + 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, + 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x14, 0x70, 0x72, 0x6f, 0x63, 0x65, + 0x73, 0x73, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x3d, 0x0a, 0x18, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x5f, 0x73, 0x6b, + 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x16, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3b, + 0x0a, 0x17, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x5f, 0x69, 0x6e, 0x67, + 0x65, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x15, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, + 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x13, 0x66, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x11, 0x66, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x22, 0x1d, 0x0a, 0x1b, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xbc, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x33, 0x0a, 0x31, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x50, 0x0a, 0x08, + 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x6d, - 0x61, 0x72, 0x74, 0x48, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x65, 0x72, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x17, 0x73, 0x6d, 0x61, 0x72, - 0x74, 0x48, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x65, 0x73, 0x12, 0x99, 0x01, 0x0a, 0x1a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x68, - 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x5b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x22, 0xbc, + 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x33, 0x0a, 0x31, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x8b, 0x01, + 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x69, - 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x18, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x69, 0x67, - 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, - 0x78, 0x0a, 0x0d, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, + 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x5f, 0x0a, 0x12, 0x47, + 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x49, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x35, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2f, 0x0a, 0x2d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x62, 0x0a, 0x15, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x35, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2f, 0x0a, 0x2d, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0xa0, 0x02, 0x0a, 0x1f, 0x42, 0x75, 0x6c, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, + 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x13, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, + 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x02, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x12, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, + 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x67, 0x0a, 0x12, 0x61, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0c, 0x69, 0x73, 0x73, - 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x13, 0x69, 0x73, - 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x54, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x52, 0x11, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x22, 0xeb, 0x03, 0x0a, 0x20, 0x42, 0x75, 0x6c, 0x6b, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x7a, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x60, 0x0a, 0x07, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, + 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, + 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x16, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x66, 0x61, 0x69, 0x6c, + 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x43, 0x0a, 0x1e, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x1b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x65, 0x64, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x3e, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x73, 0x22, 0x92, 0x01, 0x0a, 0x20, 0x42, 0x75, 0x6c, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, + 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x66, 0x75, 0x6c, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x73, 0x75, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x66, 0x75, 0x6c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x13, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xbb, 0x01, 0x0a, 0x1e, 0x42, 0x75, 0x6c, 0x6b, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, + 0x6d, 0x61, 0x78, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, + 0x6f, 0x72, 0x63, 0x65, 0x22, 0xb1, 0x02, 0x0a, 0x1f, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x5f, 0x0a, 0x07, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, + 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, + 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x21, 0x0a, 0x1f, 0x42, 0x75, 0x6c, 0x6b, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf3, 0x04, 0x0a, 0x19, + 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x8a, 0x01, 0x0a, 0x15, 0x62, 0x69, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x54, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x69, 0x67, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, + 0x00, 0x52, 0x13, 0x62, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x12, 0x17, 0x0a, 0x07, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x6b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x7e, 0x0a, 0x11, 0x77, 0x72, + 0x69, 0x74, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x51, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x44, 0x69, 0x73, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x77, 0x72, 0x69, 0x74, 0x65, 0x44, + 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x69, 0x0a, 0x13, 0x42, 0x69, + 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, + 0x12, 0x1d, 0x0a, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x5b, 0x0a, 0x10, 0x57, 0x72, 0x69, 0x74, 0x65, 0x44, 0x69, + 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x1d, 0x57, 0x52, 0x49, + 0x54, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, + 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x54, 0x52, 0x55, 0x4e, 0x43, 0x41, 0x54, 0x45, 0x10, 0x01, + 0x12, 0x10, 0x0a, 0x0c, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x45, 0x4e, 0x44, + 0x10, 0x02, 0x42, 0x0d, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0xb1, 0x02, 0x0a, 0x1a, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x5a, + 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0e, 0x70, 0x61, + 0x72, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0xb5, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x73, + 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x0b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0xf2, 0x01, 0x0a, 0x18, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, + 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, + 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x69, - 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x12, 0x8d, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x72, - 0x69, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x22, 0xaf, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x57, 0x0a, 0x0b, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, + 0x73, 0x6b, 0x22, 0x5b, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, + 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, + 0x6f, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0c, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x52, 0x0b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, + 0x22, 0x63, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x37, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x31, 0x0a, 0x2f, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x66, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, + 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x4b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x37, + 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x31, 0x0a, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, + 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xf2, 0x01, + 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, + 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x22, 0x66, 0x0a, 0x17, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x37, 0xe0, 0x41, 0x02, + 0xfa, 0x41, 0x31, 0x0a, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf2, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x58, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x68, 0x0a, 0x19, 0x55, + 0x6e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x37, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x31, 0x0a, 0x2f, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x55, 0x6e, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0xf6, 0x01, 0x0a, 0x1a, 0x55, 0x6e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x5a, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa5, 0x02, 0x0a, + 0x17, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x78, 0x0a, 0x0f, 0x67, 0x63, 0x73, 0x5f, + 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x4d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x47, 0x63, 0x73, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x0e, 0x67, 0x63, 0x73, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x37, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x31, 0x0a, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, + 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x1a, + 0x34, 0x0a, 0x0e, 0x47, 0x63, 0x73, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x22, 0x0a, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x55, 0x72, 0x69, 0x42, 0x0d, 0x0a, 0x0b, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1a, 0x0a, 0x18, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, + 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xe8, 0x01, 0x0a, 0x18, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, + 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, + 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x58, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb1, 0x02, 0x0a, 0x17, + 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x69, 0x0a, 0x0a, 0x67, 0x63, 0x73, 0x5f, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x47, 0x63, 0x73, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x67, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, + 0x6e, 0x65, 0x77, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x77, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x1a, 0x2f, 0x0a, 0x09, 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x55, 0x72, 0x69, 0x42, 0x08, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, + 0x1a, 0x0a, 0x18, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe8, 0x01, 0x0a, 0x18, + 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x07, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x59, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x49, 0x73, 0x73, + 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2c, 0x0a, + 0x2a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x64, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x37, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x31, 0x0a, 0x2f, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, + 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x5a, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x49, + 0x73, 0x73, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, + 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x06, 0x69, 0x73, 0x73, + 0x75, 0x65, 0x73, 0x22, 0x9a, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x73, + 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x05, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, - 0x69, 0x65, 0x73, 0x52, 0x1b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, - 0x1a, 0xb5, 0x02, 0x0a, 0x0a, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, - 0x46, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x44, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x69, 0x0a, 0x06, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, + 0x22, 0x5c, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7b, + 0x0a, 0x1f, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x58, 0x0a, 0x0b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x37, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x31, 0x0a, 0x2f, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, + 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x84, 0x01, 0x0a, 0x20, + 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x60, 0x0a, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, - 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x06, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x73, 0x1a, 0x74, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x39, - 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x22, 0xc1, 0x01, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x68, 0x72, + 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x12, 0x60, 0x0a, 0x0e, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x22, 0xb2, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, + 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xa3, 0x01, 0x0a, 0x1a, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x0f, 0x70, 0x68, + 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x72, 0x61, + 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x0e, 0x70, 0x68, 0x72, 0x61, 0x73, + 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, + 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x22, 0x69, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4e, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3a, 0xe0, 0x41, 0x02, 0xfa, + 0x41, 0x34, 0x0a, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x6c, 0x0a, 0x1a, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4e, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x34, + 0x0a, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x72, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x1a, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x60, 0x0a, 0x0e, 0x70, 0x68, 0x72, + 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x70, 0x68, + 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x0b, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x5f, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x35, 0xe0, 0x41, + 0x02, 0xfa, 0x41, 0x2f, 0x0a, 0x2d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xab, 0x01, 0x0a, 0x15, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0xbd, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x5d, 0x0a, 0x0d, 0x61, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, + 0x52, 0x75, 0x6c, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x61, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x22, 0x67, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x4d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x39, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x33, 0x0a, 0x31, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0xbc, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5d, + 0x0a, 0x0d, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x0c, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x40, 0x0a, + 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x4a, 0x0a, 0x1c, 0x53, 0x6d, 0x61, 0x72, - 0x74, 0x48, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4b, 0x0a, 0x1d, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x69, - 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x8c, 0x01, 0x0a, 0x16, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, - 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, - 0x5c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, + 0x6a, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xe0, 0x41, 0x02, 0xfa, + 0x41, 0x33, 0x0a, 0x31, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa3, 0x01, 0x0a, 0x18, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, + 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, + 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x22, 0x9f, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x5a, 0x0a, 0x0e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x75, 0x6c, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x0d, 0x61, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, + 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x22, 0x6b, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x4f, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3b, 0xe0, + 0x41, 0x02, 0xfa, 0x41, 0x35, 0x0a, 0x33, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x86, 0x01, 0x0a, 0x1f, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x45, + 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x63, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x65, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x22, 0x22, 0x0a, 0x20, 0x49, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc2, 0x02, + 0x0a, 0x20, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x45, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x65, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, + 0x6c, 0x69, 0x7a, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, + 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, + 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x73, 0x22, 0x9c, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x69, 0x65, + 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, + 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x76, + 0x69, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x76, 0x69, 0x65, + 0x77, 0x22, 0x57, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x31, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2b, 0x0a, 0x29, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x56, 0x69, 0x65, 0x77, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x10, 0x4c, + 0x69, 0x73, 0x74, 0x56, 0x69, 0x65, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x7e, + 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x65, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x52, + 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x96, + 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x76, 0x69, 0x65, 0x77, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x76, 0x69, 0x65, 0x77, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x5a, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xe0, 0x41, 0x02, 0xfa, + 0x41, 0x2b, 0x0a, 0x29, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x56, 0x69, 0x65, 0x77, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x22, 0xfe, 0x0c, 0x0a, 0x09, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x88, 0x01, 0x0a, 0x18, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x64, 0x69, 0x6d, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x6d, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x44, 0x69, 0x6d, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x48, 0x00, 0x52, 0x16, 0x69, 0x73, 0x73, 0x75, 0x65, 0x44, 0x69, 0x6d, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x88, 0x01, 0x0a, + 0x18, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, + 0x16, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x98, 0x01, 0x0a, 0x1e, 0x71, 0x61, 0x5f, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x4c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x2e, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x6d, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x1b, 0x71, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x12, 0xab, 0x01, 0x0a, 0x25, 0x71, 0x61, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x52, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x6d, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, + 0x6e, 0x73, 0x77, 0x65, 0x72, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x21, 0x71, + 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x44, + 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x62, 0x0a, 0x0d, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x52, 0x0c, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x4b, 0x65, 0x79, 0x1a, 0xee, 0x01, 0x0a, 0x16, 0x49, 0x73, 0x73, 0x75, 0x65, 0x44, 0x69, + 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x4a, 0x0a, 0x08, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x2f, 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, + 0x75, 0x65, 0x52, 0x07, 0x69, 0x73, 0x73, 0x75, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x69, + 0x73, 0x73, 0x75, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x73, 0x73, 0x75, 0x65, 0x44, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x5a, 0x0a, 0x0e, 0x69, 0x73, 0x73, + 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x34, 0xfa, 0x41, 0x31, 0x0a, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, + 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x0c, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x49, 0x64, 0x1a, 0x8f, 0x01, 0x0a, 0x16, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x44, + 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x31, 0x0a, 0x12, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x10, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x65, 0x61, + 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x1a, 0x9f, 0x01, 0x0a, 0x1b, 0x51, 0x61, 0x51, 0x75, + 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x0f, 0x71, 0x61, 0x5f, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, + 0x72, 0x64, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x0e, 0x71, 0x61, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x0c, 0x71, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, + 0x28, 0x0a, 0x0d, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6f, 0x64, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x64, 0x79, 0x1a, 0xcd, 0x01, 0x0a, 0x21, 0x51, 0x61, + 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x44, 0x69, + 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, + 0x2b, 0x0a, 0x0f, 0x71, 0x61, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x71, + 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x0e, + 0x71, 0x61, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x71, 0x61, 0x51, 0x75, 0x65, + 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0d, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x64, + 0x79, 0x12, 0x26, 0x0a, 0x0c, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x61, 0x6e, + 0x73, 0x77, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x0c, 0x44, 0x69, + 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x49, + 0x4d, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x53, 0x53, + 0x55, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, + 0x0e, 0x0a, 0x0a, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x10, 0x03, 0x12, + 0x12, 0x0a, 0x0e, 0x51, 0x41, 0x5f, 0x51, 0x55, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, + 0x44, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x51, 0x41, 0x5f, 0x51, 0x55, 0x45, 0x53, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x41, 0x4e, 0x53, 0x57, 0x45, 0x52, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, + 0x05, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, 0x53, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x06, 0x42, 0x14, + 0x0a, 0x12, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x22, 0x88, 0x04, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x08, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, + 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x12, 0x75, 0x0a, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x67, 0x72, 0x61, 0x6e, 0x75, 0x6c, 0x61, + 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, 0x6e, 0x75, + 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x52, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, 0x6e, + 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x12, 0x50, 0x0a, 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x64, + 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3d, 0x0a, 0x0c, 0x6d, 0x65, 0x61, + 0x73, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0b, 0x6d, 0x65, 0x61, + 0x73, 0x75, 0x72, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x84, 0x01, 0x0a, 0x0f, 0x54, 0x69, 0x6d, + 0x65, 0x47, 0x72, 0x61, 0x6e, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x12, 0x20, 0x0a, 0x1c, + 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x4e, 0x55, 0x4c, 0x41, 0x52, 0x49, 0x54, 0x59, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, + 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x41, 0x49, 0x4c, + 0x59, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x48, 0x4f, 0x55, 0x52, 0x4c, 0x59, 0x10, 0x03, 0x12, + 0x0e, 0x0a, 0x0a, 0x50, 0x45, 0x52, 0x5f, 0x4d, 0x49, 0x4e, 0x55, 0x54, 0x45, 0x10, 0x04, 0x12, + 0x11, 0x0a, 0x0d, 0x50, 0x45, 0x52, 0x5f, 0x35, 0x5f, 0x4d, 0x49, 0x4e, 0x55, 0x54, 0x45, 0x53, + 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x4f, 0x4e, 0x54, 0x48, 0x4c, 0x59, 0x10, 0x06, 0x22, + 0xab, 0x11, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, + 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x06, + 0x73, 0x6c, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x52, + 0x06, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x73, 0x12, 0x76, 0x0a, 0x13, 0x6d, 0x61, 0x63, 0x72, 0x6f, + 0x5f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x2e, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x48, 0x00, 0x52, 0x11, 0x6d, 0x61, 0x63, 0x72, 0x6f, + 0x41, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x1a, + 0xa3, 0x0e, 0x0a, 0x05, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x12, 0x50, 0x0a, 0x0a, 0x64, 0x69, 0x6d, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x61, 0x0a, 0x05, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x6d, + 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, + 0x73, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x1a, 0xf9, 0x0a, + 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x94, 0x01, 0x0a, 0x14, + 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x61, + 0x73, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x5f, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, 0x13, 0x63, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x61, 0x73, 0x75, + 0x72, 0x65, 0x12, 0x31, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, + 0x70, 0x65, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x08, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x1a, 0x96, 0x09, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x12, 0x32, 0x0a, + 0x12, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x11, 0x63, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x41, 0x0a, 0x1a, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x6c, + 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x02, 0x48, 0x01, 0x52, 0x18, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, + 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x10, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, + 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x0f, 0x61, 0x76, 0x65, + 0x72, 0x61, 0x67, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, + 0x31, 0x0a, 0x12, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x75, 0x72, 0x6e, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x48, 0x03, 0x52, 0x10, 0x61, + 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x46, 0x0a, 0x1d, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x48, 0x04, 0x52, 0x1a, 0x61, 0x76, 0x65, + 0x72, 0x61, 0x67, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x6e, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1e, 0x61, 0x76, + 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x02, 0x48, 0x05, 0x52, 0x1b, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x53, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x24, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x01, 0x48, 0x06, 0x52, 0x21, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x43, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x53, 0x61, 0x74, 0x69, 0x73, 0x66, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x61, 0x76, + 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x71, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, + 0x7a, 0x65, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x48, + 0x07, 0x52, 0x18, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x51, 0x61, 0x4e, 0x6f, 0x72, 0x6d, + 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x8e, + 0x01, 0x0a, 0x0d, 0x71, 0x61, 0x5f, 0x74, 0x61, 0x67, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x6a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x2e, 0x51, 0x61, 0x54, 0x61, 0x67, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x52, 0x0b, 0x71, 0x61, 0x54, 0x61, 0x67, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, + 0x53, 0x0a, 0x24, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x71, 0x61, 0x5f, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, + 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x48, 0x08, 0x52, + 0x20, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, + 0x6f, 0x6e, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x88, 0x01, 0x01, 0x1a, 0x5f, 0x0a, 0x0a, 0x51, 0x61, 0x54, 0x61, 0x67, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x74, 0x61, 0x67, 0x12, 0x3f, 0x0a, 0x1c, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, + 0x74, 0x61, 0x67, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x19, 0x61, 0x76, 0x65, 0x72, + 0x61, 0x67, 0x65, 0x54, 0x61, 0x67, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x1d, 0x0a, 0x1b, + 0x5f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, + 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, + 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x75, 0x72, + 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x61, 0x76, 0x65, 0x72, + 0x61, 0x67, 0x65, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x61, 0x76, + 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x27, 0x0a, 0x25, + 0x5f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, + 0x72, 0x5f, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, + 0x61, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, + 0x65, 0x5f, 0x71, 0x61, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, + 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x27, 0x0a, 0x25, 0x5f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, + 0x65, 0x5f, 0x71, 0x61, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, + 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x09, + 0x0a, 0x07, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x1a, 0x7a, 0x0a, 0x0a, 0x54, 0x69, 0x6d, + 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x6c, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x2e, + 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6d, 0x61, 0x63, 0x72, 0x6f, 0x5f, + 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x22, 0x16, 0x0a, + 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xf7, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x58, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x40, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x3a, 0x0a, 0x38, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x0b, 0x71, + 0x61, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x71, 0x61, 0x51, 0x75, 0x65, 0x73, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x0e, 0x71, 0x61, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x0c, 0x71, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, + 0x63, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x37, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x31, 0x0a, 0x2f, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x51, 0x61, 0x51, + 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x58, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x40, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x3a, 0x0a, 0x38, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x51, 0x61, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, + 0x97, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0c, 0x71, + 0x61, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x71, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, + 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xb4, 0x01, 0x0a, 0x17, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x57, 0x0a, 0x0b, 0x71, 0x61, 0x5f, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x0a, 0x71, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, + 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, + 0x22, 0x66, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x37, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x31, 0x0a, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xe6, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x5a, 0x0a, 0x0c, 0x71, 0x61, 0x5f, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x49, 0x73, 0x73, 0x75, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0xec, 0x02, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, + 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, + 0x72, 0x64, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x63, 0x61, 0x72, 0x64, 0x12, 0x2b, 0x0a, 0x0f, 0x71, 0x61, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x63, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x0d, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x49, + 0x64, 0x22, 0x65, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, + 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x38, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x32, + 0x0a, 0x30, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, + 0x72, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5a, 0x0a, 0x0c, 0x71, 0x61, 0x5f, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x63, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, + 0x64, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, + 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, + 0x61, 0x73, 0x6b, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x51, 0x61, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x4c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x38, + 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x32, 0x0a, 0x30, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x51, 0x61, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, + 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0xa7, 0x02, 0x0a, 0x20, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, + 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x38, + 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x32, 0x0a, 0x30, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x51, 0x61, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x12, 0x73, 0x0a, 0x15, 0x71, 0x61, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, + 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, + 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x13, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x18, 0x71, 0x61, 0x5f, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x15, 0x71, 0x61, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x22, 0x75, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x40, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x3a, 0x0a, 0x38, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xc1, 0x01, 0x0a, 0x1e, 0x54, + 0x75, 0x6e, 0x65, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x58, 0x0a, + 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x40, 0xe0, + 0x41, 0x02, 0xfa, 0x41, 0x3a, 0x0a, 0x38, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x51, 0x61, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x21, + 0x0a, 0x1f, 0x54, 0x75, 0x6e, 0x65, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, + 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xa8, 0x0a, 0x0a, 0x1f, 0x54, 0x75, 0x6e, 0x65, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, @@ -5565,1530 +11510,1528 @@ var file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_raw 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x5d, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xe0, 0x41, 0x03, 0xfa, 0x41, - 0x33, 0x0a, 0x31, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x6c, 0x0a, 0x12, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x5f, - 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x11, 0x61, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x22, 0xe5, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, - 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, - 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x12, 0x5c, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xb1, 0x03, 0x0a, 0x19, 0x55, 0x70, 0x6c, - 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x5c, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x66, 0x0a, 0x10, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x72, 0x65, - 0x64, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5d, 0x0a, - 0x0d, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x69, 0x6d, 0x65, 0x12, 0x64, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x65, - 0x65, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, - 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xa6, 0x03, 0x0a, - 0x1a, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, - 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x5f, 0x0a, 0x07, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x75, 0x6e, + 0x65, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0xc1, 0x01, 0x0a, 0x26, 0x71, 0x61, + 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, + 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x68, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x12, 0x61, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x11, 0x61, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x75, - 0x0a, 0x18, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x16, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x9e, 0x02, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, - 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x4b, 0x0a, 0x04, 0x76, 0x69, 0x65, - 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x69, 0x65, 0x77, - 0x52, 0x04, 0x76, 0x69, 0x65, 0x77, 0x22, 0x9e, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, - 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xb4, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x39, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x33, 0x0a, 0x31, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, - 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x4b, 0x0a, 0x04, 0x76, 0x69, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x69, 0x65, 0x77, 0x52, 0x04, 0x76, 0x69, 0x65, 0x77, 0x22, 0xb6, - 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5c, 0x0a, 0x0c, - 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, - 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x63, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x80, 0x01, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x39, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x33, 0x0a, 0x31, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0xad, 0x0b, 0x0a, 0x1a, 0x49, - 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6c, 0x0a, 0x0a, 0x67, 0x63, 0x73, - 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x67, 0x63, - 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x94, 0x01, 0x0a, 0x18, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x58, 0x2e, 0x67, 0x6f, 0x6f, + 0x76, 0x31, 0x2e, 0x54, 0x75, 0x6e, 0x65, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, + 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x73, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x22, 0x71, 0x61, 0x51, 0x75, 0x65, + 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0xb6, 0x01, + 0x0a, 0x22, 0x71, 0x61, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x48, 0x01, 0x52, 0x16, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, - 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, - 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x12, 0x85, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x54, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x66, 0x0a, 0x10, 0x72, 0x65, 0x64, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x76, 0x31, 0x2e, 0x54, 0x75, 0x6e, 0x65, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, + 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x73, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x1e, 0x71, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x3b, 0x0a, 0x17, 0x74, 0x75, 0x6e, 0x69, 0x6e, 0x67, + 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x15, 0x74, 0x75, + 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, + 0x74, 0x69, 0x6f, 0x1a, 0xb8, 0x02, 0x0a, 0x21, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x53, 0x0a, 0x08, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x37, 0xe0, 0x41, 0x03, + 0xfa, 0x41, 0x31, 0x0a, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7f, + 0x0a, 0x1b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x0f, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x5d, 0x0a, 0x0d, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x73, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, + 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x19, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x12, + 0x3d, 0x0a, 0x1b, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, + 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, + 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xab, + 0x02, 0x0a, 0x1e, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x73, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x12, 0x53, 0x0a, 0x08, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x37, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x31, 0x0a, 0x2f, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x8c, 0x01, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x70, 0x65, 0x65, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x0c, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x29, 0x0a, 0x0b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x73, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x9d, 0x03, 0x0a, 0x09, - 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x02, 0x52, 0x09, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x55, 0x72, 0x69, 0x12, 0x8f, 0x01, - 0x0a, 0x12, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x5c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, - 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x47, 0x63, - 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x62, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x38, 0x0a, 0x13, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x62, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x01, 0x48, 0x00, 0x52, 0x11, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x55, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x63, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6b, 0x65, 0x79, - 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x12, 0x63, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x73, - 0x22, 0x51, 0x0a, 0x10, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4f, - 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x52, 0x41, 0x4e, - 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x55, 0x44, 0x49, - 0x4f, 0x10, 0x02, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x1a, 0x71, 0x0a, 0x16, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x57, 0x0a, 0x06, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x75, - 0x6d, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x1a, 0x8e, - 0x01, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0d, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x63, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, - 0x01, 0x52, 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, - 0x2e, 0x0a, 0x10, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, - 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x42, - 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0xe7, 0x05, 0x0a, 0x1b, 0x49, - 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, - 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, - 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x60, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x2e, 0x54, 0x75, 0x6e, 0x65, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x73, + 0x65, 0x74, 0x54, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x1a, 0x25, 0x0a, 0x07, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x75, 0x72, 0x61, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x01, 0x52, 0x08, 0x61, 0x63, 0x63, 0x75, 0x72, 0x61, 0x63, 0x79, 0x22, 0x78, 0x0a, 0x20, + 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, + 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x54, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x40, + 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x3a, 0x0a, 0x38, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x51, 0x61, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x7a, 0x0a, 0x22, 0x55, 0x6e, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x40, 0xe0, 0x41, 0x02, 0xfa, + 0x41, 0x3a, 0x0a, 0x38, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x51, 0x61, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x40, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x3a, 0x0a, 0x38, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, + 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, + 0x74, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9b, 0x01, + 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, + 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x0d, 0x71, 0x61, + 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x0c, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, + 0x72, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, + 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xd6, 0x01, 0x0a, 0x1f, + 0x4c, 0x69, 0x73, 0x74, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x50, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x38, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x32, 0x0a, 0x30, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x51, 0x61, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x22, 0xbc, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x51, 0x61, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x16, 0x71, 0x61, 0x5f, + 0x73, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x0e, 0x70, 0x61, - 0x72, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x9e, 0x01, 0x0a, 0x1a, 0x69, - 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x5b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x18, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x1a, 0x86, 0x02, 0x0a, 0x18, - 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x63, - 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x14, 0x70, - 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x18, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x73, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x16, 0x64, 0x75, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x17, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, - 0x5f, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x15, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x66, 0x75, 0x6c, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x33, 0x0a, 0x13, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x1d, 0x0a, 0x1b, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0xbc, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, - 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xe0, - 0x41, 0x02, 0xfa, 0x41, 0x33, 0x0a, 0x31, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x12, 0x50, 0x0a, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, - 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x22, 0xbc, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xe0, 0x41, 0x02, 0xfa, - 0x41, 0x33, 0x0a, 0x31, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, - 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, - 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x22, 0x8b, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x08, 0x61, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x31, 0x2e, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, + 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, + 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x22, 0x82, 0x02, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, + 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x51, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x39, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x33, 0x0a, 0x31, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x08, 0x61, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, - 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, - 0x5f, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x35, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2f, 0x0a, 0x2d, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x62, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x35, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2f, 0x0a, - 0x2d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, - 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa0, 0x02, 0x0a, 0x1f, 0x42, 0x75, 0x6c, 0x6b, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x7a, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, - 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x13, 0x61, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x12, 0x61, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x67, - 0x0a, 0x12, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, - 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x52, 0x11, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xeb, 0x03, 0x0a, 0x20, 0x42, 0x75, 0x6c, 0x6b, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x0b, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x60, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x11, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, + 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x60, 0x0a, 0x0e, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, + 0x63, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x66, 0x65, 0x65, 0x64, 0x62, + 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0xd1, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, + 0x74, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x33, 0x0a, 0x31, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa3, 0x01, 0x0a, + 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x0f, 0x66, + 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x65, + 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x0e, 0x66, 0x65, 0x65, 0x64, + 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, + 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x22, 0x69, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, + 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4e, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3a, 0xe0, 0x41, 0x02, + 0xfa, 0x41, 0x34, 0x0a, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, + 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xc0, 0x01, + 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x60, 0x0a, 0x0e, + 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x65, + 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x0d, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x40, + 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, + 0x22, 0x6c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, + 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4e, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3a, 0xe0, 0x41, + 0x02, 0xfa, 0x41, 0x34, 0x0a, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x65, 0x65, 0x64, 0x62, + 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xc4, + 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, + 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, + 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, + 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xa6, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, + 0x6c, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x0f, 0x66, 0x65, 0x65, 0x64, 0x62, + 0x61, 0x63, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, + 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x0e, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xe8, + 0x03, 0x0a, 0x1f, 0x42, 0x75, 0x6c, 0x6b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, + 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x71, 0x0a, 0x0a, 0x67, 0x63, 0x73, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, + 0x75, 0x6c, 0x6b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, + 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x47, + 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x67, 0x63, 0x73, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, + 0x6c, 0x79, 0x1a, 0xda, 0x01, 0x0a, 0x09, 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x74, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x57, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x09, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x72, 0x69, 0x22, 0x33, 0x0a, 0x06, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x12, 0x16, 0x0a, 0x12, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, + 0x43, 0x53, 0x56, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x02, 0x42, + 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x22, 0x0a, 0x20, 0x42, 0x75, 0x6c, + 0x6b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf5, 0x04, + 0x0a, 0x20, 0x42, 0x75, 0x6c, 0x6b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, 0x64, + 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x65, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, - 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x38, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, - 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x15, - 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x66, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x43, 0x0a, 0x1e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, - 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x92, 0x01, 0x0a, 0x20, 0x42, 0x75, 0x6c, 0x6b, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x19, 0x73, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x73, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, - 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xbb, 0x01, 0x0a, 0x1e, 0x42, - 0x75, 0x6c, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, - 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, - 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0xb1, 0x02, 0x0a, 0x1f, 0x42, 0x75, 0x6c, - 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x0b, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x5f, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, - 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x39, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x70, - 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x21, 0x0a, 0x1f, - 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0xf3, 0x04, 0x0a, 0x19, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x8a, 0x01, - 0x0a, 0x15, 0x62, 0x69, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x64, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x54, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x73, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x13, 0x62, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, - 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6b, 0x6d, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x7e, - 0x0a, 0x11, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x51, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x44, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x77, 0x72, - 0x69, 0x74, 0x65, 0x44, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x69, - 0x0a, 0x13, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x64, 0x61, 0x74, 0x61, - 0x73, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x5b, 0x0a, 0x10, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x44, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, - 0x1d, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x12, 0x0a, 0x0e, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x54, 0x52, 0x55, 0x4e, 0x43, 0x41, - 0x54, 0x45, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x41, 0x50, - 0x50, 0x45, 0x4e, 0x44, 0x10, 0x02, 0x42, 0x0d, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb1, 0x02, 0x0a, 0x1a, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x5a, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, - 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, - 0x69, 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x45, 0x78, 0x70, - 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb5, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x57, 0x0a, 0x0b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x22, - 0xf2, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, - 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x07, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0xaf, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x57, 0x0a, 0x0b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x55, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, + 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x73, 0x12, 0x7b, 0x0a, 0x0c, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x53, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, + 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x0b, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x1a, + 0xb3, 0x01, 0x0a, 0x0b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, + 0x34, 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x14, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x17, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x36, 0x0a, + 0x17, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x5f, 0x75, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, + 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xbd, 0x08, 0x0a, 0x21, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x82, 0x01, 0x0a, 0x0f, + 0x67, 0x63, 0x73, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x57, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, - 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x69, - 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x5b, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, - 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, + 0x6c, 0x6b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, + 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x47, 0x63, 0x73, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x0e, 0x67, 0x63, 0x73, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x22, 0x6f, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, - 0x0a, 0x0c, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, - 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x0b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x73, 0x22, 0x63, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x37, 0xe0, 0x41, 0x02, 0xfa, - 0x41, 0x31, 0x0a, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x66, 0x0a, 0x17, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x37, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x31, 0x0a, 0x2f, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x12, 0x31, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x8f, 0x01, 0x0a, 0x13, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, + 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x5a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x65, 0x65, 0x64, + 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x11, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x18, 0x74, + 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x71, 0x61, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x63, 0x61, 0x72, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x15, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x51, 0x61, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x49, 0x64, 0x1a, 0x8c, 0x03, 0x0a, 0x0e, 0x47, 0x63, + 0x73, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7b, 0x0a, 0x06, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x5e, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0xf2, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, - 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, - 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x07, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, - 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x66, 0x0a, 0x17, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x4b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x37, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x31, 0x0a, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, - 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1a, - 0x0a, 0x18, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf2, 0x01, 0x0a, 0x18, 0x44, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x68, 0x0a, 0x19, 0x55, 0x6e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x37, 0xe0, 0x41, 0x02, 0xfa, - 0x41, 0x31, 0x0a, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x55, 0x6e, 0x64, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf6, 0x01, 0x0a, 0x1a, 0x55, 0x6e, 0x64, 0x65, - 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x5a, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, - 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x22, 0xa5, 0x02, 0x0a, 0x17, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x78, 0x0a, 0x0f, - 0x67, 0x63, 0x73, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x47, 0x63, 0x73, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x67, 0x63, 0x73, 0x44, 0x65, 0x73, 0x74, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x37, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x31, 0x0a, 0x2f, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x1a, 0x34, 0x0a, 0x0e, 0x47, 0x63, 0x73, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, - 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x72, 0x69, 0x42, 0x0d, 0x0a, 0x0b, 0x44, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1a, 0x0a, 0x18, 0x45, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe8, 0x01, 0x0a, 0x18, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, + 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x47, 0x63, 0x73, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x09, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x72, 0x69, 0x12, 0x2a, 0x0a, + 0x0e, 0x61, 0x64, 0x64, 0x5f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x61, 0x64, 0x64, 0x57, + 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x3e, 0x0a, 0x19, 0x61, 0x6c, 0x77, + 0x61, 0x79, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x16, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x38, 0x0a, 0x16, 0x72, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x13, + 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x22, 0x33, 0x0a, 0x06, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x16, 0x0a, + 0x12, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x43, 0x53, 0x56, 0x10, 0x01, 0x12, 0x08, + 0x0a, 0x04, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x02, 0x22, 0x5c, 0x0a, 0x11, 0x46, 0x65, 0x65, 0x64, + 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, + 0x1f, 0x46, 0x45, 0x45, 0x44, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x41, 0x49, + 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x4f, 0x50, 0x49, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x42, 0x0d, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x24, 0x0a, 0x22, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x6f, 0x77, + 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa4, 0x05, 0x0a, 0x22, + 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, 0x64, + 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, - 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0xb1, 0x02, 0x0a, 0x17, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x69, 0x0a, 0x0a, 0x67, - 0x63, 0x73, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, - 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x67, 0x63, 0x73, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x10, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4e, 0x65, 0x77, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x1a, 0x2f, 0x0a, 0x09, 0x47, 0x63, 0x73, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, - 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x72, 0x69, 0x42, 0x08, 0x0a, 0x06, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, - 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0xe8, 0x01, 0x0a, 0x18, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3b, 0x0a, 0x0b, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x58, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, - 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, - 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x59, 0x0a, 0x0f, 0x47, 0x65, - 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, - 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x64, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x73, - 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x37, 0xe0, 0x41, 0x02, 0xfa, - 0x41, 0x31, 0x0a, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x5a, 0x0a, 0x12, 0x4c, - 0x69, 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x44, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x67, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, - 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, - 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x22, 0x9a, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, - 0x0a, 0x05, 0x69, 0x73, 0x73, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0e, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x73, 0x12, 0x83, 0x01, 0x0a, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, + 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x57, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x05, 0x69, 0x73, 0x73, 0x75, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x5c, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x73, - 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2c, - 0x0a, 0x2a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, - 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x7b, 0x0a, 0x1f, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x58, 0x0a, 0x0b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x37, 0xe0, 0x41, 0x02, 0xfa, - 0x41, 0x31, 0x0a, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x22, - 0x84, 0x01, 0x0a, 0x20, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, - 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0xc1, 0x01, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x60, 0x0a, 0x0e, 0x70, 0x68, 0x72, 0x61, - 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, + 0x61, 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, + 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x1a, 0xd5, 0x01, 0x0a, 0x0d, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x16, + 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x70, 0x72, + 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x19, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, + 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, + 0x6c, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, + 0x0a, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x5f, 0x77, 0x72, + 0x69, 0x74, 0x74, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x12, 0x22, + 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x2a, 0x4a, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x56, 0x69, 0x65, 0x77, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, + 0x53, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x55, 0x4c, + 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x41, 0x53, 0x49, 0x43, 0x10, 0x01, 0x32, 0x89, + 0x87, 0x01, 0x0a, 0x15, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0xfa, 0x01, 0x0a, 0x12, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0d, 0x70, 0x68, 0x72, - 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x22, 0xb2, 0x01, 0x0a, 0x19, 0x4c, - 0x69, 0x73, 0x74, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, - 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, - 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, - 0xa3, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, - 0x0a, 0x0f, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6d, 0xda, 0x41, 0x23, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x2c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c, + 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x3a, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xe7, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, + 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x70, + 0xca, 0x41, 0x2a, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x1a, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x3d, 0x3a, 0x01, 0x2a, 0x22, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x12, 0xfc, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x0e, 0x70, - 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, - 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x69, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x68, 0x72, 0x61, - 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x4e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3a, - 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x34, 0x0a, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x68, 0x72, - 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x6c, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4e, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3a, 0xe0, 0x41, - 0x02, 0xfa, 0x41, 0x34, 0x0a, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x68, 0x72, 0x61, 0x73, - 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xbb, - 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x60, 0x0a, - 0x0e, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, - 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x0d, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, - 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, - 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x5f, 0x0a, 0x12, - 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x49, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x35, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2f, 0x0a, 0x2d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, - 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xab, 0x01, - 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, - 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, - 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x6b, 0x0a, 0x18, 0x47, - 0x65, 0x74, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3b, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x35, 0x0a, 0x33, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, - 0x65, 0x63, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x1f, 0x49, 0x6e, 0x69, - 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x63, 0x0a, 0x0f, - 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, - 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x52, 0x0e, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, - 0x63, 0x22, 0x22, 0x0a, 0x20, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x45, - 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc2, 0x02, 0x0a, 0x20, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, - 0x6c, 0x69, 0x7a, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, - 0x65, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, - 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, - 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x65, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x45, 0x6e, 0x63, 0x72, - 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x39, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0d, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x61, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x22, 0x9c, 0x01, 0x0a, 0x11, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x76, 0x69, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, - 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x04, 0x76, 0x69, 0x65, 0x77, 0x22, 0x57, 0x0a, 0x0e, 0x47, 0x65, 0x74, - 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x31, 0xe0, 0x41, 0x02, 0xfa, 0x41, - 0x2b, 0x0a, 0x29, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x56, 0x69, 0x65, 0x77, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x65, 0x77, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, - 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, - 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, - 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, - 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x7e, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, - 0x65, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x76, - 0x69, 0x65, 0x77, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, - 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x52, 0x05, 0x76, 0x69, 0x65, 0x77, 0x73, 0x12, 0x26, - 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, - 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x96, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x04, - 0x76, 0x69, 0x65, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, - 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x76, 0x69, - 0x65, 0x77, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, - 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, - 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, - 0x5a, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x31, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2b, 0x0a, 0x29, 0x63, 0x6f, 0x6e, 0x74, + 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6f, + 0xda, 0x41, 0x18, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x4e, 0x3a, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, + 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, + 0xc7, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x40, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xda, 0x01, 0x0a, 0x11, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x42, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xb0, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x40, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x2a, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xfe, 0x01, 0x0a, 0x0e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x3c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x56, 0x69, 0x65, 0x77, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x2a, 0x4a, 0x0a, 0x10, 0x43, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x69, 0x65, 0x77, 0x12, - 0x21, 0x0a, 0x1d, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, 0x53, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x56, 0x49, 0x45, 0x57, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, - 0x42, 0x41, 0x53, 0x49, 0x43, 0x10, 0x01, 0x32, 0xce, 0x4c, 0x0a, 0x15, 0x43, 0x6f, 0x6e, 0x74, - 0x61, 0x63, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x12, 0xfa, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8e, 0x01, 0xca, 0x41, 0x2b, 0x0a, + 0x08, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x0f, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x2c, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x48, 0x3a, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x22, 0x3c, 0x2f, 0x76, + 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, + 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, + 0x7d, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x12, 0xc6, 0x01, 0x0a, 0x0b, 0x47, + 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x6d, 0xda, 0x41, 0x23, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x63, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x3a, 0x0c, 0x63, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x31, 0x2f, 0x76, 0x31, - 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, - 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xe7, - 0x01, 0x0a, 0x12, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x70, 0xca, 0x41, 0x2a, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x55, 0x70, 0x6c, 0x6f, 0x61, - 0x64, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x3a, 0x01, 0x2a, 0x22, 0x38, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x22, 0x4b, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, + 0x2f, 0x2a, 0x7d, 0x12, 0xd6, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x65, 0x73, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4d, 0xda, + 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3a, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0xfc, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x7d, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x12, 0xb3, 0x01, 0x0a, + 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, + 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, - 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6f, 0xda, 0x41, 0x18, 0x63, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, - 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4e, 0x3a, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x63, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4b, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x3e, 0x2a, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xc7, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, - 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x40, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, - 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, - 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, - 0x7d, 0x12, 0xda, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x2f, + 0x2a, 0x7d, 0x12, 0xb7, 0x02, 0x0a, 0x18, 0x42, 0x75, 0x6c, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, + 0x7a, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x7a, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb3, 0x01, 0xca, 0x41, 0x44, 0x0a, 0x20, 0x42, 0x75, + 0x6c, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, + 0x42, 0x75, 0x6c, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0xda, 0x41, 0x21, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x2c, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x61, 0x67, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x3a, 0x01, 0x2a, 0x22, 0x3d, 0x2f, + 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x3a, 0x62, 0x75, 0x6c, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x12, 0x9e, 0x02, 0x0a, + 0x17, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0xda, 0x41, 0x06, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x76, 0x31, + 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, + 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9c, + 0x01, 0xca, 0x41, 0x42, 0x0a, 0x1f, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x3a, 0x01, 0x2a, 0x22, + 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x3a, 0x62, 0x75, 0x6c, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x83, 0x02, + 0x0a, 0x13, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, + 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x89, 0x01, 0xca, 0x41, 0x3a, 0x0a, 0x1b, 0x49, + 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x49, 0x6e, 0x67, 0x65, + 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x3a, 0x01, 0x2a, 0x22, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x7b, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x69, 0x6e, 0x67, + 0x65, 0x73, 0x74, 0x12, 0xfe, 0x01, 0x0a, 0x12, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, + 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x86, 0x01, 0xca, 0x41, + 0x38, 0x0a, 0x1a, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x45, + 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x44, 0x61, 0x74, + 0x61, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x3a, 0x01, 0x2a, 0x22, 0x37, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, - 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xb0, - 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, - 0x40, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x2a, 0x31, - 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x2f, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x65, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x12, 0xf6, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, + 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x82, 0x01, 0xca, 0x41, 0x26, 0x0a, 0x0a, + 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x18, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x12, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x3a, + 0x0b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x2f, 0x2f, 0x76, + 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, - 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, - 0x7d, 0x12, 0xfe, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, - 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x8e, 0x01, 0xca, 0x41, 0x2b, 0x0a, 0x08, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x12, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xda, 0x41, 0x0f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x61, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x3a, 0x08, 0x61, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x22, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x65, 0x73, 0x12, 0xc6, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x7d, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0xf1, 0x01, + 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, - 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x6a, 0xda, 0x41, 0x17, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x3a, 0x0b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x32, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x69, 0x73, 0x73, 0x75, 0x65, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, + 0x7d, 0x12, 0xbf, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x12, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, + 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x22, 0x3e, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, + 0x2f, 0x2a, 0x7d, 0x12, 0xd2, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x73, 0x73, + 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0xe5, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x22, 0x4b, - 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, + 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x72, 0xca, 0x41, + 0x31, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x2a, + 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, + 0x12, 0xf2, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, + 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7f, 0xca, 0x41, 0x34, 0x0a, 0x18, 0x44, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x18, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, 0x01, 0x2a, 0x22, 0x36, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, - 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, - 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xd6, 0x01, 0x0a, 0x0c, - 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x12, 0x3a, 0x2e, 0x67, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0xfd, 0x01, 0x0a, 0x12, 0x55, 0x6e, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4d, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x61, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x65, 0x73, 0x12, 0xb3, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, + 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, + 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x85, 0x01, + 0xca, 0x41, 0x38, 0x0a, 0x1a, 0x55, 0x6e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, + 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x1a, 0x55, 0x6e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x3a, 0x01, 0x2a, 0x22, 0x38, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x75, 0x6e, 0x64, + 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0xf2, 0x01, 0x0a, 0x10, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7f, 0xca, 0x41, 0x34, 0x0a, 0x18, + 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, + 0x01, 0x2a, 0x22, 0x36, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, + 0x2f, 0x2a, 0x7d, 0x3a, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0xf5, 0x01, 0x0a, 0x10, 0x49, + 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, + 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, + 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, + 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x81, + 0x01, 0xca, 0x41, 0x34, 0x0a, 0x18, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, + 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, 0x01, 0x2a, 0x22, 0x36, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x3a, 0x69, 0x6d, 0x70, 0x6f, + 0x72, 0x74, 0x12, 0xb9, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, + 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4b, 0xda, - 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x2a, 0x3c, 0x2f, 0x76, - 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x61, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xb7, 0x02, 0x0a, 0x18, 0x42, - 0x75, 0x6c, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x49, 0x73, 0x73, 0x75, 0x65, 0x22, 0x47, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x3a, 0x12, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xcc, + 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, 0x38, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x42, 0x75, 0x6c, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, - 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb3, - 0x01, 0xca, 0x41, 0x44, 0x0a, 0x20, 0x42, 0x75, 0x6c, 0x6b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, - 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x42, 0x75, 0x6c, 0x6b, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x7a, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x21, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x2c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2c, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x42, 0x3a, 0x01, 0x2a, 0x22, 0x3d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x62, 0x75, 0x6c, 0x6b, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x7a, 0x65, 0x12, 0x9e, 0x02, 0x0a, 0x17, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9c, 0x01, 0xca, 0x41, 0x42, 0x0a, 0x1f, 0x42, 0x75, - 0x6c, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x42, - 0x75, 0x6c, 0x6b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, - 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x41, 0x3a, 0x01, 0x2a, 0x22, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x62, 0x75, 0x6c, 0x6b, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x83, 0x02, 0x0a, 0x13, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, - 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x49, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x3a, 0x12, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, 0xd9, 0x01, + 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, - 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x89, 0x01, 0xca, 0x41, 0x3a, 0x0a, 0x1b, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x1b, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, - 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x3a, 0x01, - 0x2a, 0x22, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x12, 0xfe, 0x01, 0x0a, 0x12, - 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x22, 0x61, 0xda, 0x41, 0x11, 0x69, 0x73, 0x73, 0x75, 0x65, + 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x47, 0x3a, 0x05, 0x69, 0x73, 0x73, 0x75, 0x65, 0x32, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xa9, 0x01, 0x0a, 0x0b, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x47, 0xda, 0x41, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x2a, 0x38, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x73, 0x73, 0x75, + 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x92, 0x02, 0x0a, 0x18, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, + 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x12, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, - 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, - 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, - 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x86, 0x01, 0xca, 0x41, 0x38, 0x0a, 0x1a, 0x45, 0x78, 0x70, 0x6f, 0x72, - 0x74, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x73, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, - 0x3a, 0x01, 0x2a, 0x22, 0x37, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0xf6, 0x01, 0x0a, - 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, - 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, - 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x82, 0x01, 0xca, 0x41, 0x26, 0x0a, 0x0a, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x12, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x12, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x3a, 0x0b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0xf1, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, + 0x6c, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x6f, + 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x65, 0xda, 0x41, 0x0b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x51, 0x12, 0x4f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, + 0x7d, 0x3a, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0xf2, 0x01, 0x0a, 0x13, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x65, 0x72, 0x12, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, + 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x22, 0x62, 0xda, 0x41, 0x15, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x3a, 0x0e, 0x70, 0x68, 0x72, + 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x22, 0x32, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, + 0x2f, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, + 0xcb, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x72, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x72, + 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x22, 0x41, 0xda, 0x41, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x68, 0x72, 0x61, + 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xde, 0x01, + 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x72, 0x73, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0xda, 0x41, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, 0x32, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, + 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0xb3, + 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x22, 0x41, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, + 0x2a, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x2f, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, + 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x86, 0x02, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, + 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x41, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, + 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x72, 0x22, 0x76, 0xda, 0x41, 0x1a, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, + 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x53, 0x3a, 0x0e, 0x70, 0x68, 0x72, 0x61, + 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x32, 0x41, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, + 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x68, 0x72, 0x61, + 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xe4, 0x01, + 0x0a, 0x0e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, + 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x55, 0xda, + 0x41, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, + 0x12, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x12, 0xb4, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x22, 0x39, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, + 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x7d, 0x12, 0xdd, 0x01, 0x0a, 0x0e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x5c, 0xda, + 0x41, 0x14, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x3a, 0x08, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x32, 0x33, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x7d, 0x12, 0xec, 0x01, 0x0a, 0x12, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, + 0x6c, 0x65, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x22, 0x5f, 0xda, 0x41, 0x14, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x75, + 0x6c, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x3a, 0x0d, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x22, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0xc7, 0x01, 0x0a, 0x0f, 0x47, + 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x3d, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, + 0x6c, 0x65, 0x22, 0x40, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x33, 0x12, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, + 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xda, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x6a, 0xda, - 0x41, 0x17, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2c, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x3a, - 0x0b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x32, 0x3b, 0x2f, 0x76, - 0x31, 0x2f, 0x7b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x6e, - 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xbf, 0x01, 0x0a, 0x0d, 0x47, 0x65, - 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x3b, 0x2e, 0x67, 0x6f, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, + 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, + 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0xda, + 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, + 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x7d, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, + 0x73, 0x12, 0xff, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x3e, 0xda, 0x41, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x31, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x73, 0x73, - 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xd2, 0x01, 0x0a, 0x0f, - 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, - 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, - 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, - 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, - 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, - 0x12, 0xe5, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, - 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x72, 0xca, 0x41, 0x31, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x12, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x2a, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xf2, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x3e, 0x2e, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, + 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x22, + 0x72, 0xda, 0x41, 0x19, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x75, 0x6c, + 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x50, 0x3a, 0x0d, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x75, + 0x6c, 0x65, 0x32, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x73, + 0x2f, 0x2a, 0x7d, 0x12, 0xb0, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, + 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x40, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x33, 0x2a, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, + 0x6c, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xcc, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x45, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3f, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, - 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, - 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7f, 0xca, 0x41, - 0x34, 0x0a, 0x18, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x44, 0x65, 0x70, - 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x3b, 0x3a, 0x01, 0x2a, 0x22, 0x36, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0xfd, 0x01, - 0x0a, 0x12, 0x55, 0x6e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x64, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x85, 0x01, 0xca, 0x41, 0x38, 0x0a, 0x1a, 0x55, 0x6e, 0x64, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x55, 0x6e, 0x64, 0x65, 0x70, 0x6c, 0x6f, - 0x79, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, - 0x3a, 0x01, 0x2a, 0x22, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x70, 0x65, 0x63, 0x22, 0x3f, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x75, 0x6e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0xf2, 0x01, - 0x0a, 0x10, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x70, 0x65, 0x63, 0x7d, 0x12, 0xb3, 0x02, 0x0a, 0x18, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, + 0x6c, 0x69, 0x7a, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, + 0x65, 0x63, 0x12, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, - 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, - 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, - 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x7f, 0xca, 0x41, 0x34, 0x0a, 0x18, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, - 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x18, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, 0x01, 0x2a, 0x22, 0x36, 0x2f, 0x76, 0x31, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x73, 0x73, - 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x65, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x12, 0xf5, 0x01, 0x0a, 0x10, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, - 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x81, 0x01, 0xca, 0x41, 0x34, 0x0a, 0x18, 0x49, 0x6d, - 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x73, - 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, - 0x01, 0x2a, 0x22, 0x36, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x73, 0x3a, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x12, 0xb9, 0x01, 0x0a, 0x08, 0x47, - 0x65, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x22, 0x47, 0xda, - 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x12, 0x38, 0x2f, 0x76, - 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, - 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x73, 0x73, - 0x75, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xcc, 0x01, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x73, 0x73, 0x75, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x49, 0xda, 0x41, 0x06, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x12, 0x38, 0x2f, 0x76, 0x31, - 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, - 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x69, - 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, 0xd9, 0x01, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x22, 0x61, - 0xda, 0x41, 0x11, 0x69, 0x73, 0x73, 0x75, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, - 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x3a, 0x05, 0x69, 0x73, 0x73, 0x75, - 0x65, 0x32, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x2e, 0x6e, 0x61, - 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x2f, 0x2a, - 0x7d, 0x12, 0xa9, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, - 0x65, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, - 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x49, 0x73, 0x73, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x22, 0x47, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x3a, 0x2a, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x92, 0x02, - 0x0a, 0x18, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x46, 0x2e, 0x67, 0x6f, 0x6f, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, + 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x70, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaf, 0x01, 0xca, 0x41, 0x44, 0x0a, + 0x20, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x20, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x45, 0x6e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0xda, 0x41, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x70, 0x65, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x50, 0x3a, 0x01, 0x2a, 0x22, 0x4b, + 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x70, 0x65, 0x63, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, + 0x2f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x7d, + 0x3a, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x12, 0xba, 0x01, 0x0a, 0x0a, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x12, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, - 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x65, + 0x77, 0x22, 0x45, 0xda, 0x41, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x76, 0x69, 0x65, + 0x77, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x3a, 0x04, 0x76, 0x69, 0x65, 0x77, 0x22, 0x29, 0x2f, + 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x7d, 0x2f, 0x76, 0x69, 0x65, 0x77, 0x73, 0x12, 0xa7, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, + 0x56, 0x69, 0x65, 0x77, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x22, 0x38, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x76, 0x69, 0x65, 0x77, 0x73, 0x2f, + 0x2a, 0x7d, 0x12, 0xba, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x65, 0x77, 0x73, + 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x65, + 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x65, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x3a, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x76, 0x69, 0x65, 0x77, 0x73, 0x12, + 0xc4, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x12, 0x38, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x65, + 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x56, 0x69, 0x65, 0x77, 0x22, 0x4f, 0xda, 0x41, 0x10, 0x76, 0x69, 0x65, 0x77, 0x2c, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, + 0x3a, 0x04, 0x76, 0x69, 0x65, 0x77, 0x32, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x76, 0x69, 0x65, + 0x77, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x76, 0x69, + 0x65, 0x77, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x98, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x56, 0x69, 0x65, 0x77, 0x12, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x38, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x2a, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x76, 0x69, 0x65, 0x77, 0x73, 0x2f, 0x2a, + 0x7d, 0x12, 0xd7, 0x01, 0x0a, 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, - 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, - 0x6c, 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x65, 0xda, 0x41, 0x0b, - 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x51, 0x12, 0x4f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x6c, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, - 0x61, 0x74, 0x65, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x12, 0xf2, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x68, 0x72, - 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x41, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, - 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x65, 0x72, 0x22, 0x62, 0xda, 0x41, 0x15, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x70, - 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x44, 0x3a, 0x0e, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x65, 0x72, 0x22, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0xcb, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, - 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x3e, 0x2e, 0x67, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, + 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6c, 0xca, + 0x41, 0x2c, 0x0a, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x37, 0x3a, 0x01, 0x2a, 0x22, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x8c, 0x02, 0x0a, 0x10, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x51, + 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x84, 0x01, 0xda, 0x41, 0x22, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, + 0x71, 0x61, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x71, 0x61, 0x5f, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x59, 0x3a, 0x0b, 0x71, 0x61, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4a, + 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x2f, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x73, 0x2f, + 0x2a, 0x2f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x71, + 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xda, 0x01, 0x0a, 0x0d, 0x47, + 0x65, 0x74, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x59, 0xda, 0x41, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x12, 0x4a, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x71, 0x61, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x71, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x8d, 0x02, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x65, 0x72, 0x22, 0x41, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x34, 0x12, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, - 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xde, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x68, - 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0x40, 0x2e, 0x67, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x51, 0x61, 0x51, 0x75, 0x65, + 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x68, 0x72, 0x61, 0x73, - 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x43, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x34, 0x12, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0xb3, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x41, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x68, 0x72, - 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x41, 0xda, 0x41, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x2a, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x68, 0x72, 0x61, 0x73, - 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x86, 0x02, 0x0a, - 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x65, 0x72, 0x12, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x22, 0x76, 0xda, - 0x41, 0x1a, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x85, 0x01, 0xda, 0x41, 0x17, 0x71, 0x61, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x53, 0x3a, 0x0e, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x65, 0x72, 0x32, 0x41, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, - 0x72, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xe4, 0x01, 0x0a, 0x0e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, - 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x55, 0xda, 0x41, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x12, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, - 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x63, 0x61, - 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0xb4, 0x01, 0x0a, - 0x0b, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x39, 0x2e, 0x67, + 0x02, 0x65, 0x3a, 0x0b, 0x71, 0x61, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x32, + 0x56, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x71, 0x61, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x71, 0x61, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x71, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xc5, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x39, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x7d, 0x12, 0xdd, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x51, 0x61, 0x51, 0x75, 0x65, + 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x59, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x4c, 0x2a, 0x4a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, + 0x64, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, + 0x2f, 0x71, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, + 0xed, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x51, + 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x5b, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x4c, 0x12, 0x4a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, + 0x61, 0x72, 0x64, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x7d, 0x2f, 0x71, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0xf6, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x63, 0x61, 0x72, 0x64, 0x12, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, + 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x22, 0x6c, 0xda, 0x41, 0x23, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x71, 0x61, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, + 0x72, 0x64, 0x2c, 0x71, 0x61, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x5f, + 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x3a, 0x0c, 0x71, 0x61, 0x5f, 0x73, 0x63, 0x6f, + 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x22, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x71, 0x61, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x73, 0x12, 0xc3, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, + 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x12, 0x3c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, + 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x22, 0x3f, 0xda, + 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, 0x76, + 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x71, + 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xf8, + 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x63, 0x61, 0x72, 0x64, 0x12, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x5c, 0xda, 0x41, 0x14, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x3f, 0x3a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x32, 0x33, - 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x6e, 0x61, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x22, 0x6e, 0xda, 0x41, 0x18, 0x71, 0x61, + 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4d, 0x3a, 0x0c, 0x71, 0x61, + 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x32, 0x3d, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x71, 0x61, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x2e, 0x6e, 0x61, + 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x63, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xad, 0x01, 0x0a, 0x11, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x12, + 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x51, 0x61, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x3f, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x2a, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x7d, 0x12, 0xcc, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x63, 0x72, 0x79, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x63, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xd6, 0x01, 0x0a, 0x10, 0x4c, 0x69, + 0x73, 0x74, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x73, 0x12, 0x3e, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x51, 0x61, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x51, 0x61, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x41, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, + 0x12, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, + 0x64, 0x73, 0x12, 0xb6, 0x02, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x51, 0x61, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x51, + 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x70, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, - 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, - 0x63, 0x22, 0x3f, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, - 0x12, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, - 0x63, 0x7d, 0x12, 0xb3, 0x02, 0x0a, 0x18, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, - 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, - 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, - 0x7a, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xaf, 0x01, 0xca, 0x41, 0x44, 0x0a, 0x20, 0x49, 0x6e, - 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, - 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xda, 0x41, 0x0f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, - 0x65, 0x63, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x50, 0x3a, 0x01, 0x2a, 0x22, 0x4b, 0x2f, 0x76, 0x31, - 0x2f, 0x7b, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, - 0x63, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, - 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x7d, 0x3a, 0x69, 0x6e, - 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x12, 0xba, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x12, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x31, 0x2e, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x93, 0x01, 0xda, 0x41, 0x35, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x2c, 0x71, 0x61, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x72, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2c, 0x71, 0x61, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x63, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x55, 0x3a, 0x15, 0x71, 0x61, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x63, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x3c, 0x2f, + 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x2f, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x2a, + 0x7d, 0x2f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xe7, 0x01, 0x0a, 0x16, + 0x47, 0x65, 0x74, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x4b, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x63, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xc6, 0x02, 0x0a, 0x17, 0x54, 0x75, 0x6e, 0x65, 0x51, 0x61, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, - 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x65, 0x77, 0x22, 0x45, - 0xda, 0x41, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x76, 0x69, 0x65, 0x77, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x31, 0x3a, 0x04, 0x76, 0x69, 0x65, 0x77, 0x22, 0x29, 0x2f, 0x76, 0x31, 0x2f, - 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, - 0x76, 0x69, 0x65, 0x77, 0x73, 0x12, 0xa7, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x56, 0x69, 0x65, - 0x77, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x75, 0x6e, 0x65, 0x51, 0x61, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc4, 0x01, 0xca, 0x41, 0x42, 0x0a, 0x1f, 0x54, + 0x75, 0x6e, 0x65, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, + 0x54, 0x75, 0x6e, 0x65, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, + 0x41, 0x1b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2c, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x5b, 0x3a, 0x01, 0x2a, 0x22, 0x56, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x71, 0x61, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x74, 0x75, 0x6e, 0x65, 0x51, 0x61, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xf0, + 0x01, 0x0a, 0x19, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x51, 0x61, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x3a, 0x01, 0x2a, 0x22, 0x43, 0x2f, 0x76, + 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x71, + 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x64, 0x65, 0x70, 0x6c, 0x6f, + 0x79, 0x12, 0xf6, 0x01, 0x0a, 0x1b, 0x55, 0x6e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x51, 0x61, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x49, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, - 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x69, 0x65, - 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, + 0x3a, 0x01, 0x2a, 0x22, 0x45, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, + 0x64, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, + 0x7d, 0x3a, 0x75, 0x6e, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x12, 0xc9, 0x01, 0x0a, 0x19, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x56, 0x69, 0x65, 0x77, 0x22, 0x38, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x2b, 0x12, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x76, 0x69, 0x65, 0x77, 0x73, 0x2f, 0x2a, 0x7d, 0x12, - 0xba, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x65, 0x77, 0x73, 0x12, 0x37, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x69, 0x65, 0x77, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x56, 0x69, 0x65, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x3a, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x2b, 0x12, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x76, 0x69, 0x65, 0x77, 0x73, 0x12, 0xc4, 0x01, 0x0a, - 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x12, 0x38, 0x2e, 0x67, 0x6f, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, + 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x4b, 0xda, 0x41, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x2a, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x71, 0x61, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xfa, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x51, + 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x47, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, - 0x65, 0x77, 0x22, 0x4f, 0xda, 0x41, 0x10, 0x76, 0x69, 0x65, 0x77, 0x2c, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x3a, 0x04, 0x76, - 0x69, 0x65, 0x77, 0x32, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x76, 0x69, 0x65, 0x77, 0x2e, 0x6e, - 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x76, 0x69, 0x65, 0x77, 0x73, - 0x2f, 0x2a, 0x7d, 0x12, 0x98, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x56, 0x69, - 0x65, 0x77, 0x12, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, - 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x22, 0x38, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x2b, 0x2a, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x76, 0x69, 0x65, 0x77, 0x73, 0x2f, 0x2a, 0x7d, 0x1a, 0x58, - 0xca, 0x41, 0x24, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, - 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, - 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0xa5, 0x02, 0x0a, 0x29, 0x63, 0x6f, 0x6d, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, + 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4d, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x12, 0x3c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x63, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x95, 0x02, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, + 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x41, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, + 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x42, 0x1a, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x43, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, - 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2f, - 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x70, 0x62, 0x3b, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x70, 0x62, 0xaa, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x43, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x25, - 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x43, 0x6f, 0x6e, - 0x74, 0x61, 0x63, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x28, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x43, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x3a, 0x3a, 0x56, 0x31, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x22, 0x84, 0x01, 0xda, 0x41, 0x27, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x2c, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2c, + 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x69, + 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x54, 0x3a, 0x0e, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, + 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x65, 0x65, + 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0xee, 0x01, 0x0a, 0x12, + 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, + 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x53, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x12, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, + 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x65, + 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0xdb, 0x01, 0x0a, + 0x10, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, + 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, + 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x51, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x12, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, + 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x97, 0x02, 0x0a, 0x13, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x12, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, + 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x86, 0x01, 0xda, 0x41, + 0x1a, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2c, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x63, 0x3a, 0x0e, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x32, 0x51, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, + 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x2f, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xc3, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, + 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x41, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x65, 0x64, 0x62, + 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x51, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x2a, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, + 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xee, 0x01, 0x0a, 0x15, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x12, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x6c, 0x6c, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, + 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x4a, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, + 0x12, 0x39, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x46, 0x65, 0x65, + 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x9b, 0x02, 0x0a, 0x18, + 0x42, 0x75, 0x6c, 0x6b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, + 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, + 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, + 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x97, 0x01, 0xca, 0x41, 0x44, 0x0a, 0x20, 0x42, 0x75, 0x6c, 0x6b, 0x55, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x42, 0x75, 0x6c, 0x6b, 0x55, 0x70, 0x6c, + 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x3a, 0x01, 0x2a, 0x22, 0x3c, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, + 0x3a, 0x62, 0x75, 0x6c, 0x6b, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, + 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0xa5, 0x02, 0x0a, 0x1a, 0x42, 0x75, + 0x6c, 0x6b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, + 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, + 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, + 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x9d, 0x01, 0xca, 0x41, 0x48, 0x0a, 0x22, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x6f, 0x77, + 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x42, 0x75, 0x6c, + 0x6b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, + 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, + 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x3a, 0x01, + 0x2a, 0x22, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x62, 0x75, 0x6c, 0x6b, 0x44, 0x6f, 0x77, 0x6e, 0x6c, + 0x6f, 0x61, 0x64, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x1a, 0x58, 0xca, 0x41, 0x24, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, + 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0xa5, 0x02, 0x0a, 0x29, + 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x42, 0x1a, 0x43, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x70, 0x62, + 0x3b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x70, 0x62, 0xaa, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x43, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x56, 0x31, + 0xca, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, + 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x28, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x3a, + 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -7103,309 +13046,505 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_ra return file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDescData } -var file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes = make([]protoimpl.MessageInfo, 86) +var file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_enumTypes = make([]protoimpl.EnumInfo, 8) +var file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes = make([]protoimpl.MessageInfo, 148) var file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_goTypes = []any{ (ConversationView)(0), // 0: google.cloud.contactcenterinsights.v1.ConversationView - (IngestConversationsRequest_GcsSource_BucketObjectType)(0), // 1: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.GcsSource.BucketObjectType - (ExportInsightsDataRequest_WriteDisposition)(0), // 2: google.cloud.contactcenterinsights.v1.ExportInsightsDataRequest.WriteDisposition - (*CalculateStatsRequest)(nil), // 3: google.cloud.contactcenterinsights.v1.CalculateStatsRequest - (*CalculateStatsResponse)(nil), // 4: google.cloud.contactcenterinsights.v1.CalculateStatsResponse - (*CreateAnalysisOperationMetadata)(nil), // 5: google.cloud.contactcenterinsights.v1.CreateAnalysisOperationMetadata - (*CreateConversationRequest)(nil), // 6: google.cloud.contactcenterinsights.v1.CreateConversationRequest - (*UploadConversationRequest)(nil), // 7: google.cloud.contactcenterinsights.v1.UploadConversationRequest - (*UploadConversationMetadata)(nil), // 8: google.cloud.contactcenterinsights.v1.UploadConversationMetadata - (*ListConversationsRequest)(nil), // 9: google.cloud.contactcenterinsights.v1.ListConversationsRequest - (*ListConversationsResponse)(nil), // 10: google.cloud.contactcenterinsights.v1.ListConversationsResponse - (*GetConversationRequest)(nil), // 11: google.cloud.contactcenterinsights.v1.GetConversationRequest - (*UpdateConversationRequest)(nil), // 12: google.cloud.contactcenterinsights.v1.UpdateConversationRequest - (*DeleteConversationRequest)(nil), // 13: google.cloud.contactcenterinsights.v1.DeleteConversationRequest - (*IngestConversationsRequest)(nil), // 14: google.cloud.contactcenterinsights.v1.IngestConversationsRequest - (*IngestConversationsMetadata)(nil), // 15: google.cloud.contactcenterinsights.v1.IngestConversationsMetadata - (*IngestConversationsResponse)(nil), // 16: google.cloud.contactcenterinsights.v1.IngestConversationsResponse - (*CreateAnalysisRequest)(nil), // 17: google.cloud.contactcenterinsights.v1.CreateAnalysisRequest - (*ListAnalysesRequest)(nil), // 18: google.cloud.contactcenterinsights.v1.ListAnalysesRequest - (*ListAnalysesResponse)(nil), // 19: google.cloud.contactcenterinsights.v1.ListAnalysesResponse - (*GetAnalysisRequest)(nil), // 20: google.cloud.contactcenterinsights.v1.GetAnalysisRequest - (*DeleteAnalysisRequest)(nil), // 21: google.cloud.contactcenterinsights.v1.DeleteAnalysisRequest - (*BulkAnalyzeConversationsRequest)(nil), // 22: google.cloud.contactcenterinsights.v1.BulkAnalyzeConversationsRequest - (*BulkAnalyzeConversationsMetadata)(nil), // 23: google.cloud.contactcenterinsights.v1.BulkAnalyzeConversationsMetadata - (*BulkAnalyzeConversationsResponse)(nil), // 24: google.cloud.contactcenterinsights.v1.BulkAnalyzeConversationsResponse - (*BulkDeleteConversationsRequest)(nil), // 25: google.cloud.contactcenterinsights.v1.BulkDeleteConversationsRequest - (*BulkDeleteConversationsMetadata)(nil), // 26: google.cloud.contactcenterinsights.v1.BulkDeleteConversationsMetadata - (*BulkDeleteConversationsResponse)(nil), // 27: google.cloud.contactcenterinsights.v1.BulkDeleteConversationsResponse - (*ExportInsightsDataRequest)(nil), // 28: google.cloud.contactcenterinsights.v1.ExportInsightsDataRequest - (*ExportInsightsDataMetadata)(nil), // 29: google.cloud.contactcenterinsights.v1.ExportInsightsDataMetadata - (*ExportInsightsDataResponse)(nil), // 30: google.cloud.contactcenterinsights.v1.ExportInsightsDataResponse - (*CreateIssueModelRequest)(nil), // 31: google.cloud.contactcenterinsights.v1.CreateIssueModelRequest - (*CreateIssueModelMetadata)(nil), // 32: google.cloud.contactcenterinsights.v1.CreateIssueModelMetadata - (*UpdateIssueModelRequest)(nil), // 33: google.cloud.contactcenterinsights.v1.UpdateIssueModelRequest - (*ListIssueModelsRequest)(nil), // 34: google.cloud.contactcenterinsights.v1.ListIssueModelsRequest - (*ListIssueModelsResponse)(nil), // 35: google.cloud.contactcenterinsights.v1.ListIssueModelsResponse - (*GetIssueModelRequest)(nil), // 36: google.cloud.contactcenterinsights.v1.GetIssueModelRequest - (*DeleteIssueModelRequest)(nil), // 37: google.cloud.contactcenterinsights.v1.DeleteIssueModelRequest - (*DeleteIssueModelMetadata)(nil), // 38: google.cloud.contactcenterinsights.v1.DeleteIssueModelMetadata - (*DeployIssueModelRequest)(nil), // 39: google.cloud.contactcenterinsights.v1.DeployIssueModelRequest - (*DeployIssueModelResponse)(nil), // 40: google.cloud.contactcenterinsights.v1.DeployIssueModelResponse - (*DeployIssueModelMetadata)(nil), // 41: google.cloud.contactcenterinsights.v1.DeployIssueModelMetadata - (*UndeployIssueModelRequest)(nil), // 42: google.cloud.contactcenterinsights.v1.UndeployIssueModelRequest - (*UndeployIssueModelResponse)(nil), // 43: google.cloud.contactcenterinsights.v1.UndeployIssueModelResponse - (*UndeployIssueModelMetadata)(nil), // 44: google.cloud.contactcenterinsights.v1.UndeployIssueModelMetadata - (*ExportIssueModelRequest)(nil), // 45: google.cloud.contactcenterinsights.v1.ExportIssueModelRequest - (*ExportIssueModelResponse)(nil), // 46: google.cloud.contactcenterinsights.v1.ExportIssueModelResponse - (*ExportIssueModelMetadata)(nil), // 47: google.cloud.contactcenterinsights.v1.ExportIssueModelMetadata - (*ImportIssueModelRequest)(nil), // 48: google.cloud.contactcenterinsights.v1.ImportIssueModelRequest - (*ImportIssueModelResponse)(nil), // 49: google.cloud.contactcenterinsights.v1.ImportIssueModelResponse - (*ImportIssueModelMetadata)(nil), // 50: google.cloud.contactcenterinsights.v1.ImportIssueModelMetadata - (*GetIssueRequest)(nil), // 51: google.cloud.contactcenterinsights.v1.GetIssueRequest - (*ListIssuesRequest)(nil), // 52: google.cloud.contactcenterinsights.v1.ListIssuesRequest - (*ListIssuesResponse)(nil), // 53: google.cloud.contactcenterinsights.v1.ListIssuesResponse - (*UpdateIssueRequest)(nil), // 54: google.cloud.contactcenterinsights.v1.UpdateIssueRequest - (*DeleteIssueRequest)(nil), // 55: google.cloud.contactcenterinsights.v1.DeleteIssueRequest - (*CalculateIssueModelStatsRequest)(nil), // 56: google.cloud.contactcenterinsights.v1.CalculateIssueModelStatsRequest - (*CalculateIssueModelStatsResponse)(nil), // 57: google.cloud.contactcenterinsights.v1.CalculateIssueModelStatsResponse - (*CreatePhraseMatcherRequest)(nil), // 58: google.cloud.contactcenterinsights.v1.CreatePhraseMatcherRequest - (*ListPhraseMatchersRequest)(nil), // 59: google.cloud.contactcenterinsights.v1.ListPhraseMatchersRequest - (*ListPhraseMatchersResponse)(nil), // 60: google.cloud.contactcenterinsights.v1.ListPhraseMatchersResponse - (*GetPhraseMatcherRequest)(nil), // 61: google.cloud.contactcenterinsights.v1.GetPhraseMatcherRequest - (*DeletePhraseMatcherRequest)(nil), // 62: google.cloud.contactcenterinsights.v1.DeletePhraseMatcherRequest - (*UpdatePhraseMatcherRequest)(nil), // 63: google.cloud.contactcenterinsights.v1.UpdatePhraseMatcherRequest - (*GetSettingsRequest)(nil), // 64: google.cloud.contactcenterinsights.v1.GetSettingsRequest - (*UpdateSettingsRequest)(nil), // 65: google.cloud.contactcenterinsights.v1.UpdateSettingsRequest - (*GetEncryptionSpecRequest)(nil), // 66: google.cloud.contactcenterinsights.v1.GetEncryptionSpecRequest - (*InitializeEncryptionSpecRequest)(nil), // 67: google.cloud.contactcenterinsights.v1.InitializeEncryptionSpecRequest - (*InitializeEncryptionSpecResponse)(nil), // 68: google.cloud.contactcenterinsights.v1.InitializeEncryptionSpecResponse - (*InitializeEncryptionSpecMetadata)(nil), // 69: google.cloud.contactcenterinsights.v1.InitializeEncryptionSpecMetadata - (*CreateViewRequest)(nil), // 70: google.cloud.contactcenterinsights.v1.CreateViewRequest - (*GetViewRequest)(nil), // 71: google.cloud.contactcenterinsights.v1.GetViewRequest - (*ListViewsRequest)(nil), // 72: google.cloud.contactcenterinsights.v1.ListViewsRequest - (*ListViewsResponse)(nil), // 73: google.cloud.contactcenterinsights.v1.ListViewsResponse - (*UpdateViewRequest)(nil), // 74: google.cloud.contactcenterinsights.v1.UpdateViewRequest - (*DeleteViewRequest)(nil), // 75: google.cloud.contactcenterinsights.v1.DeleteViewRequest - (*CalculateStatsResponse_TimeSeries)(nil), // 76: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.TimeSeries - nil, // 77: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.SmartHighlighterMatchesEntry - nil, // 78: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.CustomHighlighterMatchesEntry - nil, // 79: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.IssueMatchesEntry - nil, // 80: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.IssueMatchesStatsEntry - (*CalculateStatsResponse_TimeSeries_Interval)(nil), // 81: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.TimeSeries.Interval - (*IngestConversationsRequest_GcsSource)(nil), // 82: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.GcsSource - (*IngestConversationsRequest_TranscriptObjectConfig)(nil), // 83: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.TranscriptObjectConfig - (*IngestConversationsRequest_ConversationConfig)(nil), // 84: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.ConversationConfig - (*IngestConversationsMetadata_IngestConversationsStats)(nil), // 85: google.cloud.contactcenterinsights.v1.IngestConversationsMetadata.IngestConversationsStats - (*ExportInsightsDataRequest_BigQueryDestination)(nil), // 86: google.cloud.contactcenterinsights.v1.ExportInsightsDataRequest.BigQueryDestination - (*ExportIssueModelRequest_GcsDestination)(nil), // 87: google.cloud.contactcenterinsights.v1.ExportIssueModelRequest.GcsDestination - (*ImportIssueModelRequest_GcsSource)(nil), // 88: google.cloud.contactcenterinsights.v1.ImportIssueModelRequest.GcsSource - (*durationpb.Duration)(nil), // 89: google.protobuf.Duration - (*timestamppb.Timestamp)(nil), // 90: google.protobuf.Timestamp - (*AnnotatorSelector)(nil), // 91: google.cloud.contactcenterinsights.v1.AnnotatorSelector - (*Conversation)(nil), // 92: google.cloud.contactcenterinsights.v1.Conversation - (*RedactionConfig)(nil), // 93: google.cloud.contactcenterinsights.v1.RedactionConfig - (*SpeechConfig)(nil), // 94: google.cloud.contactcenterinsights.v1.SpeechConfig - (*fieldmaskpb.FieldMask)(nil), // 95: google.protobuf.FieldMask - (*status.Status)(nil), // 96: google.rpc.Status - (*Analysis)(nil), // 97: google.cloud.contactcenterinsights.v1.Analysis - (*IssueModel)(nil), // 98: google.cloud.contactcenterinsights.v1.IssueModel - (*Issue)(nil), // 99: google.cloud.contactcenterinsights.v1.Issue - (*IssueModelLabelStats)(nil), // 100: google.cloud.contactcenterinsights.v1.IssueModelLabelStats - (*PhraseMatcher)(nil), // 101: google.cloud.contactcenterinsights.v1.PhraseMatcher - (*Settings)(nil), // 102: google.cloud.contactcenterinsights.v1.Settings - (*EncryptionSpec)(nil), // 103: google.cloud.contactcenterinsights.v1.EncryptionSpec - (*View)(nil), // 104: google.cloud.contactcenterinsights.v1.View - (*IssueModelLabelStats_IssueStats)(nil), // 105: google.cloud.contactcenterinsights.v1.IssueModelLabelStats.IssueStats - (Conversation_Medium)(0), // 106: google.cloud.contactcenterinsights.v1.Conversation.Medium - (*longrunningpb.Operation)(nil), // 107: google.longrunning.Operation - (*emptypb.Empty)(nil), // 108: google.protobuf.Empty + (IngestConversationsRequest_GcsSource_BucketObjectType)(0), // 1: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.GcsSource.BucketObjectType + (ExportInsightsDataRequest_WriteDisposition)(0), // 2: google.cloud.contactcenterinsights.v1.ExportInsightsDataRequest.WriteDisposition + (Dimension_DimensionKey)(0), // 3: google.cloud.contactcenterinsights.v1.Dimension.DimensionKey + (QueryMetricsRequest_TimeGranularity)(0), // 4: google.cloud.contactcenterinsights.v1.QueryMetricsRequest.TimeGranularity + (BulkUploadFeedbackLabelsRequest_GcsSource_Format)(0), // 5: google.cloud.contactcenterinsights.v1.BulkUploadFeedbackLabelsRequest.GcsSource.Format + (BulkDownloadFeedbackLabelsRequest_FeedbackLabelType)(0), // 6: google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsRequest.FeedbackLabelType + (BulkDownloadFeedbackLabelsRequest_GcsDestination_Format)(0), // 7: google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsRequest.GcsDestination.Format + (*CalculateStatsRequest)(nil), // 8: google.cloud.contactcenterinsights.v1.CalculateStatsRequest + (*CalculateStatsResponse)(nil), // 9: google.cloud.contactcenterinsights.v1.CalculateStatsResponse + (*CreateAnalysisOperationMetadata)(nil), // 10: google.cloud.contactcenterinsights.v1.CreateAnalysisOperationMetadata + (*CreateConversationRequest)(nil), // 11: google.cloud.contactcenterinsights.v1.CreateConversationRequest + (*UploadConversationRequest)(nil), // 12: google.cloud.contactcenterinsights.v1.UploadConversationRequest + (*UploadConversationMetadata)(nil), // 13: google.cloud.contactcenterinsights.v1.UploadConversationMetadata + (*ListConversationsRequest)(nil), // 14: google.cloud.contactcenterinsights.v1.ListConversationsRequest + (*ListConversationsResponse)(nil), // 15: google.cloud.contactcenterinsights.v1.ListConversationsResponse + (*GetConversationRequest)(nil), // 16: google.cloud.contactcenterinsights.v1.GetConversationRequest + (*UpdateConversationRequest)(nil), // 17: google.cloud.contactcenterinsights.v1.UpdateConversationRequest + (*DeleteConversationRequest)(nil), // 18: google.cloud.contactcenterinsights.v1.DeleteConversationRequest + (*IngestConversationsRequest)(nil), // 19: google.cloud.contactcenterinsights.v1.IngestConversationsRequest + (*IngestConversationsMetadata)(nil), // 20: google.cloud.contactcenterinsights.v1.IngestConversationsMetadata + (*IngestConversationsResponse)(nil), // 21: google.cloud.contactcenterinsights.v1.IngestConversationsResponse + (*CreateAnalysisRequest)(nil), // 22: google.cloud.contactcenterinsights.v1.CreateAnalysisRequest + (*ListAnalysesRequest)(nil), // 23: google.cloud.contactcenterinsights.v1.ListAnalysesRequest + (*ListAnalysesResponse)(nil), // 24: google.cloud.contactcenterinsights.v1.ListAnalysesResponse + (*GetAnalysisRequest)(nil), // 25: google.cloud.contactcenterinsights.v1.GetAnalysisRequest + (*DeleteAnalysisRequest)(nil), // 26: google.cloud.contactcenterinsights.v1.DeleteAnalysisRequest + (*BulkAnalyzeConversationsRequest)(nil), // 27: google.cloud.contactcenterinsights.v1.BulkAnalyzeConversationsRequest + (*BulkAnalyzeConversationsMetadata)(nil), // 28: google.cloud.contactcenterinsights.v1.BulkAnalyzeConversationsMetadata + (*BulkAnalyzeConversationsResponse)(nil), // 29: google.cloud.contactcenterinsights.v1.BulkAnalyzeConversationsResponse + (*BulkDeleteConversationsRequest)(nil), // 30: google.cloud.contactcenterinsights.v1.BulkDeleteConversationsRequest + (*BulkDeleteConversationsMetadata)(nil), // 31: google.cloud.contactcenterinsights.v1.BulkDeleteConversationsMetadata + (*BulkDeleteConversationsResponse)(nil), // 32: google.cloud.contactcenterinsights.v1.BulkDeleteConversationsResponse + (*ExportInsightsDataRequest)(nil), // 33: google.cloud.contactcenterinsights.v1.ExportInsightsDataRequest + (*ExportInsightsDataMetadata)(nil), // 34: google.cloud.contactcenterinsights.v1.ExportInsightsDataMetadata + (*ExportInsightsDataResponse)(nil), // 35: google.cloud.contactcenterinsights.v1.ExportInsightsDataResponse + (*CreateIssueModelRequest)(nil), // 36: google.cloud.contactcenterinsights.v1.CreateIssueModelRequest + (*CreateIssueModelMetadata)(nil), // 37: google.cloud.contactcenterinsights.v1.CreateIssueModelMetadata + (*UpdateIssueModelRequest)(nil), // 38: google.cloud.contactcenterinsights.v1.UpdateIssueModelRequest + (*ListIssueModelsRequest)(nil), // 39: google.cloud.contactcenterinsights.v1.ListIssueModelsRequest + (*ListIssueModelsResponse)(nil), // 40: google.cloud.contactcenterinsights.v1.ListIssueModelsResponse + (*GetIssueModelRequest)(nil), // 41: google.cloud.contactcenterinsights.v1.GetIssueModelRequest + (*DeleteIssueModelRequest)(nil), // 42: google.cloud.contactcenterinsights.v1.DeleteIssueModelRequest + (*DeleteIssueModelMetadata)(nil), // 43: google.cloud.contactcenterinsights.v1.DeleteIssueModelMetadata + (*DeployIssueModelRequest)(nil), // 44: google.cloud.contactcenterinsights.v1.DeployIssueModelRequest + (*DeployIssueModelResponse)(nil), // 45: google.cloud.contactcenterinsights.v1.DeployIssueModelResponse + (*DeployIssueModelMetadata)(nil), // 46: google.cloud.contactcenterinsights.v1.DeployIssueModelMetadata + (*UndeployIssueModelRequest)(nil), // 47: google.cloud.contactcenterinsights.v1.UndeployIssueModelRequest + (*UndeployIssueModelResponse)(nil), // 48: google.cloud.contactcenterinsights.v1.UndeployIssueModelResponse + (*UndeployIssueModelMetadata)(nil), // 49: google.cloud.contactcenterinsights.v1.UndeployIssueModelMetadata + (*ExportIssueModelRequest)(nil), // 50: google.cloud.contactcenterinsights.v1.ExportIssueModelRequest + (*ExportIssueModelResponse)(nil), // 51: google.cloud.contactcenterinsights.v1.ExportIssueModelResponse + (*ExportIssueModelMetadata)(nil), // 52: google.cloud.contactcenterinsights.v1.ExportIssueModelMetadata + (*ImportIssueModelRequest)(nil), // 53: google.cloud.contactcenterinsights.v1.ImportIssueModelRequest + (*ImportIssueModelResponse)(nil), // 54: google.cloud.contactcenterinsights.v1.ImportIssueModelResponse + (*ImportIssueModelMetadata)(nil), // 55: google.cloud.contactcenterinsights.v1.ImportIssueModelMetadata + (*GetIssueRequest)(nil), // 56: google.cloud.contactcenterinsights.v1.GetIssueRequest + (*ListIssuesRequest)(nil), // 57: google.cloud.contactcenterinsights.v1.ListIssuesRequest + (*ListIssuesResponse)(nil), // 58: google.cloud.contactcenterinsights.v1.ListIssuesResponse + (*UpdateIssueRequest)(nil), // 59: google.cloud.contactcenterinsights.v1.UpdateIssueRequest + (*DeleteIssueRequest)(nil), // 60: google.cloud.contactcenterinsights.v1.DeleteIssueRequest + (*CalculateIssueModelStatsRequest)(nil), // 61: google.cloud.contactcenterinsights.v1.CalculateIssueModelStatsRequest + (*CalculateIssueModelStatsResponse)(nil), // 62: google.cloud.contactcenterinsights.v1.CalculateIssueModelStatsResponse + (*CreatePhraseMatcherRequest)(nil), // 63: google.cloud.contactcenterinsights.v1.CreatePhraseMatcherRequest + (*ListPhraseMatchersRequest)(nil), // 64: google.cloud.contactcenterinsights.v1.ListPhraseMatchersRequest + (*ListPhraseMatchersResponse)(nil), // 65: google.cloud.contactcenterinsights.v1.ListPhraseMatchersResponse + (*GetPhraseMatcherRequest)(nil), // 66: google.cloud.contactcenterinsights.v1.GetPhraseMatcherRequest + (*DeletePhraseMatcherRequest)(nil), // 67: google.cloud.contactcenterinsights.v1.DeletePhraseMatcherRequest + (*UpdatePhraseMatcherRequest)(nil), // 68: google.cloud.contactcenterinsights.v1.UpdatePhraseMatcherRequest + (*GetSettingsRequest)(nil), // 69: google.cloud.contactcenterinsights.v1.GetSettingsRequest + (*UpdateSettingsRequest)(nil), // 70: google.cloud.contactcenterinsights.v1.UpdateSettingsRequest + (*CreateAnalysisRuleRequest)(nil), // 71: google.cloud.contactcenterinsights.v1.CreateAnalysisRuleRequest + (*GetAnalysisRuleRequest)(nil), // 72: google.cloud.contactcenterinsights.v1.GetAnalysisRuleRequest + (*UpdateAnalysisRuleRequest)(nil), // 73: google.cloud.contactcenterinsights.v1.UpdateAnalysisRuleRequest + (*DeleteAnalysisRuleRequest)(nil), // 74: google.cloud.contactcenterinsights.v1.DeleteAnalysisRuleRequest + (*ListAnalysisRulesRequest)(nil), // 75: google.cloud.contactcenterinsights.v1.ListAnalysisRulesRequest + (*ListAnalysisRulesResponse)(nil), // 76: google.cloud.contactcenterinsights.v1.ListAnalysisRulesResponse + (*GetEncryptionSpecRequest)(nil), // 77: google.cloud.contactcenterinsights.v1.GetEncryptionSpecRequest + (*InitializeEncryptionSpecRequest)(nil), // 78: google.cloud.contactcenterinsights.v1.InitializeEncryptionSpecRequest + (*InitializeEncryptionSpecResponse)(nil), // 79: google.cloud.contactcenterinsights.v1.InitializeEncryptionSpecResponse + (*InitializeEncryptionSpecMetadata)(nil), // 80: google.cloud.contactcenterinsights.v1.InitializeEncryptionSpecMetadata + (*CreateViewRequest)(nil), // 81: google.cloud.contactcenterinsights.v1.CreateViewRequest + (*GetViewRequest)(nil), // 82: google.cloud.contactcenterinsights.v1.GetViewRequest + (*ListViewsRequest)(nil), // 83: google.cloud.contactcenterinsights.v1.ListViewsRequest + (*ListViewsResponse)(nil), // 84: google.cloud.contactcenterinsights.v1.ListViewsResponse + (*UpdateViewRequest)(nil), // 85: google.cloud.contactcenterinsights.v1.UpdateViewRequest + (*DeleteViewRequest)(nil), // 86: google.cloud.contactcenterinsights.v1.DeleteViewRequest + (*Dimension)(nil), // 87: google.cloud.contactcenterinsights.v1.Dimension + (*QueryMetricsRequest)(nil), // 88: google.cloud.contactcenterinsights.v1.QueryMetricsRequest + (*QueryMetricsResponse)(nil), // 89: google.cloud.contactcenterinsights.v1.QueryMetricsResponse + (*QueryMetricsMetadata)(nil), // 90: google.cloud.contactcenterinsights.v1.QueryMetricsMetadata + (*CreateQaQuestionRequest)(nil), // 91: google.cloud.contactcenterinsights.v1.CreateQaQuestionRequest + (*GetQaQuestionRequest)(nil), // 92: google.cloud.contactcenterinsights.v1.GetQaQuestionRequest + (*ListQaQuestionsRequest)(nil), // 93: google.cloud.contactcenterinsights.v1.ListQaQuestionsRequest + (*ListQaQuestionsResponse)(nil), // 94: google.cloud.contactcenterinsights.v1.ListQaQuestionsResponse + (*UpdateQaQuestionRequest)(nil), // 95: google.cloud.contactcenterinsights.v1.UpdateQaQuestionRequest + (*DeleteQaQuestionRequest)(nil), // 96: google.cloud.contactcenterinsights.v1.DeleteQaQuestionRequest + (*CreateQaScorecardRequest)(nil), // 97: google.cloud.contactcenterinsights.v1.CreateQaScorecardRequest + (*GetQaScorecardRequest)(nil), // 98: google.cloud.contactcenterinsights.v1.GetQaScorecardRequest + (*UpdateQaScorecardRequest)(nil), // 99: google.cloud.contactcenterinsights.v1.UpdateQaScorecardRequest + (*DeleteQaScorecardRequest)(nil), // 100: google.cloud.contactcenterinsights.v1.DeleteQaScorecardRequest + (*CreateQaScorecardRevisionRequest)(nil), // 101: google.cloud.contactcenterinsights.v1.CreateQaScorecardRevisionRequest + (*GetQaScorecardRevisionRequest)(nil), // 102: google.cloud.contactcenterinsights.v1.GetQaScorecardRevisionRequest + (*TuneQaScorecardRevisionRequest)(nil), // 103: google.cloud.contactcenterinsights.v1.TuneQaScorecardRevisionRequest + (*TuneQaScorecardRevisionResponse)(nil), // 104: google.cloud.contactcenterinsights.v1.TuneQaScorecardRevisionResponse + (*TuneQaScorecardRevisionMetadata)(nil), // 105: google.cloud.contactcenterinsights.v1.TuneQaScorecardRevisionMetadata + (*DeployQaScorecardRevisionRequest)(nil), // 106: google.cloud.contactcenterinsights.v1.DeployQaScorecardRevisionRequest + (*UndeployQaScorecardRevisionRequest)(nil), // 107: google.cloud.contactcenterinsights.v1.UndeployQaScorecardRevisionRequest + (*DeleteQaScorecardRevisionRequest)(nil), // 108: google.cloud.contactcenterinsights.v1.DeleteQaScorecardRevisionRequest + (*ListQaScorecardsRequest)(nil), // 109: google.cloud.contactcenterinsights.v1.ListQaScorecardsRequest + (*ListQaScorecardsResponse)(nil), // 110: google.cloud.contactcenterinsights.v1.ListQaScorecardsResponse + (*ListQaScorecardRevisionsRequest)(nil), // 111: google.cloud.contactcenterinsights.v1.ListQaScorecardRevisionsRequest + (*ListQaScorecardRevisionsResponse)(nil), // 112: google.cloud.contactcenterinsights.v1.ListQaScorecardRevisionsResponse + (*CreateFeedbackLabelRequest)(nil), // 113: google.cloud.contactcenterinsights.v1.CreateFeedbackLabelRequest + (*ListFeedbackLabelsRequest)(nil), // 114: google.cloud.contactcenterinsights.v1.ListFeedbackLabelsRequest + (*ListFeedbackLabelsResponse)(nil), // 115: google.cloud.contactcenterinsights.v1.ListFeedbackLabelsResponse + (*GetFeedbackLabelRequest)(nil), // 116: google.cloud.contactcenterinsights.v1.GetFeedbackLabelRequest + (*UpdateFeedbackLabelRequest)(nil), // 117: google.cloud.contactcenterinsights.v1.UpdateFeedbackLabelRequest + (*DeleteFeedbackLabelRequest)(nil), // 118: google.cloud.contactcenterinsights.v1.DeleteFeedbackLabelRequest + (*ListAllFeedbackLabelsRequest)(nil), // 119: google.cloud.contactcenterinsights.v1.ListAllFeedbackLabelsRequest + (*ListAllFeedbackLabelsResponse)(nil), // 120: google.cloud.contactcenterinsights.v1.ListAllFeedbackLabelsResponse + (*BulkUploadFeedbackLabelsRequest)(nil), // 121: google.cloud.contactcenterinsights.v1.BulkUploadFeedbackLabelsRequest + (*BulkUploadFeedbackLabelsResponse)(nil), // 122: google.cloud.contactcenterinsights.v1.BulkUploadFeedbackLabelsResponse + (*BulkUploadFeedbackLabelsMetadata)(nil), // 123: google.cloud.contactcenterinsights.v1.BulkUploadFeedbackLabelsMetadata + (*BulkDownloadFeedbackLabelsRequest)(nil), // 124: google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsRequest + (*BulkDownloadFeedbackLabelsResponse)(nil), // 125: google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsResponse + (*BulkDownloadFeedbackLabelsMetadata)(nil), // 126: google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsMetadata + (*CalculateStatsResponse_TimeSeries)(nil), // 127: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.TimeSeries + nil, // 128: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.SmartHighlighterMatchesEntry + nil, // 129: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.CustomHighlighterMatchesEntry + nil, // 130: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.IssueMatchesEntry + nil, // 131: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.IssueMatchesStatsEntry + (*CalculateStatsResponse_TimeSeries_Interval)(nil), // 132: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.TimeSeries.Interval + (*IngestConversationsRequest_GcsSource)(nil), // 133: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.GcsSource + (*IngestConversationsRequest_TranscriptObjectConfig)(nil), // 134: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.TranscriptObjectConfig + (*IngestConversationsRequest_ConversationConfig)(nil), // 135: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.ConversationConfig + (*IngestConversationsMetadata_IngestConversationsStats)(nil), // 136: google.cloud.contactcenterinsights.v1.IngestConversationsMetadata.IngestConversationsStats + (*ExportInsightsDataRequest_BigQueryDestination)(nil), // 137: google.cloud.contactcenterinsights.v1.ExportInsightsDataRequest.BigQueryDestination + (*ExportIssueModelRequest_GcsDestination)(nil), // 138: google.cloud.contactcenterinsights.v1.ExportIssueModelRequest.GcsDestination + (*ImportIssueModelRequest_GcsSource)(nil), // 139: google.cloud.contactcenterinsights.v1.ImportIssueModelRequest.GcsSource + (*Dimension_IssueDimensionMetadata)(nil), // 140: google.cloud.contactcenterinsights.v1.Dimension.IssueDimensionMetadata + (*Dimension_AgentDimensionMetadata)(nil), // 141: google.cloud.contactcenterinsights.v1.Dimension.AgentDimensionMetadata + (*Dimension_QaQuestionDimensionMetadata)(nil), // 142: google.cloud.contactcenterinsights.v1.Dimension.QaQuestionDimensionMetadata + (*Dimension_QaQuestionAnswerDimensionMetadata)(nil), // 143: google.cloud.contactcenterinsights.v1.Dimension.QaQuestionAnswerDimensionMetadata + (*QueryMetricsResponse_Slice)(nil), // 144: google.cloud.contactcenterinsights.v1.QueryMetricsResponse.Slice + (*QueryMetricsResponse_Slice_DataPoint)(nil), // 145: google.cloud.contactcenterinsights.v1.QueryMetricsResponse.Slice.DataPoint + (*QueryMetricsResponse_Slice_TimeSeries)(nil), // 146: google.cloud.contactcenterinsights.v1.QueryMetricsResponse.Slice.TimeSeries + (*QueryMetricsResponse_Slice_DataPoint_ConversationMeasure)(nil), // 147: google.cloud.contactcenterinsights.v1.QueryMetricsResponse.Slice.DataPoint.ConversationMeasure + (*QueryMetricsResponse_Slice_DataPoint_ConversationMeasure_QaTagScore)(nil), // 148: google.cloud.contactcenterinsights.v1.QueryMetricsResponse.Slice.DataPoint.ConversationMeasure.QaTagScore + (*TuneQaScorecardRevisionMetadata_QaQuestionDatasetValidationResult)(nil), // 149: google.cloud.contactcenterinsights.v1.TuneQaScorecardRevisionMetadata.QaQuestionDatasetValidationResult + (*TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics)(nil), // 150: google.cloud.contactcenterinsights.v1.TuneQaScorecardRevisionMetadata.QaQuestionDatasetTuningMetrics + (*TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics_Metrics)(nil), // 151: google.cloud.contactcenterinsights.v1.TuneQaScorecardRevisionMetadata.QaQuestionDatasetTuningMetrics.Metrics + (*BulkUploadFeedbackLabelsRequest_GcsSource)(nil), // 152: google.cloud.contactcenterinsights.v1.BulkUploadFeedbackLabelsRequest.GcsSource + (*BulkUploadFeedbackLabelsMetadata_UploadStats)(nil), // 153: google.cloud.contactcenterinsights.v1.BulkUploadFeedbackLabelsMetadata.UploadStats + (*BulkDownloadFeedbackLabelsRequest_GcsDestination)(nil), // 154: google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsRequest.GcsDestination + (*BulkDownloadFeedbackLabelsMetadata_DownloadStats)(nil), // 155: google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsMetadata.DownloadStats + (*durationpb.Duration)(nil), // 156: google.protobuf.Duration + (*timestamppb.Timestamp)(nil), // 157: google.protobuf.Timestamp + (*AnnotatorSelector)(nil), // 158: google.cloud.contactcenterinsights.v1.AnnotatorSelector + (*Conversation)(nil), // 159: google.cloud.contactcenterinsights.v1.Conversation + (*RedactionConfig)(nil), // 160: google.cloud.contactcenterinsights.v1.RedactionConfig + (*SpeechConfig)(nil), // 161: google.cloud.contactcenterinsights.v1.SpeechConfig + (*fieldmaskpb.FieldMask)(nil), // 162: google.protobuf.FieldMask + (*status.Status)(nil), // 163: google.rpc.Status + (*Analysis)(nil), // 164: google.cloud.contactcenterinsights.v1.Analysis + (*IssueModel)(nil), // 165: google.cloud.contactcenterinsights.v1.IssueModel + (*Issue)(nil), // 166: google.cloud.contactcenterinsights.v1.Issue + (*IssueModelLabelStats)(nil), // 167: google.cloud.contactcenterinsights.v1.IssueModelLabelStats + (*PhraseMatcher)(nil), // 168: google.cloud.contactcenterinsights.v1.PhraseMatcher + (*Settings)(nil), // 169: google.cloud.contactcenterinsights.v1.Settings + (*AnalysisRule)(nil), // 170: google.cloud.contactcenterinsights.v1.AnalysisRule + (*EncryptionSpec)(nil), // 171: google.cloud.contactcenterinsights.v1.EncryptionSpec + (*View)(nil), // 172: google.cloud.contactcenterinsights.v1.View + (*QaQuestion)(nil), // 173: google.cloud.contactcenterinsights.v1.QaQuestion + (*QaScorecard)(nil), // 174: google.cloud.contactcenterinsights.v1.QaScorecard + (*QaScorecardRevision)(nil), // 175: google.cloud.contactcenterinsights.v1.QaScorecardRevision + (*FeedbackLabel)(nil), // 176: google.cloud.contactcenterinsights.v1.FeedbackLabel + (*IssueModelLabelStats_IssueStats)(nil), // 177: google.cloud.contactcenterinsights.v1.IssueModelLabelStats.IssueStats + (Conversation_Medium)(0), // 178: google.cloud.contactcenterinsights.v1.Conversation.Medium + (*interval.Interval)(nil), // 179: google.type.Interval + (DatasetValidationWarning)(0), // 180: google.cloud.contactcenterinsights.v1.DatasetValidationWarning + (*longrunningpb.Operation)(nil), // 181: google.longrunning.Operation + (*emptypb.Empty)(nil), // 182: google.protobuf.Empty } var file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_depIdxs = []int32{ - 89, // 0: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.average_duration:type_name -> google.protobuf.Duration - 77, // 1: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.smart_highlighter_matches:type_name -> google.cloud.contactcenterinsights.v1.CalculateStatsResponse.SmartHighlighterMatchesEntry - 78, // 2: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.custom_highlighter_matches:type_name -> google.cloud.contactcenterinsights.v1.CalculateStatsResponse.CustomHighlighterMatchesEntry - 79, // 3: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.issue_matches:type_name -> google.cloud.contactcenterinsights.v1.CalculateStatsResponse.IssueMatchesEntry - 80, // 4: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.issue_matches_stats:type_name -> google.cloud.contactcenterinsights.v1.CalculateStatsResponse.IssueMatchesStatsEntry - 76, // 5: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.conversation_count_time_series:type_name -> google.cloud.contactcenterinsights.v1.CalculateStatsResponse.TimeSeries - 90, // 6: google.cloud.contactcenterinsights.v1.CreateAnalysisOperationMetadata.create_time:type_name -> google.protobuf.Timestamp - 90, // 7: google.cloud.contactcenterinsights.v1.CreateAnalysisOperationMetadata.end_time:type_name -> google.protobuf.Timestamp - 91, // 8: google.cloud.contactcenterinsights.v1.CreateAnalysisOperationMetadata.annotator_selector:type_name -> google.cloud.contactcenterinsights.v1.AnnotatorSelector - 92, // 9: google.cloud.contactcenterinsights.v1.CreateConversationRequest.conversation:type_name -> google.cloud.contactcenterinsights.v1.Conversation - 92, // 10: google.cloud.contactcenterinsights.v1.UploadConversationRequest.conversation:type_name -> google.cloud.contactcenterinsights.v1.Conversation - 93, // 11: google.cloud.contactcenterinsights.v1.UploadConversationRequest.redaction_config:type_name -> google.cloud.contactcenterinsights.v1.RedactionConfig - 94, // 12: google.cloud.contactcenterinsights.v1.UploadConversationRequest.speech_config:type_name -> google.cloud.contactcenterinsights.v1.SpeechConfig - 90, // 13: google.cloud.contactcenterinsights.v1.UploadConversationMetadata.create_time:type_name -> google.protobuf.Timestamp - 90, // 14: google.cloud.contactcenterinsights.v1.UploadConversationMetadata.end_time:type_name -> google.protobuf.Timestamp - 7, // 15: google.cloud.contactcenterinsights.v1.UploadConversationMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.UploadConversationRequest - 93, // 16: google.cloud.contactcenterinsights.v1.UploadConversationMetadata.applied_redaction_config:type_name -> google.cloud.contactcenterinsights.v1.RedactionConfig + 156, // 0: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.average_duration:type_name -> google.protobuf.Duration + 128, // 1: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.smart_highlighter_matches:type_name -> google.cloud.contactcenterinsights.v1.CalculateStatsResponse.SmartHighlighterMatchesEntry + 129, // 2: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.custom_highlighter_matches:type_name -> google.cloud.contactcenterinsights.v1.CalculateStatsResponse.CustomHighlighterMatchesEntry + 130, // 3: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.issue_matches:type_name -> google.cloud.contactcenterinsights.v1.CalculateStatsResponse.IssueMatchesEntry + 131, // 4: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.issue_matches_stats:type_name -> google.cloud.contactcenterinsights.v1.CalculateStatsResponse.IssueMatchesStatsEntry + 127, // 5: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.conversation_count_time_series:type_name -> google.cloud.contactcenterinsights.v1.CalculateStatsResponse.TimeSeries + 157, // 6: google.cloud.contactcenterinsights.v1.CreateAnalysisOperationMetadata.create_time:type_name -> google.protobuf.Timestamp + 157, // 7: google.cloud.contactcenterinsights.v1.CreateAnalysisOperationMetadata.end_time:type_name -> google.protobuf.Timestamp + 158, // 8: google.cloud.contactcenterinsights.v1.CreateAnalysisOperationMetadata.annotator_selector:type_name -> google.cloud.contactcenterinsights.v1.AnnotatorSelector + 159, // 9: google.cloud.contactcenterinsights.v1.CreateConversationRequest.conversation:type_name -> google.cloud.contactcenterinsights.v1.Conversation + 159, // 10: google.cloud.contactcenterinsights.v1.UploadConversationRequest.conversation:type_name -> google.cloud.contactcenterinsights.v1.Conversation + 160, // 11: google.cloud.contactcenterinsights.v1.UploadConversationRequest.redaction_config:type_name -> google.cloud.contactcenterinsights.v1.RedactionConfig + 161, // 12: google.cloud.contactcenterinsights.v1.UploadConversationRequest.speech_config:type_name -> google.cloud.contactcenterinsights.v1.SpeechConfig + 157, // 13: google.cloud.contactcenterinsights.v1.UploadConversationMetadata.create_time:type_name -> google.protobuf.Timestamp + 157, // 14: google.cloud.contactcenterinsights.v1.UploadConversationMetadata.end_time:type_name -> google.protobuf.Timestamp + 12, // 15: google.cloud.contactcenterinsights.v1.UploadConversationMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.UploadConversationRequest + 160, // 16: google.cloud.contactcenterinsights.v1.UploadConversationMetadata.applied_redaction_config:type_name -> google.cloud.contactcenterinsights.v1.RedactionConfig 0, // 17: google.cloud.contactcenterinsights.v1.ListConversationsRequest.view:type_name -> google.cloud.contactcenterinsights.v1.ConversationView - 92, // 18: google.cloud.contactcenterinsights.v1.ListConversationsResponse.conversations:type_name -> google.cloud.contactcenterinsights.v1.Conversation + 159, // 18: google.cloud.contactcenterinsights.v1.ListConversationsResponse.conversations:type_name -> google.cloud.contactcenterinsights.v1.Conversation 0, // 19: google.cloud.contactcenterinsights.v1.GetConversationRequest.view:type_name -> google.cloud.contactcenterinsights.v1.ConversationView - 92, // 20: google.cloud.contactcenterinsights.v1.UpdateConversationRequest.conversation:type_name -> google.cloud.contactcenterinsights.v1.Conversation - 95, // 21: google.cloud.contactcenterinsights.v1.UpdateConversationRequest.update_mask:type_name -> google.protobuf.FieldMask - 82, // 22: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.gcs_source:type_name -> google.cloud.contactcenterinsights.v1.IngestConversationsRequest.GcsSource - 83, // 23: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.transcript_object_config:type_name -> google.cloud.contactcenterinsights.v1.IngestConversationsRequest.TranscriptObjectConfig - 84, // 24: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.conversation_config:type_name -> google.cloud.contactcenterinsights.v1.IngestConversationsRequest.ConversationConfig - 93, // 25: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.redaction_config:type_name -> google.cloud.contactcenterinsights.v1.RedactionConfig - 94, // 26: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.speech_config:type_name -> google.cloud.contactcenterinsights.v1.SpeechConfig - 90, // 27: google.cloud.contactcenterinsights.v1.IngestConversationsMetadata.create_time:type_name -> google.protobuf.Timestamp - 90, // 28: google.cloud.contactcenterinsights.v1.IngestConversationsMetadata.end_time:type_name -> google.protobuf.Timestamp - 14, // 29: google.cloud.contactcenterinsights.v1.IngestConversationsMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.IngestConversationsRequest - 96, // 30: google.cloud.contactcenterinsights.v1.IngestConversationsMetadata.partial_errors:type_name -> google.rpc.Status - 85, // 31: google.cloud.contactcenterinsights.v1.IngestConversationsMetadata.ingest_conversations_stats:type_name -> google.cloud.contactcenterinsights.v1.IngestConversationsMetadata.IngestConversationsStats - 97, // 32: google.cloud.contactcenterinsights.v1.CreateAnalysisRequest.analysis:type_name -> google.cloud.contactcenterinsights.v1.Analysis - 97, // 33: google.cloud.contactcenterinsights.v1.ListAnalysesResponse.analyses:type_name -> google.cloud.contactcenterinsights.v1.Analysis - 91, // 34: google.cloud.contactcenterinsights.v1.BulkAnalyzeConversationsRequest.annotator_selector:type_name -> google.cloud.contactcenterinsights.v1.AnnotatorSelector - 90, // 35: google.cloud.contactcenterinsights.v1.BulkAnalyzeConversationsMetadata.create_time:type_name -> google.protobuf.Timestamp - 90, // 36: google.cloud.contactcenterinsights.v1.BulkAnalyzeConversationsMetadata.end_time:type_name -> google.protobuf.Timestamp - 22, // 37: google.cloud.contactcenterinsights.v1.BulkAnalyzeConversationsMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.BulkAnalyzeConversationsRequest - 96, // 38: google.cloud.contactcenterinsights.v1.BulkAnalyzeConversationsMetadata.partial_errors:type_name -> google.rpc.Status - 90, // 39: google.cloud.contactcenterinsights.v1.BulkDeleteConversationsMetadata.create_time:type_name -> google.protobuf.Timestamp - 90, // 40: google.cloud.contactcenterinsights.v1.BulkDeleteConversationsMetadata.end_time:type_name -> google.protobuf.Timestamp - 25, // 41: google.cloud.contactcenterinsights.v1.BulkDeleteConversationsMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.BulkDeleteConversationsRequest - 96, // 42: google.cloud.contactcenterinsights.v1.BulkDeleteConversationsMetadata.partial_errors:type_name -> google.rpc.Status - 86, // 43: google.cloud.contactcenterinsights.v1.ExportInsightsDataRequest.big_query_destination:type_name -> google.cloud.contactcenterinsights.v1.ExportInsightsDataRequest.BigQueryDestination + 159, // 20: google.cloud.contactcenterinsights.v1.UpdateConversationRequest.conversation:type_name -> google.cloud.contactcenterinsights.v1.Conversation + 162, // 21: google.cloud.contactcenterinsights.v1.UpdateConversationRequest.update_mask:type_name -> google.protobuf.FieldMask + 133, // 22: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.gcs_source:type_name -> google.cloud.contactcenterinsights.v1.IngestConversationsRequest.GcsSource + 134, // 23: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.transcript_object_config:type_name -> google.cloud.contactcenterinsights.v1.IngestConversationsRequest.TranscriptObjectConfig + 135, // 24: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.conversation_config:type_name -> google.cloud.contactcenterinsights.v1.IngestConversationsRequest.ConversationConfig + 160, // 25: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.redaction_config:type_name -> google.cloud.contactcenterinsights.v1.RedactionConfig + 161, // 26: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.speech_config:type_name -> google.cloud.contactcenterinsights.v1.SpeechConfig + 157, // 27: google.cloud.contactcenterinsights.v1.IngestConversationsMetadata.create_time:type_name -> google.protobuf.Timestamp + 157, // 28: google.cloud.contactcenterinsights.v1.IngestConversationsMetadata.end_time:type_name -> google.protobuf.Timestamp + 19, // 29: google.cloud.contactcenterinsights.v1.IngestConversationsMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.IngestConversationsRequest + 163, // 30: google.cloud.contactcenterinsights.v1.IngestConversationsMetadata.partial_errors:type_name -> google.rpc.Status + 136, // 31: google.cloud.contactcenterinsights.v1.IngestConversationsMetadata.ingest_conversations_stats:type_name -> google.cloud.contactcenterinsights.v1.IngestConversationsMetadata.IngestConversationsStats + 164, // 32: google.cloud.contactcenterinsights.v1.CreateAnalysisRequest.analysis:type_name -> google.cloud.contactcenterinsights.v1.Analysis + 164, // 33: google.cloud.contactcenterinsights.v1.ListAnalysesResponse.analyses:type_name -> google.cloud.contactcenterinsights.v1.Analysis + 158, // 34: google.cloud.contactcenterinsights.v1.BulkAnalyzeConversationsRequest.annotator_selector:type_name -> google.cloud.contactcenterinsights.v1.AnnotatorSelector + 157, // 35: google.cloud.contactcenterinsights.v1.BulkAnalyzeConversationsMetadata.create_time:type_name -> google.protobuf.Timestamp + 157, // 36: google.cloud.contactcenterinsights.v1.BulkAnalyzeConversationsMetadata.end_time:type_name -> google.protobuf.Timestamp + 27, // 37: google.cloud.contactcenterinsights.v1.BulkAnalyzeConversationsMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.BulkAnalyzeConversationsRequest + 163, // 38: google.cloud.contactcenterinsights.v1.BulkAnalyzeConversationsMetadata.partial_errors:type_name -> google.rpc.Status + 157, // 39: google.cloud.contactcenterinsights.v1.BulkDeleteConversationsMetadata.create_time:type_name -> google.protobuf.Timestamp + 157, // 40: google.cloud.contactcenterinsights.v1.BulkDeleteConversationsMetadata.end_time:type_name -> google.protobuf.Timestamp + 30, // 41: google.cloud.contactcenterinsights.v1.BulkDeleteConversationsMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.BulkDeleteConversationsRequest + 163, // 42: google.cloud.contactcenterinsights.v1.BulkDeleteConversationsMetadata.partial_errors:type_name -> google.rpc.Status + 137, // 43: google.cloud.contactcenterinsights.v1.ExportInsightsDataRequest.big_query_destination:type_name -> google.cloud.contactcenterinsights.v1.ExportInsightsDataRequest.BigQueryDestination 2, // 44: google.cloud.contactcenterinsights.v1.ExportInsightsDataRequest.write_disposition:type_name -> google.cloud.contactcenterinsights.v1.ExportInsightsDataRequest.WriteDisposition - 90, // 45: google.cloud.contactcenterinsights.v1.ExportInsightsDataMetadata.create_time:type_name -> google.protobuf.Timestamp - 90, // 46: google.cloud.contactcenterinsights.v1.ExportInsightsDataMetadata.end_time:type_name -> google.protobuf.Timestamp - 28, // 47: google.cloud.contactcenterinsights.v1.ExportInsightsDataMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.ExportInsightsDataRequest - 96, // 48: google.cloud.contactcenterinsights.v1.ExportInsightsDataMetadata.partial_errors:type_name -> google.rpc.Status - 98, // 49: google.cloud.contactcenterinsights.v1.CreateIssueModelRequest.issue_model:type_name -> google.cloud.contactcenterinsights.v1.IssueModel - 90, // 50: google.cloud.contactcenterinsights.v1.CreateIssueModelMetadata.create_time:type_name -> google.protobuf.Timestamp - 90, // 51: google.cloud.contactcenterinsights.v1.CreateIssueModelMetadata.end_time:type_name -> google.protobuf.Timestamp - 31, // 52: google.cloud.contactcenterinsights.v1.CreateIssueModelMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.CreateIssueModelRequest - 98, // 53: google.cloud.contactcenterinsights.v1.UpdateIssueModelRequest.issue_model:type_name -> google.cloud.contactcenterinsights.v1.IssueModel - 95, // 54: google.cloud.contactcenterinsights.v1.UpdateIssueModelRequest.update_mask:type_name -> google.protobuf.FieldMask - 98, // 55: google.cloud.contactcenterinsights.v1.ListIssueModelsResponse.issue_models:type_name -> google.cloud.contactcenterinsights.v1.IssueModel - 90, // 56: google.cloud.contactcenterinsights.v1.DeleteIssueModelMetadata.create_time:type_name -> google.protobuf.Timestamp - 90, // 57: google.cloud.contactcenterinsights.v1.DeleteIssueModelMetadata.end_time:type_name -> google.protobuf.Timestamp - 37, // 58: google.cloud.contactcenterinsights.v1.DeleteIssueModelMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.DeleteIssueModelRequest - 90, // 59: google.cloud.contactcenterinsights.v1.DeployIssueModelMetadata.create_time:type_name -> google.protobuf.Timestamp - 90, // 60: google.cloud.contactcenterinsights.v1.DeployIssueModelMetadata.end_time:type_name -> google.protobuf.Timestamp - 39, // 61: google.cloud.contactcenterinsights.v1.DeployIssueModelMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.DeployIssueModelRequest - 90, // 62: google.cloud.contactcenterinsights.v1.UndeployIssueModelMetadata.create_time:type_name -> google.protobuf.Timestamp - 90, // 63: google.cloud.contactcenterinsights.v1.UndeployIssueModelMetadata.end_time:type_name -> google.protobuf.Timestamp - 42, // 64: google.cloud.contactcenterinsights.v1.UndeployIssueModelMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.UndeployIssueModelRequest - 87, // 65: google.cloud.contactcenterinsights.v1.ExportIssueModelRequest.gcs_destination:type_name -> google.cloud.contactcenterinsights.v1.ExportIssueModelRequest.GcsDestination - 90, // 66: google.cloud.contactcenterinsights.v1.ExportIssueModelMetadata.create_time:type_name -> google.protobuf.Timestamp - 90, // 67: google.cloud.contactcenterinsights.v1.ExportIssueModelMetadata.end_time:type_name -> google.protobuf.Timestamp - 45, // 68: google.cloud.contactcenterinsights.v1.ExportIssueModelMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.ExportIssueModelRequest - 88, // 69: google.cloud.contactcenterinsights.v1.ImportIssueModelRequest.gcs_source:type_name -> google.cloud.contactcenterinsights.v1.ImportIssueModelRequest.GcsSource - 90, // 70: google.cloud.contactcenterinsights.v1.ImportIssueModelMetadata.create_time:type_name -> google.protobuf.Timestamp - 90, // 71: google.cloud.contactcenterinsights.v1.ImportIssueModelMetadata.end_time:type_name -> google.protobuf.Timestamp - 48, // 72: google.cloud.contactcenterinsights.v1.ImportIssueModelMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.ImportIssueModelRequest - 99, // 73: google.cloud.contactcenterinsights.v1.ListIssuesResponse.issues:type_name -> google.cloud.contactcenterinsights.v1.Issue - 99, // 74: google.cloud.contactcenterinsights.v1.UpdateIssueRequest.issue:type_name -> google.cloud.contactcenterinsights.v1.Issue - 95, // 75: google.cloud.contactcenterinsights.v1.UpdateIssueRequest.update_mask:type_name -> google.protobuf.FieldMask - 100, // 76: google.cloud.contactcenterinsights.v1.CalculateIssueModelStatsResponse.current_stats:type_name -> google.cloud.contactcenterinsights.v1.IssueModelLabelStats - 101, // 77: google.cloud.contactcenterinsights.v1.CreatePhraseMatcherRequest.phrase_matcher:type_name -> google.cloud.contactcenterinsights.v1.PhraseMatcher - 101, // 78: google.cloud.contactcenterinsights.v1.ListPhraseMatchersResponse.phrase_matchers:type_name -> google.cloud.contactcenterinsights.v1.PhraseMatcher - 101, // 79: google.cloud.contactcenterinsights.v1.UpdatePhraseMatcherRequest.phrase_matcher:type_name -> google.cloud.contactcenterinsights.v1.PhraseMatcher - 95, // 80: google.cloud.contactcenterinsights.v1.UpdatePhraseMatcherRequest.update_mask:type_name -> google.protobuf.FieldMask - 102, // 81: google.cloud.contactcenterinsights.v1.UpdateSettingsRequest.settings:type_name -> google.cloud.contactcenterinsights.v1.Settings - 95, // 82: google.cloud.contactcenterinsights.v1.UpdateSettingsRequest.update_mask:type_name -> google.protobuf.FieldMask - 103, // 83: google.cloud.contactcenterinsights.v1.InitializeEncryptionSpecRequest.encryption_spec:type_name -> google.cloud.contactcenterinsights.v1.EncryptionSpec - 90, // 84: google.cloud.contactcenterinsights.v1.InitializeEncryptionSpecMetadata.create_time:type_name -> google.protobuf.Timestamp - 90, // 85: google.cloud.contactcenterinsights.v1.InitializeEncryptionSpecMetadata.end_time:type_name -> google.protobuf.Timestamp - 67, // 86: google.cloud.contactcenterinsights.v1.InitializeEncryptionSpecMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.InitializeEncryptionSpecRequest - 96, // 87: google.cloud.contactcenterinsights.v1.InitializeEncryptionSpecMetadata.partial_errors:type_name -> google.rpc.Status - 104, // 88: google.cloud.contactcenterinsights.v1.CreateViewRequest.view:type_name -> google.cloud.contactcenterinsights.v1.View - 104, // 89: google.cloud.contactcenterinsights.v1.ListViewsResponse.views:type_name -> google.cloud.contactcenterinsights.v1.View - 104, // 90: google.cloud.contactcenterinsights.v1.UpdateViewRequest.view:type_name -> google.cloud.contactcenterinsights.v1.View - 95, // 91: google.cloud.contactcenterinsights.v1.UpdateViewRequest.update_mask:type_name -> google.protobuf.FieldMask - 89, // 92: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.TimeSeries.interval_duration:type_name -> google.protobuf.Duration - 81, // 93: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.TimeSeries.points:type_name -> google.cloud.contactcenterinsights.v1.CalculateStatsResponse.TimeSeries.Interval - 105, // 94: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.IssueMatchesStatsEntry.value:type_name -> google.cloud.contactcenterinsights.v1.IssueModelLabelStats.IssueStats - 90, // 95: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.TimeSeries.Interval.start_time:type_name -> google.protobuf.Timestamp - 1, // 96: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.GcsSource.bucket_object_type:type_name -> google.cloud.contactcenterinsights.v1.IngestConversationsRequest.GcsSource.BucketObjectType - 106, // 97: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.TranscriptObjectConfig.medium:type_name -> google.cloud.contactcenterinsights.v1.Conversation.Medium - 6, // 98: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateConversation:input_type -> google.cloud.contactcenterinsights.v1.CreateConversationRequest - 7, // 99: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UploadConversation:input_type -> google.cloud.contactcenterinsights.v1.UploadConversationRequest - 12, // 100: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateConversation:input_type -> google.cloud.contactcenterinsights.v1.UpdateConversationRequest - 11, // 101: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetConversation:input_type -> google.cloud.contactcenterinsights.v1.GetConversationRequest - 9, // 102: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListConversations:input_type -> google.cloud.contactcenterinsights.v1.ListConversationsRequest - 13, // 103: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteConversation:input_type -> google.cloud.contactcenterinsights.v1.DeleteConversationRequest - 17, // 104: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateAnalysis:input_type -> google.cloud.contactcenterinsights.v1.CreateAnalysisRequest - 20, // 105: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetAnalysis:input_type -> google.cloud.contactcenterinsights.v1.GetAnalysisRequest - 18, // 106: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListAnalyses:input_type -> google.cloud.contactcenterinsights.v1.ListAnalysesRequest - 21, // 107: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteAnalysis:input_type -> google.cloud.contactcenterinsights.v1.DeleteAnalysisRequest - 22, // 108: google.cloud.contactcenterinsights.v1.ContactCenterInsights.BulkAnalyzeConversations:input_type -> google.cloud.contactcenterinsights.v1.BulkAnalyzeConversationsRequest - 25, // 109: google.cloud.contactcenterinsights.v1.ContactCenterInsights.BulkDeleteConversations:input_type -> google.cloud.contactcenterinsights.v1.BulkDeleteConversationsRequest - 14, // 110: google.cloud.contactcenterinsights.v1.ContactCenterInsights.IngestConversations:input_type -> google.cloud.contactcenterinsights.v1.IngestConversationsRequest - 28, // 111: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ExportInsightsData:input_type -> google.cloud.contactcenterinsights.v1.ExportInsightsDataRequest - 31, // 112: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateIssueModel:input_type -> google.cloud.contactcenterinsights.v1.CreateIssueModelRequest - 33, // 113: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateIssueModel:input_type -> google.cloud.contactcenterinsights.v1.UpdateIssueModelRequest - 36, // 114: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetIssueModel:input_type -> google.cloud.contactcenterinsights.v1.GetIssueModelRequest - 34, // 115: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListIssueModels:input_type -> google.cloud.contactcenterinsights.v1.ListIssueModelsRequest - 37, // 116: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteIssueModel:input_type -> google.cloud.contactcenterinsights.v1.DeleteIssueModelRequest - 39, // 117: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeployIssueModel:input_type -> google.cloud.contactcenterinsights.v1.DeployIssueModelRequest - 42, // 118: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UndeployIssueModel:input_type -> google.cloud.contactcenterinsights.v1.UndeployIssueModelRequest - 45, // 119: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ExportIssueModel:input_type -> google.cloud.contactcenterinsights.v1.ExportIssueModelRequest - 48, // 120: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ImportIssueModel:input_type -> google.cloud.contactcenterinsights.v1.ImportIssueModelRequest - 51, // 121: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetIssue:input_type -> google.cloud.contactcenterinsights.v1.GetIssueRequest - 52, // 122: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListIssues:input_type -> google.cloud.contactcenterinsights.v1.ListIssuesRequest - 54, // 123: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateIssue:input_type -> google.cloud.contactcenterinsights.v1.UpdateIssueRequest - 55, // 124: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteIssue:input_type -> google.cloud.contactcenterinsights.v1.DeleteIssueRequest - 56, // 125: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CalculateIssueModelStats:input_type -> google.cloud.contactcenterinsights.v1.CalculateIssueModelStatsRequest - 58, // 126: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreatePhraseMatcher:input_type -> google.cloud.contactcenterinsights.v1.CreatePhraseMatcherRequest - 61, // 127: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetPhraseMatcher:input_type -> google.cloud.contactcenterinsights.v1.GetPhraseMatcherRequest - 59, // 128: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListPhraseMatchers:input_type -> google.cloud.contactcenterinsights.v1.ListPhraseMatchersRequest - 62, // 129: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeletePhraseMatcher:input_type -> google.cloud.contactcenterinsights.v1.DeletePhraseMatcherRequest - 63, // 130: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdatePhraseMatcher:input_type -> google.cloud.contactcenterinsights.v1.UpdatePhraseMatcherRequest - 3, // 131: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CalculateStats:input_type -> google.cloud.contactcenterinsights.v1.CalculateStatsRequest - 64, // 132: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetSettings:input_type -> google.cloud.contactcenterinsights.v1.GetSettingsRequest - 65, // 133: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateSettings:input_type -> google.cloud.contactcenterinsights.v1.UpdateSettingsRequest - 66, // 134: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetEncryptionSpec:input_type -> google.cloud.contactcenterinsights.v1.GetEncryptionSpecRequest - 67, // 135: google.cloud.contactcenterinsights.v1.ContactCenterInsights.InitializeEncryptionSpec:input_type -> google.cloud.contactcenterinsights.v1.InitializeEncryptionSpecRequest - 70, // 136: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateView:input_type -> google.cloud.contactcenterinsights.v1.CreateViewRequest - 71, // 137: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetView:input_type -> google.cloud.contactcenterinsights.v1.GetViewRequest - 72, // 138: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListViews:input_type -> google.cloud.contactcenterinsights.v1.ListViewsRequest - 74, // 139: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateView:input_type -> google.cloud.contactcenterinsights.v1.UpdateViewRequest - 75, // 140: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteView:input_type -> google.cloud.contactcenterinsights.v1.DeleteViewRequest - 92, // 141: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateConversation:output_type -> google.cloud.contactcenterinsights.v1.Conversation - 107, // 142: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UploadConversation:output_type -> google.longrunning.Operation - 92, // 143: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateConversation:output_type -> google.cloud.contactcenterinsights.v1.Conversation - 92, // 144: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetConversation:output_type -> google.cloud.contactcenterinsights.v1.Conversation - 10, // 145: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListConversations:output_type -> google.cloud.contactcenterinsights.v1.ListConversationsResponse - 108, // 146: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteConversation:output_type -> google.protobuf.Empty - 107, // 147: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateAnalysis:output_type -> google.longrunning.Operation - 97, // 148: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetAnalysis:output_type -> google.cloud.contactcenterinsights.v1.Analysis - 19, // 149: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListAnalyses:output_type -> google.cloud.contactcenterinsights.v1.ListAnalysesResponse - 108, // 150: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteAnalysis:output_type -> google.protobuf.Empty - 107, // 151: google.cloud.contactcenterinsights.v1.ContactCenterInsights.BulkAnalyzeConversations:output_type -> google.longrunning.Operation - 107, // 152: google.cloud.contactcenterinsights.v1.ContactCenterInsights.BulkDeleteConversations:output_type -> google.longrunning.Operation - 107, // 153: google.cloud.contactcenterinsights.v1.ContactCenterInsights.IngestConversations:output_type -> google.longrunning.Operation - 107, // 154: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ExportInsightsData:output_type -> google.longrunning.Operation - 107, // 155: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateIssueModel:output_type -> google.longrunning.Operation - 98, // 156: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateIssueModel:output_type -> google.cloud.contactcenterinsights.v1.IssueModel - 98, // 157: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetIssueModel:output_type -> google.cloud.contactcenterinsights.v1.IssueModel - 35, // 158: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListIssueModels:output_type -> google.cloud.contactcenterinsights.v1.ListIssueModelsResponse - 107, // 159: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteIssueModel:output_type -> google.longrunning.Operation - 107, // 160: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeployIssueModel:output_type -> google.longrunning.Operation - 107, // 161: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UndeployIssueModel:output_type -> google.longrunning.Operation - 107, // 162: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ExportIssueModel:output_type -> google.longrunning.Operation - 107, // 163: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ImportIssueModel:output_type -> google.longrunning.Operation - 99, // 164: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetIssue:output_type -> google.cloud.contactcenterinsights.v1.Issue - 53, // 165: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListIssues:output_type -> google.cloud.contactcenterinsights.v1.ListIssuesResponse - 99, // 166: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateIssue:output_type -> google.cloud.contactcenterinsights.v1.Issue - 108, // 167: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteIssue:output_type -> google.protobuf.Empty - 57, // 168: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CalculateIssueModelStats:output_type -> google.cloud.contactcenterinsights.v1.CalculateIssueModelStatsResponse - 101, // 169: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreatePhraseMatcher:output_type -> google.cloud.contactcenterinsights.v1.PhraseMatcher - 101, // 170: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetPhraseMatcher:output_type -> google.cloud.contactcenterinsights.v1.PhraseMatcher - 60, // 171: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListPhraseMatchers:output_type -> google.cloud.contactcenterinsights.v1.ListPhraseMatchersResponse - 108, // 172: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeletePhraseMatcher:output_type -> google.protobuf.Empty - 101, // 173: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdatePhraseMatcher:output_type -> google.cloud.contactcenterinsights.v1.PhraseMatcher - 4, // 174: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CalculateStats:output_type -> google.cloud.contactcenterinsights.v1.CalculateStatsResponse - 102, // 175: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetSettings:output_type -> google.cloud.contactcenterinsights.v1.Settings - 102, // 176: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateSettings:output_type -> google.cloud.contactcenterinsights.v1.Settings - 103, // 177: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetEncryptionSpec:output_type -> google.cloud.contactcenterinsights.v1.EncryptionSpec - 107, // 178: google.cloud.contactcenterinsights.v1.ContactCenterInsights.InitializeEncryptionSpec:output_type -> google.longrunning.Operation - 104, // 179: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateView:output_type -> google.cloud.contactcenterinsights.v1.View - 104, // 180: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetView:output_type -> google.cloud.contactcenterinsights.v1.View - 73, // 181: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListViews:output_type -> google.cloud.contactcenterinsights.v1.ListViewsResponse - 104, // 182: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateView:output_type -> google.cloud.contactcenterinsights.v1.View - 108, // 183: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteView:output_type -> google.protobuf.Empty - 141, // [141:184] is the sub-list for method output_type - 98, // [98:141] is the sub-list for method input_type - 98, // [98:98] is the sub-list for extension type_name - 98, // [98:98] is the sub-list for extension extendee - 0, // [0:98] is the sub-list for field type_name + 157, // 45: google.cloud.contactcenterinsights.v1.ExportInsightsDataMetadata.create_time:type_name -> google.protobuf.Timestamp + 157, // 46: google.cloud.contactcenterinsights.v1.ExportInsightsDataMetadata.end_time:type_name -> google.protobuf.Timestamp + 33, // 47: google.cloud.contactcenterinsights.v1.ExportInsightsDataMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.ExportInsightsDataRequest + 163, // 48: google.cloud.contactcenterinsights.v1.ExportInsightsDataMetadata.partial_errors:type_name -> google.rpc.Status + 165, // 49: google.cloud.contactcenterinsights.v1.CreateIssueModelRequest.issue_model:type_name -> google.cloud.contactcenterinsights.v1.IssueModel + 157, // 50: google.cloud.contactcenterinsights.v1.CreateIssueModelMetadata.create_time:type_name -> google.protobuf.Timestamp + 157, // 51: google.cloud.contactcenterinsights.v1.CreateIssueModelMetadata.end_time:type_name -> google.protobuf.Timestamp + 36, // 52: google.cloud.contactcenterinsights.v1.CreateIssueModelMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.CreateIssueModelRequest + 165, // 53: google.cloud.contactcenterinsights.v1.UpdateIssueModelRequest.issue_model:type_name -> google.cloud.contactcenterinsights.v1.IssueModel + 162, // 54: google.cloud.contactcenterinsights.v1.UpdateIssueModelRequest.update_mask:type_name -> google.protobuf.FieldMask + 165, // 55: google.cloud.contactcenterinsights.v1.ListIssueModelsResponse.issue_models:type_name -> google.cloud.contactcenterinsights.v1.IssueModel + 157, // 56: google.cloud.contactcenterinsights.v1.DeleteIssueModelMetadata.create_time:type_name -> google.protobuf.Timestamp + 157, // 57: google.cloud.contactcenterinsights.v1.DeleteIssueModelMetadata.end_time:type_name -> google.protobuf.Timestamp + 42, // 58: google.cloud.contactcenterinsights.v1.DeleteIssueModelMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.DeleteIssueModelRequest + 157, // 59: google.cloud.contactcenterinsights.v1.DeployIssueModelMetadata.create_time:type_name -> google.protobuf.Timestamp + 157, // 60: google.cloud.contactcenterinsights.v1.DeployIssueModelMetadata.end_time:type_name -> google.protobuf.Timestamp + 44, // 61: google.cloud.contactcenterinsights.v1.DeployIssueModelMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.DeployIssueModelRequest + 157, // 62: google.cloud.contactcenterinsights.v1.UndeployIssueModelMetadata.create_time:type_name -> google.protobuf.Timestamp + 157, // 63: google.cloud.contactcenterinsights.v1.UndeployIssueModelMetadata.end_time:type_name -> google.protobuf.Timestamp + 47, // 64: google.cloud.contactcenterinsights.v1.UndeployIssueModelMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.UndeployIssueModelRequest + 138, // 65: google.cloud.contactcenterinsights.v1.ExportIssueModelRequest.gcs_destination:type_name -> google.cloud.contactcenterinsights.v1.ExportIssueModelRequest.GcsDestination + 157, // 66: google.cloud.contactcenterinsights.v1.ExportIssueModelMetadata.create_time:type_name -> google.protobuf.Timestamp + 157, // 67: google.cloud.contactcenterinsights.v1.ExportIssueModelMetadata.end_time:type_name -> google.protobuf.Timestamp + 50, // 68: google.cloud.contactcenterinsights.v1.ExportIssueModelMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.ExportIssueModelRequest + 139, // 69: google.cloud.contactcenterinsights.v1.ImportIssueModelRequest.gcs_source:type_name -> google.cloud.contactcenterinsights.v1.ImportIssueModelRequest.GcsSource + 157, // 70: google.cloud.contactcenterinsights.v1.ImportIssueModelMetadata.create_time:type_name -> google.protobuf.Timestamp + 157, // 71: google.cloud.contactcenterinsights.v1.ImportIssueModelMetadata.end_time:type_name -> google.protobuf.Timestamp + 53, // 72: google.cloud.contactcenterinsights.v1.ImportIssueModelMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.ImportIssueModelRequest + 166, // 73: google.cloud.contactcenterinsights.v1.ListIssuesResponse.issues:type_name -> google.cloud.contactcenterinsights.v1.Issue + 166, // 74: google.cloud.contactcenterinsights.v1.UpdateIssueRequest.issue:type_name -> google.cloud.contactcenterinsights.v1.Issue + 162, // 75: google.cloud.contactcenterinsights.v1.UpdateIssueRequest.update_mask:type_name -> google.protobuf.FieldMask + 167, // 76: google.cloud.contactcenterinsights.v1.CalculateIssueModelStatsResponse.current_stats:type_name -> google.cloud.contactcenterinsights.v1.IssueModelLabelStats + 168, // 77: google.cloud.contactcenterinsights.v1.CreatePhraseMatcherRequest.phrase_matcher:type_name -> google.cloud.contactcenterinsights.v1.PhraseMatcher + 168, // 78: google.cloud.contactcenterinsights.v1.ListPhraseMatchersResponse.phrase_matchers:type_name -> google.cloud.contactcenterinsights.v1.PhraseMatcher + 168, // 79: google.cloud.contactcenterinsights.v1.UpdatePhraseMatcherRequest.phrase_matcher:type_name -> google.cloud.contactcenterinsights.v1.PhraseMatcher + 162, // 80: google.cloud.contactcenterinsights.v1.UpdatePhraseMatcherRequest.update_mask:type_name -> google.protobuf.FieldMask + 169, // 81: google.cloud.contactcenterinsights.v1.UpdateSettingsRequest.settings:type_name -> google.cloud.contactcenterinsights.v1.Settings + 162, // 82: google.cloud.contactcenterinsights.v1.UpdateSettingsRequest.update_mask:type_name -> google.protobuf.FieldMask + 170, // 83: google.cloud.contactcenterinsights.v1.CreateAnalysisRuleRequest.analysis_rule:type_name -> google.cloud.contactcenterinsights.v1.AnalysisRule + 170, // 84: google.cloud.contactcenterinsights.v1.UpdateAnalysisRuleRequest.analysis_rule:type_name -> google.cloud.contactcenterinsights.v1.AnalysisRule + 162, // 85: google.cloud.contactcenterinsights.v1.UpdateAnalysisRuleRequest.update_mask:type_name -> google.protobuf.FieldMask + 170, // 86: google.cloud.contactcenterinsights.v1.ListAnalysisRulesResponse.analysis_rules:type_name -> google.cloud.contactcenterinsights.v1.AnalysisRule + 171, // 87: google.cloud.contactcenterinsights.v1.InitializeEncryptionSpecRequest.encryption_spec:type_name -> google.cloud.contactcenterinsights.v1.EncryptionSpec + 157, // 88: google.cloud.contactcenterinsights.v1.InitializeEncryptionSpecMetadata.create_time:type_name -> google.protobuf.Timestamp + 157, // 89: google.cloud.contactcenterinsights.v1.InitializeEncryptionSpecMetadata.end_time:type_name -> google.protobuf.Timestamp + 78, // 90: google.cloud.contactcenterinsights.v1.InitializeEncryptionSpecMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.InitializeEncryptionSpecRequest + 163, // 91: google.cloud.contactcenterinsights.v1.InitializeEncryptionSpecMetadata.partial_errors:type_name -> google.rpc.Status + 172, // 92: google.cloud.contactcenterinsights.v1.CreateViewRequest.view:type_name -> google.cloud.contactcenterinsights.v1.View + 172, // 93: google.cloud.contactcenterinsights.v1.ListViewsResponse.views:type_name -> google.cloud.contactcenterinsights.v1.View + 172, // 94: google.cloud.contactcenterinsights.v1.UpdateViewRequest.view:type_name -> google.cloud.contactcenterinsights.v1.View + 162, // 95: google.cloud.contactcenterinsights.v1.UpdateViewRequest.update_mask:type_name -> google.protobuf.FieldMask + 140, // 96: google.cloud.contactcenterinsights.v1.Dimension.issue_dimension_metadata:type_name -> google.cloud.contactcenterinsights.v1.Dimension.IssueDimensionMetadata + 141, // 97: google.cloud.contactcenterinsights.v1.Dimension.agent_dimension_metadata:type_name -> google.cloud.contactcenterinsights.v1.Dimension.AgentDimensionMetadata + 142, // 98: google.cloud.contactcenterinsights.v1.Dimension.qa_question_dimension_metadata:type_name -> google.cloud.contactcenterinsights.v1.Dimension.QaQuestionDimensionMetadata + 143, // 99: google.cloud.contactcenterinsights.v1.Dimension.qa_question_answer_dimension_metadata:type_name -> google.cloud.contactcenterinsights.v1.Dimension.QaQuestionAnswerDimensionMetadata + 3, // 100: google.cloud.contactcenterinsights.v1.Dimension.dimension_key:type_name -> google.cloud.contactcenterinsights.v1.Dimension.DimensionKey + 4, // 101: google.cloud.contactcenterinsights.v1.QueryMetricsRequest.time_granularity:type_name -> google.cloud.contactcenterinsights.v1.QueryMetricsRequest.TimeGranularity + 87, // 102: google.cloud.contactcenterinsights.v1.QueryMetricsRequest.dimensions:type_name -> google.cloud.contactcenterinsights.v1.Dimension + 162, // 103: google.cloud.contactcenterinsights.v1.QueryMetricsRequest.measure_mask:type_name -> google.protobuf.FieldMask + 157, // 104: google.cloud.contactcenterinsights.v1.QueryMetricsResponse.update_time:type_name -> google.protobuf.Timestamp + 144, // 105: google.cloud.contactcenterinsights.v1.QueryMetricsResponse.slices:type_name -> google.cloud.contactcenterinsights.v1.QueryMetricsResponse.Slice + 144, // 106: google.cloud.contactcenterinsights.v1.QueryMetricsResponse.macro_average_slice:type_name -> google.cloud.contactcenterinsights.v1.QueryMetricsResponse.Slice + 173, // 107: google.cloud.contactcenterinsights.v1.CreateQaQuestionRequest.qa_question:type_name -> google.cloud.contactcenterinsights.v1.QaQuestion + 173, // 108: google.cloud.contactcenterinsights.v1.ListQaQuestionsResponse.qa_questions:type_name -> google.cloud.contactcenterinsights.v1.QaQuestion + 173, // 109: google.cloud.contactcenterinsights.v1.UpdateQaQuestionRequest.qa_question:type_name -> google.cloud.contactcenterinsights.v1.QaQuestion + 162, // 110: google.cloud.contactcenterinsights.v1.UpdateQaQuestionRequest.update_mask:type_name -> google.protobuf.FieldMask + 174, // 111: google.cloud.contactcenterinsights.v1.CreateQaScorecardRequest.qa_scorecard:type_name -> google.cloud.contactcenterinsights.v1.QaScorecard + 174, // 112: google.cloud.contactcenterinsights.v1.UpdateQaScorecardRequest.qa_scorecard:type_name -> google.cloud.contactcenterinsights.v1.QaScorecard + 162, // 113: google.cloud.contactcenterinsights.v1.UpdateQaScorecardRequest.update_mask:type_name -> google.protobuf.FieldMask + 175, // 114: google.cloud.contactcenterinsights.v1.CreateQaScorecardRevisionRequest.qa_scorecard_revision:type_name -> google.cloud.contactcenterinsights.v1.QaScorecardRevision + 157, // 115: google.cloud.contactcenterinsights.v1.TuneQaScorecardRevisionMetadata.create_time:type_name -> google.protobuf.Timestamp + 157, // 116: google.cloud.contactcenterinsights.v1.TuneQaScorecardRevisionMetadata.end_time:type_name -> google.protobuf.Timestamp + 103, // 117: google.cloud.contactcenterinsights.v1.TuneQaScorecardRevisionMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.TuneQaScorecardRevisionRequest + 149, // 118: google.cloud.contactcenterinsights.v1.TuneQaScorecardRevisionMetadata.qa_question_dataset_validation_results:type_name -> google.cloud.contactcenterinsights.v1.TuneQaScorecardRevisionMetadata.QaQuestionDatasetValidationResult + 150, // 119: google.cloud.contactcenterinsights.v1.TuneQaScorecardRevisionMetadata.qa_question_dataset_tuning_metrics:type_name -> google.cloud.contactcenterinsights.v1.TuneQaScorecardRevisionMetadata.QaQuestionDatasetTuningMetrics + 174, // 120: google.cloud.contactcenterinsights.v1.ListQaScorecardsResponse.qa_scorecards:type_name -> google.cloud.contactcenterinsights.v1.QaScorecard + 175, // 121: google.cloud.contactcenterinsights.v1.ListQaScorecardRevisionsResponse.qa_scorecard_revisions:type_name -> google.cloud.contactcenterinsights.v1.QaScorecardRevision + 176, // 122: google.cloud.contactcenterinsights.v1.CreateFeedbackLabelRequest.feedback_label:type_name -> google.cloud.contactcenterinsights.v1.FeedbackLabel + 176, // 123: google.cloud.contactcenterinsights.v1.ListFeedbackLabelsResponse.feedback_labels:type_name -> google.cloud.contactcenterinsights.v1.FeedbackLabel + 176, // 124: google.cloud.contactcenterinsights.v1.UpdateFeedbackLabelRequest.feedback_label:type_name -> google.cloud.contactcenterinsights.v1.FeedbackLabel + 162, // 125: google.cloud.contactcenterinsights.v1.UpdateFeedbackLabelRequest.update_mask:type_name -> google.protobuf.FieldMask + 176, // 126: google.cloud.contactcenterinsights.v1.ListAllFeedbackLabelsResponse.feedback_labels:type_name -> google.cloud.contactcenterinsights.v1.FeedbackLabel + 152, // 127: google.cloud.contactcenterinsights.v1.BulkUploadFeedbackLabelsRequest.gcs_source:type_name -> google.cloud.contactcenterinsights.v1.BulkUploadFeedbackLabelsRequest.GcsSource + 157, // 128: google.cloud.contactcenterinsights.v1.BulkUploadFeedbackLabelsMetadata.create_time:type_name -> google.protobuf.Timestamp + 157, // 129: google.cloud.contactcenterinsights.v1.BulkUploadFeedbackLabelsMetadata.end_time:type_name -> google.protobuf.Timestamp + 121, // 130: google.cloud.contactcenterinsights.v1.BulkUploadFeedbackLabelsMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.BulkUploadFeedbackLabelsRequest + 163, // 131: google.cloud.contactcenterinsights.v1.BulkUploadFeedbackLabelsMetadata.partial_errors:type_name -> google.rpc.Status + 153, // 132: google.cloud.contactcenterinsights.v1.BulkUploadFeedbackLabelsMetadata.upload_stats:type_name -> google.cloud.contactcenterinsights.v1.BulkUploadFeedbackLabelsMetadata.UploadStats + 154, // 133: google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsRequest.gcs_destination:type_name -> google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsRequest.GcsDestination + 6, // 134: google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsRequest.feedback_label_type:type_name -> google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsRequest.FeedbackLabelType + 157, // 135: google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsMetadata.create_time:type_name -> google.protobuf.Timestamp + 157, // 136: google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsMetadata.end_time:type_name -> google.protobuf.Timestamp + 124, // 137: google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsMetadata.request:type_name -> google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsRequest + 163, // 138: google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsMetadata.partial_errors:type_name -> google.rpc.Status + 155, // 139: google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsMetadata.download_stats:type_name -> google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsMetadata.DownloadStats + 156, // 140: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.TimeSeries.interval_duration:type_name -> google.protobuf.Duration + 132, // 141: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.TimeSeries.points:type_name -> google.cloud.contactcenterinsights.v1.CalculateStatsResponse.TimeSeries.Interval + 177, // 142: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.IssueMatchesStatsEntry.value:type_name -> google.cloud.contactcenterinsights.v1.IssueModelLabelStats.IssueStats + 157, // 143: google.cloud.contactcenterinsights.v1.CalculateStatsResponse.TimeSeries.Interval.start_time:type_name -> google.protobuf.Timestamp + 1, // 144: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.GcsSource.bucket_object_type:type_name -> google.cloud.contactcenterinsights.v1.IngestConversationsRequest.GcsSource.BucketObjectType + 178, // 145: google.cloud.contactcenterinsights.v1.IngestConversationsRequest.TranscriptObjectConfig.medium:type_name -> google.cloud.contactcenterinsights.v1.Conversation.Medium + 87, // 146: google.cloud.contactcenterinsights.v1.QueryMetricsResponse.Slice.dimensions:type_name -> google.cloud.contactcenterinsights.v1.Dimension + 145, // 147: google.cloud.contactcenterinsights.v1.QueryMetricsResponse.Slice.total:type_name -> google.cloud.contactcenterinsights.v1.QueryMetricsResponse.Slice.DataPoint + 146, // 148: google.cloud.contactcenterinsights.v1.QueryMetricsResponse.Slice.time_series:type_name -> google.cloud.contactcenterinsights.v1.QueryMetricsResponse.Slice.TimeSeries + 147, // 149: google.cloud.contactcenterinsights.v1.QueryMetricsResponse.Slice.DataPoint.conversation_measure:type_name -> google.cloud.contactcenterinsights.v1.QueryMetricsResponse.Slice.DataPoint.ConversationMeasure + 179, // 150: google.cloud.contactcenterinsights.v1.QueryMetricsResponse.Slice.DataPoint.interval:type_name -> google.type.Interval + 145, // 151: google.cloud.contactcenterinsights.v1.QueryMetricsResponse.Slice.TimeSeries.data_points:type_name -> google.cloud.contactcenterinsights.v1.QueryMetricsResponse.Slice.DataPoint + 156, // 152: google.cloud.contactcenterinsights.v1.QueryMetricsResponse.Slice.DataPoint.ConversationMeasure.average_duration:type_name -> google.protobuf.Duration + 148, // 153: google.cloud.contactcenterinsights.v1.QueryMetricsResponse.Slice.DataPoint.ConversationMeasure.qa_tag_scores:type_name -> google.cloud.contactcenterinsights.v1.QueryMetricsResponse.Slice.DataPoint.ConversationMeasure.QaTagScore + 180, // 154: google.cloud.contactcenterinsights.v1.TuneQaScorecardRevisionMetadata.QaQuestionDatasetValidationResult.dataset_validation_warnings:type_name -> google.cloud.contactcenterinsights.v1.DatasetValidationWarning + 151, // 155: google.cloud.contactcenterinsights.v1.TuneQaScorecardRevisionMetadata.QaQuestionDatasetTuningMetrics.metrics:type_name -> google.cloud.contactcenterinsights.v1.TuneQaScorecardRevisionMetadata.QaQuestionDatasetTuningMetrics.Metrics + 5, // 156: google.cloud.contactcenterinsights.v1.BulkUploadFeedbackLabelsRequest.GcsSource.format:type_name -> google.cloud.contactcenterinsights.v1.BulkUploadFeedbackLabelsRequest.GcsSource.Format + 7, // 157: google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsRequest.GcsDestination.format:type_name -> google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsRequest.GcsDestination.Format + 11, // 158: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateConversation:input_type -> google.cloud.contactcenterinsights.v1.CreateConversationRequest + 12, // 159: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UploadConversation:input_type -> google.cloud.contactcenterinsights.v1.UploadConversationRequest + 17, // 160: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateConversation:input_type -> google.cloud.contactcenterinsights.v1.UpdateConversationRequest + 16, // 161: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetConversation:input_type -> google.cloud.contactcenterinsights.v1.GetConversationRequest + 14, // 162: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListConversations:input_type -> google.cloud.contactcenterinsights.v1.ListConversationsRequest + 18, // 163: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteConversation:input_type -> google.cloud.contactcenterinsights.v1.DeleteConversationRequest + 22, // 164: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateAnalysis:input_type -> google.cloud.contactcenterinsights.v1.CreateAnalysisRequest + 25, // 165: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetAnalysis:input_type -> google.cloud.contactcenterinsights.v1.GetAnalysisRequest + 23, // 166: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListAnalyses:input_type -> google.cloud.contactcenterinsights.v1.ListAnalysesRequest + 26, // 167: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteAnalysis:input_type -> google.cloud.contactcenterinsights.v1.DeleteAnalysisRequest + 27, // 168: google.cloud.contactcenterinsights.v1.ContactCenterInsights.BulkAnalyzeConversations:input_type -> google.cloud.contactcenterinsights.v1.BulkAnalyzeConversationsRequest + 30, // 169: google.cloud.contactcenterinsights.v1.ContactCenterInsights.BulkDeleteConversations:input_type -> google.cloud.contactcenterinsights.v1.BulkDeleteConversationsRequest + 19, // 170: google.cloud.contactcenterinsights.v1.ContactCenterInsights.IngestConversations:input_type -> google.cloud.contactcenterinsights.v1.IngestConversationsRequest + 33, // 171: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ExportInsightsData:input_type -> google.cloud.contactcenterinsights.v1.ExportInsightsDataRequest + 36, // 172: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateIssueModel:input_type -> google.cloud.contactcenterinsights.v1.CreateIssueModelRequest + 38, // 173: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateIssueModel:input_type -> google.cloud.contactcenterinsights.v1.UpdateIssueModelRequest + 41, // 174: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetIssueModel:input_type -> google.cloud.contactcenterinsights.v1.GetIssueModelRequest + 39, // 175: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListIssueModels:input_type -> google.cloud.contactcenterinsights.v1.ListIssueModelsRequest + 42, // 176: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteIssueModel:input_type -> google.cloud.contactcenterinsights.v1.DeleteIssueModelRequest + 44, // 177: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeployIssueModel:input_type -> google.cloud.contactcenterinsights.v1.DeployIssueModelRequest + 47, // 178: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UndeployIssueModel:input_type -> google.cloud.contactcenterinsights.v1.UndeployIssueModelRequest + 50, // 179: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ExportIssueModel:input_type -> google.cloud.contactcenterinsights.v1.ExportIssueModelRequest + 53, // 180: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ImportIssueModel:input_type -> google.cloud.contactcenterinsights.v1.ImportIssueModelRequest + 56, // 181: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetIssue:input_type -> google.cloud.contactcenterinsights.v1.GetIssueRequest + 57, // 182: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListIssues:input_type -> google.cloud.contactcenterinsights.v1.ListIssuesRequest + 59, // 183: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateIssue:input_type -> google.cloud.contactcenterinsights.v1.UpdateIssueRequest + 60, // 184: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteIssue:input_type -> google.cloud.contactcenterinsights.v1.DeleteIssueRequest + 61, // 185: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CalculateIssueModelStats:input_type -> google.cloud.contactcenterinsights.v1.CalculateIssueModelStatsRequest + 63, // 186: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreatePhraseMatcher:input_type -> google.cloud.contactcenterinsights.v1.CreatePhraseMatcherRequest + 66, // 187: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetPhraseMatcher:input_type -> google.cloud.contactcenterinsights.v1.GetPhraseMatcherRequest + 64, // 188: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListPhraseMatchers:input_type -> google.cloud.contactcenterinsights.v1.ListPhraseMatchersRequest + 67, // 189: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeletePhraseMatcher:input_type -> google.cloud.contactcenterinsights.v1.DeletePhraseMatcherRequest + 68, // 190: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdatePhraseMatcher:input_type -> google.cloud.contactcenterinsights.v1.UpdatePhraseMatcherRequest + 8, // 191: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CalculateStats:input_type -> google.cloud.contactcenterinsights.v1.CalculateStatsRequest + 69, // 192: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetSettings:input_type -> google.cloud.contactcenterinsights.v1.GetSettingsRequest + 70, // 193: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateSettings:input_type -> google.cloud.contactcenterinsights.v1.UpdateSettingsRequest + 71, // 194: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateAnalysisRule:input_type -> google.cloud.contactcenterinsights.v1.CreateAnalysisRuleRequest + 72, // 195: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetAnalysisRule:input_type -> google.cloud.contactcenterinsights.v1.GetAnalysisRuleRequest + 75, // 196: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListAnalysisRules:input_type -> google.cloud.contactcenterinsights.v1.ListAnalysisRulesRequest + 73, // 197: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateAnalysisRule:input_type -> google.cloud.contactcenterinsights.v1.UpdateAnalysisRuleRequest + 74, // 198: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteAnalysisRule:input_type -> google.cloud.contactcenterinsights.v1.DeleteAnalysisRuleRequest + 77, // 199: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetEncryptionSpec:input_type -> google.cloud.contactcenterinsights.v1.GetEncryptionSpecRequest + 78, // 200: google.cloud.contactcenterinsights.v1.ContactCenterInsights.InitializeEncryptionSpec:input_type -> google.cloud.contactcenterinsights.v1.InitializeEncryptionSpecRequest + 81, // 201: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateView:input_type -> google.cloud.contactcenterinsights.v1.CreateViewRequest + 82, // 202: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetView:input_type -> google.cloud.contactcenterinsights.v1.GetViewRequest + 83, // 203: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListViews:input_type -> google.cloud.contactcenterinsights.v1.ListViewsRequest + 85, // 204: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateView:input_type -> google.cloud.contactcenterinsights.v1.UpdateViewRequest + 86, // 205: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteView:input_type -> google.cloud.contactcenterinsights.v1.DeleteViewRequest + 88, // 206: google.cloud.contactcenterinsights.v1.ContactCenterInsights.QueryMetrics:input_type -> google.cloud.contactcenterinsights.v1.QueryMetricsRequest + 91, // 207: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateQaQuestion:input_type -> google.cloud.contactcenterinsights.v1.CreateQaQuestionRequest + 92, // 208: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetQaQuestion:input_type -> google.cloud.contactcenterinsights.v1.GetQaQuestionRequest + 95, // 209: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateQaQuestion:input_type -> google.cloud.contactcenterinsights.v1.UpdateQaQuestionRequest + 96, // 210: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteQaQuestion:input_type -> google.cloud.contactcenterinsights.v1.DeleteQaQuestionRequest + 93, // 211: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListQaQuestions:input_type -> google.cloud.contactcenterinsights.v1.ListQaQuestionsRequest + 97, // 212: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateQaScorecard:input_type -> google.cloud.contactcenterinsights.v1.CreateQaScorecardRequest + 98, // 213: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetQaScorecard:input_type -> google.cloud.contactcenterinsights.v1.GetQaScorecardRequest + 99, // 214: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateQaScorecard:input_type -> google.cloud.contactcenterinsights.v1.UpdateQaScorecardRequest + 100, // 215: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteQaScorecard:input_type -> google.cloud.contactcenterinsights.v1.DeleteQaScorecardRequest + 109, // 216: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListQaScorecards:input_type -> google.cloud.contactcenterinsights.v1.ListQaScorecardsRequest + 101, // 217: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateQaScorecardRevision:input_type -> google.cloud.contactcenterinsights.v1.CreateQaScorecardRevisionRequest + 102, // 218: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetQaScorecardRevision:input_type -> google.cloud.contactcenterinsights.v1.GetQaScorecardRevisionRequest + 103, // 219: google.cloud.contactcenterinsights.v1.ContactCenterInsights.TuneQaScorecardRevision:input_type -> google.cloud.contactcenterinsights.v1.TuneQaScorecardRevisionRequest + 106, // 220: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeployQaScorecardRevision:input_type -> google.cloud.contactcenterinsights.v1.DeployQaScorecardRevisionRequest + 107, // 221: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UndeployQaScorecardRevision:input_type -> google.cloud.contactcenterinsights.v1.UndeployQaScorecardRevisionRequest + 108, // 222: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteQaScorecardRevision:input_type -> google.cloud.contactcenterinsights.v1.DeleteQaScorecardRevisionRequest + 111, // 223: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListQaScorecardRevisions:input_type -> google.cloud.contactcenterinsights.v1.ListQaScorecardRevisionsRequest + 113, // 224: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateFeedbackLabel:input_type -> google.cloud.contactcenterinsights.v1.CreateFeedbackLabelRequest + 114, // 225: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListFeedbackLabels:input_type -> google.cloud.contactcenterinsights.v1.ListFeedbackLabelsRequest + 116, // 226: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetFeedbackLabel:input_type -> google.cloud.contactcenterinsights.v1.GetFeedbackLabelRequest + 117, // 227: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateFeedbackLabel:input_type -> google.cloud.contactcenterinsights.v1.UpdateFeedbackLabelRequest + 118, // 228: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteFeedbackLabel:input_type -> google.cloud.contactcenterinsights.v1.DeleteFeedbackLabelRequest + 119, // 229: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListAllFeedbackLabels:input_type -> google.cloud.contactcenterinsights.v1.ListAllFeedbackLabelsRequest + 121, // 230: google.cloud.contactcenterinsights.v1.ContactCenterInsights.BulkUploadFeedbackLabels:input_type -> google.cloud.contactcenterinsights.v1.BulkUploadFeedbackLabelsRequest + 124, // 231: google.cloud.contactcenterinsights.v1.ContactCenterInsights.BulkDownloadFeedbackLabels:input_type -> google.cloud.contactcenterinsights.v1.BulkDownloadFeedbackLabelsRequest + 159, // 232: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateConversation:output_type -> google.cloud.contactcenterinsights.v1.Conversation + 181, // 233: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UploadConversation:output_type -> google.longrunning.Operation + 159, // 234: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateConversation:output_type -> google.cloud.contactcenterinsights.v1.Conversation + 159, // 235: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetConversation:output_type -> google.cloud.contactcenterinsights.v1.Conversation + 15, // 236: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListConversations:output_type -> google.cloud.contactcenterinsights.v1.ListConversationsResponse + 182, // 237: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteConversation:output_type -> google.protobuf.Empty + 181, // 238: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateAnalysis:output_type -> google.longrunning.Operation + 164, // 239: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetAnalysis:output_type -> google.cloud.contactcenterinsights.v1.Analysis + 24, // 240: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListAnalyses:output_type -> google.cloud.contactcenterinsights.v1.ListAnalysesResponse + 182, // 241: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteAnalysis:output_type -> google.protobuf.Empty + 181, // 242: google.cloud.contactcenterinsights.v1.ContactCenterInsights.BulkAnalyzeConversations:output_type -> google.longrunning.Operation + 181, // 243: google.cloud.contactcenterinsights.v1.ContactCenterInsights.BulkDeleteConversations:output_type -> google.longrunning.Operation + 181, // 244: google.cloud.contactcenterinsights.v1.ContactCenterInsights.IngestConversations:output_type -> google.longrunning.Operation + 181, // 245: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ExportInsightsData:output_type -> google.longrunning.Operation + 181, // 246: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateIssueModel:output_type -> google.longrunning.Operation + 165, // 247: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateIssueModel:output_type -> google.cloud.contactcenterinsights.v1.IssueModel + 165, // 248: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetIssueModel:output_type -> google.cloud.contactcenterinsights.v1.IssueModel + 40, // 249: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListIssueModels:output_type -> google.cloud.contactcenterinsights.v1.ListIssueModelsResponse + 181, // 250: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteIssueModel:output_type -> google.longrunning.Operation + 181, // 251: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeployIssueModel:output_type -> google.longrunning.Operation + 181, // 252: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UndeployIssueModel:output_type -> google.longrunning.Operation + 181, // 253: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ExportIssueModel:output_type -> google.longrunning.Operation + 181, // 254: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ImportIssueModel:output_type -> google.longrunning.Operation + 166, // 255: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetIssue:output_type -> google.cloud.contactcenterinsights.v1.Issue + 58, // 256: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListIssues:output_type -> google.cloud.contactcenterinsights.v1.ListIssuesResponse + 166, // 257: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateIssue:output_type -> google.cloud.contactcenterinsights.v1.Issue + 182, // 258: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteIssue:output_type -> google.protobuf.Empty + 62, // 259: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CalculateIssueModelStats:output_type -> google.cloud.contactcenterinsights.v1.CalculateIssueModelStatsResponse + 168, // 260: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreatePhraseMatcher:output_type -> google.cloud.contactcenterinsights.v1.PhraseMatcher + 168, // 261: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetPhraseMatcher:output_type -> google.cloud.contactcenterinsights.v1.PhraseMatcher + 65, // 262: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListPhraseMatchers:output_type -> google.cloud.contactcenterinsights.v1.ListPhraseMatchersResponse + 182, // 263: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeletePhraseMatcher:output_type -> google.protobuf.Empty + 168, // 264: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdatePhraseMatcher:output_type -> google.cloud.contactcenterinsights.v1.PhraseMatcher + 9, // 265: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CalculateStats:output_type -> google.cloud.contactcenterinsights.v1.CalculateStatsResponse + 169, // 266: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetSettings:output_type -> google.cloud.contactcenterinsights.v1.Settings + 169, // 267: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateSettings:output_type -> google.cloud.contactcenterinsights.v1.Settings + 170, // 268: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateAnalysisRule:output_type -> google.cloud.contactcenterinsights.v1.AnalysisRule + 170, // 269: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetAnalysisRule:output_type -> google.cloud.contactcenterinsights.v1.AnalysisRule + 76, // 270: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListAnalysisRules:output_type -> google.cloud.contactcenterinsights.v1.ListAnalysisRulesResponse + 170, // 271: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateAnalysisRule:output_type -> google.cloud.contactcenterinsights.v1.AnalysisRule + 182, // 272: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteAnalysisRule:output_type -> google.protobuf.Empty + 171, // 273: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetEncryptionSpec:output_type -> google.cloud.contactcenterinsights.v1.EncryptionSpec + 181, // 274: google.cloud.contactcenterinsights.v1.ContactCenterInsights.InitializeEncryptionSpec:output_type -> google.longrunning.Operation + 172, // 275: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateView:output_type -> google.cloud.contactcenterinsights.v1.View + 172, // 276: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetView:output_type -> google.cloud.contactcenterinsights.v1.View + 84, // 277: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListViews:output_type -> google.cloud.contactcenterinsights.v1.ListViewsResponse + 172, // 278: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateView:output_type -> google.cloud.contactcenterinsights.v1.View + 182, // 279: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteView:output_type -> google.protobuf.Empty + 181, // 280: google.cloud.contactcenterinsights.v1.ContactCenterInsights.QueryMetrics:output_type -> google.longrunning.Operation + 173, // 281: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateQaQuestion:output_type -> google.cloud.contactcenterinsights.v1.QaQuestion + 173, // 282: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetQaQuestion:output_type -> google.cloud.contactcenterinsights.v1.QaQuestion + 173, // 283: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateQaQuestion:output_type -> google.cloud.contactcenterinsights.v1.QaQuestion + 182, // 284: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteQaQuestion:output_type -> google.protobuf.Empty + 94, // 285: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListQaQuestions:output_type -> google.cloud.contactcenterinsights.v1.ListQaQuestionsResponse + 174, // 286: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateQaScorecard:output_type -> google.cloud.contactcenterinsights.v1.QaScorecard + 174, // 287: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetQaScorecard:output_type -> google.cloud.contactcenterinsights.v1.QaScorecard + 174, // 288: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateQaScorecard:output_type -> google.cloud.contactcenterinsights.v1.QaScorecard + 182, // 289: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteQaScorecard:output_type -> google.protobuf.Empty + 110, // 290: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListQaScorecards:output_type -> google.cloud.contactcenterinsights.v1.ListQaScorecardsResponse + 175, // 291: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateQaScorecardRevision:output_type -> google.cloud.contactcenterinsights.v1.QaScorecardRevision + 175, // 292: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetQaScorecardRevision:output_type -> google.cloud.contactcenterinsights.v1.QaScorecardRevision + 181, // 293: google.cloud.contactcenterinsights.v1.ContactCenterInsights.TuneQaScorecardRevision:output_type -> google.longrunning.Operation + 175, // 294: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeployQaScorecardRevision:output_type -> google.cloud.contactcenterinsights.v1.QaScorecardRevision + 175, // 295: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UndeployQaScorecardRevision:output_type -> google.cloud.contactcenterinsights.v1.QaScorecardRevision + 182, // 296: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteQaScorecardRevision:output_type -> google.protobuf.Empty + 112, // 297: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListQaScorecardRevisions:output_type -> google.cloud.contactcenterinsights.v1.ListQaScorecardRevisionsResponse + 176, // 298: google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateFeedbackLabel:output_type -> google.cloud.contactcenterinsights.v1.FeedbackLabel + 115, // 299: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListFeedbackLabels:output_type -> google.cloud.contactcenterinsights.v1.ListFeedbackLabelsResponse + 176, // 300: google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetFeedbackLabel:output_type -> google.cloud.contactcenterinsights.v1.FeedbackLabel + 176, // 301: google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateFeedbackLabel:output_type -> google.cloud.contactcenterinsights.v1.FeedbackLabel + 182, // 302: google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteFeedbackLabel:output_type -> google.protobuf.Empty + 120, // 303: google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListAllFeedbackLabels:output_type -> google.cloud.contactcenterinsights.v1.ListAllFeedbackLabelsResponse + 181, // 304: google.cloud.contactcenterinsights.v1.ContactCenterInsights.BulkUploadFeedbackLabels:output_type -> google.longrunning.Operation + 181, // 305: google.cloud.contactcenterinsights.v1.ContactCenterInsights.BulkDownloadFeedbackLabels:output_type -> google.longrunning.Operation + 232, // [232:306] is the sub-list for method output_type + 158, // [158:232] is the sub-list for method input_type + 158, // [158:158] is the sub-list for extension type_name + 158, // [158:158] is the sub-list for extension extendee + 0, // [0:158] is the sub-list for field type_name } func init() { file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_init() } @@ -7427,8 +13566,644 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*CalculateStatsResponse); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*CalculateStatsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*CreateAnalysisOperationMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*CreateConversationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*UploadConversationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*UploadConversationMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*ListConversationsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[7].Exporter = func(v any, i int) any { + switch v := v.(*ListConversationsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[8].Exporter = func(v any, i int) any { + switch v := v.(*GetConversationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[9].Exporter = func(v any, i int) any { + switch v := v.(*UpdateConversationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[10].Exporter = func(v any, i int) any { + switch v := v.(*DeleteConversationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[11].Exporter = func(v any, i int) any { + switch v := v.(*IngestConversationsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[12].Exporter = func(v any, i int) any { + switch v := v.(*IngestConversationsMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[13].Exporter = func(v any, i int) any { + switch v := v.(*IngestConversationsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[14].Exporter = func(v any, i int) any { + switch v := v.(*CreateAnalysisRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[15].Exporter = func(v any, i int) any { + switch v := v.(*ListAnalysesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[16].Exporter = func(v any, i int) any { + switch v := v.(*ListAnalysesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[17].Exporter = func(v any, i int) any { + switch v := v.(*GetAnalysisRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[18].Exporter = func(v any, i int) any { + switch v := v.(*DeleteAnalysisRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[19].Exporter = func(v any, i int) any { + switch v := v.(*BulkAnalyzeConversationsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[20].Exporter = func(v any, i int) any { + switch v := v.(*BulkAnalyzeConversationsMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[21].Exporter = func(v any, i int) any { + switch v := v.(*BulkAnalyzeConversationsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[22].Exporter = func(v any, i int) any { + switch v := v.(*BulkDeleteConversationsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[23].Exporter = func(v any, i int) any { + switch v := v.(*BulkDeleteConversationsMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[24].Exporter = func(v any, i int) any { + switch v := v.(*BulkDeleteConversationsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[25].Exporter = func(v any, i int) any { + switch v := v.(*ExportInsightsDataRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[26].Exporter = func(v any, i int) any { + switch v := v.(*ExportInsightsDataMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[27].Exporter = func(v any, i int) any { + switch v := v.(*ExportInsightsDataResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[28].Exporter = func(v any, i int) any { + switch v := v.(*CreateIssueModelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[29].Exporter = func(v any, i int) any { + switch v := v.(*CreateIssueModelMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[30].Exporter = func(v any, i int) any { + switch v := v.(*UpdateIssueModelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[31].Exporter = func(v any, i int) any { + switch v := v.(*ListIssueModelsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[32].Exporter = func(v any, i int) any { + switch v := v.(*ListIssueModelsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[33].Exporter = func(v any, i int) any { + switch v := v.(*GetIssueModelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[34].Exporter = func(v any, i int) any { + switch v := v.(*DeleteIssueModelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[35].Exporter = func(v any, i int) any { + switch v := v.(*DeleteIssueModelMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[36].Exporter = func(v any, i int) any { + switch v := v.(*DeployIssueModelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[37].Exporter = func(v any, i int) any { + switch v := v.(*DeployIssueModelResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[38].Exporter = func(v any, i int) any { + switch v := v.(*DeployIssueModelMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[39].Exporter = func(v any, i int) any { + switch v := v.(*UndeployIssueModelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[40].Exporter = func(v any, i int) any { + switch v := v.(*UndeployIssueModelResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[41].Exporter = func(v any, i int) any { + switch v := v.(*UndeployIssueModelMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[42].Exporter = func(v any, i int) any { + switch v := v.(*ExportIssueModelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[43].Exporter = func(v any, i int) any { + switch v := v.(*ExportIssueModelResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[44].Exporter = func(v any, i int) any { + switch v := v.(*ExportIssueModelMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[45].Exporter = func(v any, i int) any { + switch v := v.(*ImportIssueModelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[46].Exporter = func(v any, i int) any { + switch v := v.(*ImportIssueModelResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[47].Exporter = func(v any, i int) any { + switch v := v.(*ImportIssueModelMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[48].Exporter = func(v any, i int) any { + switch v := v.(*GetIssueRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[49].Exporter = func(v any, i int) any { + switch v := v.(*ListIssuesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[50].Exporter = func(v any, i int) any { + switch v := v.(*ListIssuesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[51].Exporter = func(v any, i int) any { + switch v := v.(*UpdateIssueRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[52].Exporter = func(v any, i int) any { + switch v := v.(*DeleteIssueRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[53].Exporter = func(v any, i int) any { + switch v := v.(*CalculateIssueModelStatsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[54].Exporter = func(v any, i int) any { + switch v := v.(*CalculateIssueModelStatsResponse); i { case 0: return &v.state case 1: @@ -7439,8 +14214,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*CreateAnalysisOperationMetadata); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[55].Exporter = func(v any, i int) any { + switch v := v.(*CreatePhraseMatcherRequest); i { case 0: return &v.state case 1: @@ -7451,8 +14226,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*CreateConversationRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[56].Exporter = func(v any, i int) any { + switch v := v.(*ListPhraseMatchersRequest); i { case 0: return &v.state case 1: @@ -7463,8 +14238,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*UploadConversationRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[57].Exporter = func(v any, i int) any { + switch v := v.(*ListPhraseMatchersResponse); i { case 0: return &v.state case 1: @@ -7475,8 +14250,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*UploadConversationMetadata); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[58].Exporter = func(v any, i int) any { + switch v := v.(*GetPhraseMatcherRequest); i { case 0: return &v.state case 1: @@ -7487,8 +14262,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*ListConversationsRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[59].Exporter = func(v any, i int) any { + switch v := v.(*DeletePhraseMatcherRequest); i { case 0: return &v.state case 1: @@ -7499,8 +14274,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*ListConversationsResponse); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[60].Exporter = func(v any, i int) any { + switch v := v.(*UpdatePhraseMatcherRequest); i { case 0: return &v.state case 1: @@ -7511,8 +14286,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*GetConversationRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[61].Exporter = func(v any, i int) any { + switch v := v.(*GetSettingsRequest); i { case 0: return &v.state case 1: @@ -7523,8 +14298,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*UpdateConversationRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[62].Exporter = func(v any, i int) any { + switch v := v.(*UpdateSettingsRequest); i { case 0: return &v.state case 1: @@ -7535,8 +14310,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*DeleteConversationRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[63].Exporter = func(v any, i int) any { + switch v := v.(*CreateAnalysisRuleRequest); i { case 0: return &v.state case 1: @@ -7547,8 +14322,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*IngestConversationsRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[64].Exporter = func(v any, i int) any { + switch v := v.(*GetAnalysisRuleRequest); i { case 0: return &v.state case 1: @@ -7559,8 +14334,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*IngestConversationsMetadata); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[65].Exporter = func(v any, i int) any { + switch v := v.(*UpdateAnalysisRuleRequest); i { case 0: return &v.state case 1: @@ -7571,8 +14346,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*IngestConversationsResponse); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[66].Exporter = func(v any, i int) any { + switch v := v.(*DeleteAnalysisRuleRequest); i { case 0: return &v.state case 1: @@ -7583,8 +14358,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*CreateAnalysisRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[67].Exporter = func(v any, i int) any { + switch v := v.(*ListAnalysisRulesRequest); i { case 0: return &v.state case 1: @@ -7595,8 +14370,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*ListAnalysesRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[68].Exporter = func(v any, i int) any { + switch v := v.(*ListAnalysisRulesResponse); i { case 0: return &v.state case 1: @@ -7607,8 +14382,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*ListAnalysesResponse); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[69].Exporter = func(v any, i int) any { + switch v := v.(*GetEncryptionSpecRequest); i { case 0: return &v.state case 1: @@ -7619,8 +14394,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*GetAnalysisRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[70].Exporter = func(v any, i int) any { + switch v := v.(*InitializeEncryptionSpecRequest); i { case 0: return &v.state case 1: @@ -7631,8 +14406,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*DeleteAnalysisRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[71].Exporter = func(v any, i int) any { + switch v := v.(*InitializeEncryptionSpecResponse); i { case 0: return &v.state case 1: @@ -7643,8 +14418,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*BulkAnalyzeConversationsRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[72].Exporter = func(v any, i int) any { + switch v := v.(*InitializeEncryptionSpecMetadata); i { case 0: return &v.state case 1: @@ -7655,8 +14430,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*BulkAnalyzeConversationsMetadata); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[73].Exporter = func(v any, i int) any { + switch v := v.(*CreateViewRequest); i { case 0: return &v.state case 1: @@ -7667,8 +14442,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*BulkAnalyzeConversationsResponse); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[74].Exporter = func(v any, i int) any { + switch v := v.(*GetViewRequest); i { case 0: return &v.state case 1: @@ -7679,8 +14454,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*BulkDeleteConversationsRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[75].Exporter = func(v any, i int) any { + switch v := v.(*ListViewsRequest); i { case 0: return &v.state case 1: @@ -7691,8 +14466,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*BulkDeleteConversationsMetadata); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[76].Exporter = func(v any, i int) any { + switch v := v.(*ListViewsResponse); i { case 0: return &v.state case 1: @@ -7703,8 +14478,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*BulkDeleteConversationsResponse); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[77].Exporter = func(v any, i int) any { + switch v := v.(*UpdateViewRequest); i { case 0: return &v.state case 1: @@ -7715,8 +14490,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[25].Exporter = func(v any, i int) any { - switch v := v.(*ExportInsightsDataRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[78].Exporter = func(v any, i int) any { + switch v := v.(*DeleteViewRequest); i { case 0: return &v.state case 1: @@ -7727,8 +14502,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[26].Exporter = func(v any, i int) any { - switch v := v.(*ExportInsightsDataMetadata); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[79].Exporter = func(v any, i int) any { + switch v := v.(*Dimension); i { case 0: return &v.state case 1: @@ -7739,8 +14514,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[27].Exporter = func(v any, i int) any { - switch v := v.(*ExportInsightsDataResponse); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[80].Exporter = func(v any, i int) any { + switch v := v.(*QueryMetricsRequest); i { case 0: return &v.state case 1: @@ -7751,8 +14526,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[28].Exporter = func(v any, i int) any { - switch v := v.(*CreateIssueModelRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[81].Exporter = func(v any, i int) any { + switch v := v.(*QueryMetricsResponse); i { case 0: return &v.state case 1: @@ -7763,8 +14538,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[29].Exporter = func(v any, i int) any { - switch v := v.(*CreateIssueModelMetadata); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[82].Exporter = func(v any, i int) any { + switch v := v.(*QueryMetricsMetadata); i { case 0: return &v.state case 1: @@ -7775,8 +14550,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[30].Exporter = func(v any, i int) any { - switch v := v.(*UpdateIssueModelRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[83].Exporter = func(v any, i int) any { + switch v := v.(*CreateQaQuestionRequest); i { case 0: return &v.state case 1: @@ -7787,8 +14562,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[31].Exporter = func(v any, i int) any { - switch v := v.(*ListIssueModelsRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[84].Exporter = func(v any, i int) any { + switch v := v.(*GetQaQuestionRequest); i { case 0: return &v.state case 1: @@ -7799,8 +14574,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[32].Exporter = func(v any, i int) any { - switch v := v.(*ListIssueModelsResponse); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[85].Exporter = func(v any, i int) any { + switch v := v.(*ListQaQuestionsRequest); i { case 0: return &v.state case 1: @@ -7811,8 +14586,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[33].Exporter = func(v any, i int) any { - switch v := v.(*GetIssueModelRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[86].Exporter = func(v any, i int) any { + switch v := v.(*ListQaQuestionsResponse); i { case 0: return &v.state case 1: @@ -7823,8 +14598,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[34].Exporter = func(v any, i int) any { - switch v := v.(*DeleteIssueModelRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[87].Exporter = func(v any, i int) any { + switch v := v.(*UpdateQaQuestionRequest); i { case 0: return &v.state case 1: @@ -7835,8 +14610,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[35].Exporter = func(v any, i int) any { - switch v := v.(*DeleteIssueModelMetadata); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[88].Exporter = func(v any, i int) any { + switch v := v.(*DeleteQaQuestionRequest); i { case 0: return &v.state case 1: @@ -7847,8 +14622,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[36].Exporter = func(v any, i int) any { - switch v := v.(*DeployIssueModelRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[89].Exporter = func(v any, i int) any { + switch v := v.(*CreateQaScorecardRequest); i { case 0: return &v.state case 1: @@ -7859,8 +14634,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[37].Exporter = func(v any, i int) any { - switch v := v.(*DeployIssueModelResponse); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[90].Exporter = func(v any, i int) any { + switch v := v.(*GetQaScorecardRequest); i { case 0: return &v.state case 1: @@ -7871,8 +14646,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[38].Exporter = func(v any, i int) any { - switch v := v.(*DeployIssueModelMetadata); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[91].Exporter = func(v any, i int) any { + switch v := v.(*UpdateQaScorecardRequest); i { case 0: return &v.state case 1: @@ -7883,8 +14658,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[39].Exporter = func(v any, i int) any { - switch v := v.(*UndeployIssueModelRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[92].Exporter = func(v any, i int) any { + switch v := v.(*DeleteQaScorecardRequest); i { case 0: return &v.state case 1: @@ -7895,8 +14670,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[40].Exporter = func(v any, i int) any { - switch v := v.(*UndeployIssueModelResponse); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[93].Exporter = func(v any, i int) any { + switch v := v.(*CreateQaScorecardRevisionRequest); i { case 0: return &v.state case 1: @@ -7907,8 +14682,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[41].Exporter = func(v any, i int) any { - switch v := v.(*UndeployIssueModelMetadata); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[94].Exporter = func(v any, i int) any { + switch v := v.(*GetQaScorecardRevisionRequest); i { case 0: return &v.state case 1: @@ -7919,8 +14694,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[42].Exporter = func(v any, i int) any { - switch v := v.(*ExportIssueModelRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[95].Exporter = func(v any, i int) any { + switch v := v.(*TuneQaScorecardRevisionRequest); i { case 0: return &v.state case 1: @@ -7931,8 +14706,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[43].Exporter = func(v any, i int) any { - switch v := v.(*ExportIssueModelResponse); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[96].Exporter = func(v any, i int) any { + switch v := v.(*TuneQaScorecardRevisionResponse); i { case 0: return &v.state case 1: @@ -7943,8 +14718,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[44].Exporter = func(v any, i int) any { - switch v := v.(*ExportIssueModelMetadata); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[97].Exporter = func(v any, i int) any { + switch v := v.(*TuneQaScorecardRevisionMetadata); i { case 0: return &v.state case 1: @@ -7955,8 +14730,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[45].Exporter = func(v any, i int) any { - switch v := v.(*ImportIssueModelRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[98].Exporter = func(v any, i int) any { + switch v := v.(*DeployQaScorecardRevisionRequest); i { case 0: return &v.state case 1: @@ -7967,8 +14742,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[46].Exporter = func(v any, i int) any { - switch v := v.(*ImportIssueModelResponse); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[99].Exporter = func(v any, i int) any { + switch v := v.(*UndeployQaScorecardRevisionRequest); i { case 0: return &v.state case 1: @@ -7979,8 +14754,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[47].Exporter = func(v any, i int) any { - switch v := v.(*ImportIssueModelMetadata); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[100].Exporter = func(v any, i int) any { + switch v := v.(*DeleteQaScorecardRevisionRequest); i { case 0: return &v.state case 1: @@ -7991,8 +14766,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[48].Exporter = func(v any, i int) any { - switch v := v.(*GetIssueRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[101].Exporter = func(v any, i int) any { + switch v := v.(*ListQaScorecardsRequest); i { case 0: return &v.state case 1: @@ -8003,8 +14778,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[49].Exporter = func(v any, i int) any { - switch v := v.(*ListIssuesRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[102].Exporter = func(v any, i int) any { + switch v := v.(*ListQaScorecardsResponse); i { case 0: return &v.state case 1: @@ -8015,8 +14790,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[50].Exporter = func(v any, i int) any { - switch v := v.(*ListIssuesResponse); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[103].Exporter = func(v any, i int) any { + switch v := v.(*ListQaScorecardRevisionsRequest); i { case 0: return &v.state case 1: @@ -8027,8 +14802,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[51].Exporter = func(v any, i int) any { - switch v := v.(*UpdateIssueRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[104].Exporter = func(v any, i int) any { + switch v := v.(*ListQaScorecardRevisionsResponse); i { case 0: return &v.state case 1: @@ -8039,8 +14814,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[52].Exporter = func(v any, i int) any { - switch v := v.(*DeleteIssueRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[105].Exporter = func(v any, i int) any { + switch v := v.(*CreateFeedbackLabelRequest); i { case 0: return &v.state case 1: @@ -8051,8 +14826,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[53].Exporter = func(v any, i int) any { - switch v := v.(*CalculateIssueModelStatsRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[106].Exporter = func(v any, i int) any { + switch v := v.(*ListFeedbackLabelsRequest); i { case 0: return &v.state case 1: @@ -8063,8 +14838,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[54].Exporter = func(v any, i int) any { - switch v := v.(*CalculateIssueModelStatsResponse); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[107].Exporter = func(v any, i int) any { + switch v := v.(*ListFeedbackLabelsResponse); i { case 0: return &v.state case 1: @@ -8075,8 +14850,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[55].Exporter = func(v any, i int) any { - switch v := v.(*CreatePhraseMatcherRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[108].Exporter = func(v any, i int) any { + switch v := v.(*GetFeedbackLabelRequest); i { case 0: return &v.state case 1: @@ -8087,8 +14862,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[56].Exporter = func(v any, i int) any { - switch v := v.(*ListPhraseMatchersRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[109].Exporter = func(v any, i int) any { + switch v := v.(*UpdateFeedbackLabelRequest); i { case 0: return &v.state case 1: @@ -8099,8 +14874,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[57].Exporter = func(v any, i int) any { - switch v := v.(*ListPhraseMatchersResponse); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[110].Exporter = func(v any, i int) any { + switch v := v.(*DeleteFeedbackLabelRequest); i { case 0: return &v.state case 1: @@ -8111,8 +14886,116 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[58].Exporter = func(v any, i int) any { - switch v := v.(*GetPhraseMatcherRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[111].Exporter = func(v any, i int) any { + switch v := v.(*ListAllFeedbackLabelsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[112].Exporter = func(v any, i int) any { + switch v := v.(*ListAllFeedbackLabelsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[113].Exporter = func(v any, i int) any { + switch v := v.(*BulkUploadFeedbackLabelsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[114].Exporter = func(v any, i int) any { + switch v := v.(*BulkUploadFeedbackLabelsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[115].Exporter = func(v any, i int) any { + switch v := v.(*BulkUploadFeedbackLabelsMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[116].Exporter = func(v any, i int) any { + switch v := v.(*BulkDownloadFeedbackLabelsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[117].Exporter = func(v any, i int) any { + switch v := v.(*BulkDownloadFeedbackLabelsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[118].Exporter = func(v any, i int) any { + switch v := v.(*BulkDownloadFeedbackLabelsMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[119].Exporter = func(v any, i int) any { + switch v := v.(*CalculateStatsResponse_TimeSeries); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[124].Exporter = func(v any, i int) any { + switch v := v.(*CalculateStatsResponse_TimeSeries_Interval); i { case 0: return &v.state case 1: @@ -8123,8 +15006,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[59].Exporter = func(v any, i int) any { - switch v := v.(*DeletePhraseMatcherRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[125].Exporter = func(v any, i int) any { + switch v := v.(*IngestConversationsRequest_GcsSource); i { case 0: return &v.state case 1: @@ -8135,8 +15018,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[60].Exporter = func(v any, i int) any { - switch v := v.(*UpdatePhraseMatcherRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[126].Exporter = func(v any, i int) any { + switch v := v.(*IngestConversationsRequest_TranscriptObjectConfig); i { case 0: return &v.state case 1: @@ -8147,8 +15030,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[61].Exporter = func(v any, i int) any { - switch v := v.(*GetSettingsRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[127].Exporter = func(v any, i int) any { + switch v := v.(*IngestConversationsRequest_ConversationConfig); i { case 0: return &v.state case 1: @@ -8159,8 +15042,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[62].Exporter = func(v any, i int) any { - switch v := v.(*UpdateSettingsRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[128].Exporter = func(v any, i int) any { + switch v := v.(*IngestConversationsMetadata_IngestConversationsStats); i { case 0: return &v.state case 1: @@ -8171,8 +15054,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[63].Exporter = func(v any, i int) any { - switch v := v.(*GetEncryptionSpecRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[129].Exporter = func(v any, i int) any { + switch v := v.(*ExportInsightsDataRequest_BigQueryDestination); i { case 0: return &v.state case 1: @@ -8183,8 +15066,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[64].Exporter = func(v any, i int) any { - switch v := v.(*InitializeEncryptionSpecRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[130].Exporter = func(v any, i int) any { + switch v := v.(*ExportIssueModelRequest_GcsDestination); i { case 0: return &v.state case 1: @@ -8195,8 +15078,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[65].Exporter = func(v any, i int) any { - switch v := v.(*InitializeEncryptionSpecResponse); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[131].Exporter = func(v any, i int) any { + switch v := v.(*ImportIssueModelRequest_GcsSource); i { case 0: return &v.state case 1: @@ -8207,8 +15090,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[66].Exporter = func(v any, i int) any { - switch v := v.(*InitializeEncryptionSpecMetadata); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[132].Exporter = func(v any, i int) any { + switch v := v.(*Dimension_IssueDimensionMetadata); i { case 0: return &v.state case 1: @@ -8219,8 +15102,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[67].Exporter = func(v any, i int) any { - switch v := v.(*CreateViewRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[133].Exporter = func(v any, i int) any { + switch v := v.(*Dimension_AgentDimensionMetadata); i { case 0: return &v.state case 1: @@ -8231,8 +15114,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[68].Exporter = func(v any, i int) any { - switch v := v.(*GetViewRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[134].Exporter = func(v any, i int) any { + switch v := v.(*Dimension_QaQuestionDimensionMetadata); i { case 0: return &v.state case 1: @@ -8243,8 +15126,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[69].Exporter = func(v any, i int) any { - switch v := v.(*ListViewsRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[135].Exporter = func(v any, i int) any { + switch v := v.(*Dimension_QaQuestionAnswerDimensionMetadata); i { case 0: return &v.state case 1: @@ -8255,8 +15138,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[70].Exporter = func(v any, i int) any { - switch v := v.(*ListViewsResponse); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[136].Exporter = func(v any, i int) any { + switch v := v.(*QueryMetricsResponse_Slice); i { case 0: return &v.state case 1: @@ -8267,8 +15150,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[71].Exporter = func(v any, i int) any { - switch v := v.(*UpdateViewRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[137].Exporter = func(v any, i int) any { + switch v := v.(*QueryMetricsResponse_Slice_DataPoint); i { case 0: return &v.state case 1: @@ -8279,8 +15162,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[72].Exporter = func(v any, i int) any { - switch v := v.(*DeleteViewRequest); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[138].Exporter = func(v any, i int) any { + switch v := v.(*QueryMetricsResponse_Slice_TimeSeries); i { case 0: return &v.state case 1: @@ -8291,8 +15174,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[73].Exporter = func(v any, i int) any { - switch v := v.(*CalculateStatsResponse_TimeSeries); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[139].Exporter = func(v any, i int) any { + switch v := v.(*QueryMetricsResponse_Slice_DataPoint_ConversationMeasure); i { case 0: return &v.state case 1: @@ -8303,8 +15186,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[78].Exporter = func(v any, i int) any { - switch v := v.(*CalculateStatsResponse_TimeSeries_Interval); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[140].Exporter = func(v any, i int) any { + switch v := v.(*QueryMetricsResponse_Slice_DataPoint_ConversationMeasure_QaTagScore); i { case 0: return &v.state case 1: @@ -8315,8 +15198,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[79].Exporter = func(v any, i int) any { - switch v := v.(*IngestConversationsRequest_GcsSource); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[141].Exporter = func(v any, i int) any { + switch v := v.(*TuneQaScorecardRevisionMetadata_QaQuestionDatasetValidationResult); i { case 0: return &v.state case 1: @@ -8327,8 +15210,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[80].Exporter = func(v any, i int) any { - switch v := v.(*IngestConversationsRequest_TranscriptObjectConfig); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[142].Exporter = func(v any, i int) any { + switch v := v.(*TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics); i { case 0: return &v.state case 1: @@ -8339,8 +15222,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[81].Exporter = func(v any, i int) any { - switch v := v.(*IngestConversationsRequest_ConversationConfig); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[143].Exporter = func(v any, i int) any { + switch v := v.(*TuneQaScorecardRevisionMetadata_QaQuestionDatasetTuningMetrics_Metrics); i { case 0: return &v.state case 1: @@ -8351,8 +15234,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[82].Exporter = func(v any, i int) any { - switch v := v.(*IngestConversationsMetadata_IngestConversationsStats); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[144].Exporter = func(v any, i int) any { + switch v := v.(*BulkUploadFeedbackLabelsRequest_GcsSource); i { case 0: return &v.state case 1: @@ -8363,8 +15246,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[83].Exporter = func(v any, i int) any { - switch v := v.(*ExportInsightsDataRequest_BigQueryDestination); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[145].Exporter = func(v any, i int) any { + switch v := v.(*BulkUploadFeedbackLabelsMetadata_UploadStats); i { case 0: return &v.state case 1: @@ -8375,8 +15258,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[84].Exporter = func(v any, i int) any { - switch v := v.(*ExportIssueModelRequest_GcsDestination); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[146].Exporter = func(v any, i int) any { + switch v := v.(*BulkDownloadFeedbackLabelsRequest_GcsDestination); i { case 0: return &v.state case 1: @@ -8387,8 +15270,8 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in return nil } } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[85].Exporter = func(v any, i int) any { - switch v := v.(*ImportIssueModelRequest_GcsSource); i { + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[147].Exporter = func(v any, i int) any { + switch v := v.(*BulkDownloadFeedbackLabelsMetadata_DownloadStats); i { case 0: return &v.state case 1: @@ -8413,14 +15296,31 @@ func file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_in file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[45].OneofWrappers = []any{ (*ImportIssueModelRequest_GcsSource_)(nil), } - file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[79].OneofWrappers = []any{} + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[79].OneofWrappers = []any{ + (*Dimension_IssueDimensionMetadata_)(nil), + (*Dimension_AgentDimensionMetadata_)(nil), + (*Dimension_QaQuestionDimensionMetadata_)(nil), + (*Dimension_QaQuestionAnswerDimensionMetadata_)(nil), + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[81].OneofWrappers = []any{} + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[113].OneofWrappers = []any{ + (*BulkUploadFeedbackLabelsRequest_GcsSource_)(nil), + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[116].OneofWrappers = []any{ + (*BulkDownloadFeedbackLabelsRequest_GcsDestination_)(nil), + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[125].OneofWrappers = []any{} + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[137].OneofWrappers = []any{ + (*QueryMetricsResponse_Slice_DataPoint_ConversationMeasure_)(nil), + } + file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_msgTypes[139].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_contactcenterinsights_v1_contact_center_insights_proto_rawDesc, - NumEnums: 3, - NumMessages: 86, + NumEnums: 8, + NumMessages: 148, NumExtensions: 0, NumServices: 1, }, @@ -8527,11 +15427,21 @@ type ContactCenterInsightsClient interface { GetSettings(ctx context.Context, in *GetSettingsRequest, opts ...grpc.CallOption) (*Settings, error) // Updates project-level settings. UpdateSettings(ctx context.Context, in *UpdateSettingsRequest, opts ...grpc.CallOption) (*Settings, error) + // Creates a analysis rule. + CreateAnalysisRule(ctx context.Context, in *CreateAnalysisRuleRequest, opts ...grpc.CallOption) (*AnalysisRule, error) + // Get a analysis rule. + GetAnalysisRule(ctx context.Context, in *GetAnalysisRuleRequest, opts ...grpc.CallOption) (*AnalysisRule, error) + // Lists analysis rules. + ListAnalysisRules(ctx context.Context, in *ListAnalysisRulesRequest, opts ...grpc.CallOption) (*ListAnalysisRulesResponse, error) + // Updates a analysis rule. + UpdateAnalysisRule(ctx context.Context, in *UpdateAnalysisRuleRequest, opts ...grpc.CallOption) (*AnalysisRule, error) + // Deletes a analysis rule. + DeleteAnalysisRule(ctx context.Context, in *DeleteAnalysisRuleRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) // Gets location-level encryption key specification. GetEncryptionSpec(ctx context.Context, in *GetEncryptionSpecRequest, opts ...grpc.CallOption) (*EncryptionSpec, error) - // Initializes a location-level encryption key specification. An error will - // be thrown if the location has resources already created before the - // initialization. Once the encryption specification is initialized at a + // Initializes a location-level encryption key specification. An error will + // result if the location has resources already created before the + // initialization. After the encryption specification is initialized at a // location, it is immutable and all newly created resources under the // location will be encrypted with the existing specification. InitializeEncryptionSpec(ctx context.Context, in *InitializeEncryptionSpecRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) @@ -8545,6 +15455,58 @@ type ContactCenterInsightsClient interface { UpdateView(ctx context.Context, in *UpdateViewRequest, opts ...grpc.CallOption) (*View, error) // Deletes a view. DeleteView(ctx context.Context, in *DeleteViewRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Query metrics. + QueryMetrics(ctx context.Context, in *QueryMetricsRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) + // Create a QaQuestion. + CreateQaQuestion(ctx context.Context, in *CreateQaQuestionRequest, opts ...grpc.CallOption) (*QaQuestion, error) + // Gets a QaQuestion. + GetQaQuestion(ctx context.Context, in *GetQaQuestionRequest, opts ...grpc.CallOption) (*QaQuestion, error) + // Updates a QaQuestion. + UpdateQaQuestion(ctx context.Context, in *UpdateQaQuestionRequest, opts ...grpc.CallOption) (*QaQuestion, error) + // Deletes a QaQuestion. + DeleteQaQuestion(ctx context.Context, in *DeleteQaQuestionRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Lists QaQuestions. + ListQaQuestions(ctx context.Context, in *ListQaQuestionsRequest, opts ...grpc.CallOption) (*ListQaQuestionsResponse, error) + // Create a QaScorecard. + CreateQaScorecard(ctx context.Context, in *CreateQaScorecardRequest, opts ...grpc.CallOption) (*QaScorecard, error) + // Gets a QaScorecard. + GetQaScorecard(ctx context.Context, in *GetQaScorecardRequest, opts ...grpc.CallOption) (*QaScorecard, error) + // Updates a QaScorecard. + UpdateQaScorecard(ctx context.Context, in *UpdateQaScorecardRequest, opts ...grpc.CallOption) (*QaScorecard, error) + // Deletes a QaScorecard. + DeleteQaScorecard(ctx context.Context, in *DeleteQaScorecardRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Lists QaScorecards. + ListQaScorecards(ctx context.Context, in *ListQaScorecardsRequest, opts ...grpc.CallOption) (*ListQaScorecardsResponse, error) + // Creates a QaScorecardRevision. + CreateQaScorecardRevision(ctx context.Context, in *CreateQaScorecardRevisionRequest, opts ...grpc.CallOption) (*QaScorecardRevision, error) + // Gets a QaScorecardRevision. + GetQaScorecardRevision(ctx context.Context, in *GetQaScorecardRevisionRequest, opts ...grpc.CallOption) (*QaScorecardRevision, error) + // Fine tune one or more QaModels. + TuneQaScorecardRevision(ctx context.Context, in *TuneQaScorecardRevisionRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) + // Deploy a QaScorecardRevision. + DeployQaScorecardRevision(ctx context.Context, in *DeployQaScorecardRevisionRequest, opts ...grpc.CallOption) (*QaScorecardRevision, error) + // Undeploy a QaScorecardRevision. + UndeployQaScorecardRevision(ctx context.Context, in *UndeployQaScorecardRevisionRequest, opts ...grpc.CallOption) (*QaScorecardRevision, error) + // Deletes a QaScorecardRevision. + DeleteQaScorecardRevision(ctx context.Context, in *DeleteQaScorecardRevisionRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // Lists all revisions under the parent QaScorecard. + ListQaScorecardRevisions(ctx context.Context, in *ListQaScorecardRevisionsRequest, opts ...grpc.CallOption) (*ListQaScorecardRevisionsResponse, error) + // Create feedback label. + CreateFeedbackLabel(ctx context.Context, in *CreateFeedbackLabelRequest, opts ...grpc.CallOption) (*FeedbackLabel, error) + // List feedback labels. + ListFeedbackLabels(ctx context.Context, in *ListFeedbackLabelsRequest, opts ...grpc.CallOption) (*ListFeedbackLabelsResponse, error) + // Get feedback label. + GetFeedbackLabel(ctx context.Context, in *GetFeedbackLabelRequest, opts ...grpc.CallOption) (*FeedbackLabel, error) + // Update feedback label. + UpdateFeedbackLabel(ctx context.Context, in *UpdateFeedbackLabelRequest, opts ...grpc.CallOption) (*FeedbackLabel, error) + // Delete feedback label. + DeleteFeedbackLabel(ctx context.Context, in *DeleteFeedbackLabelRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + // List all feedback labels by project number. + ListAllFeedbackLabels(ctx context.Context, in *ListAllFeedbackLabelsRequest, opts ...grpc.CallOption) (*ListAllFeedbackLabelsResponse, error) + // Upload feedback labels in bulk. + BulkUploadFeedbackLabels(ctx context.Context, in *BulkUploadFeedbackLabelsRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) + // Download feedback labels in bulk. + BulkDownloadFeedbackLabels(ctx context.Context, in *BulkDownloadFeedbackLabelsRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) } type contactCenterInsightsClient struct { @@ -8879,6 +15841,51 @@ func (c *contactCenterInsightsClient) UpdateSettings(ctx context.Context, in *Up return out, nil } +func (c *contactCenterInsightsClient) CreateAnalysisRule(ctx context.Context, in *CreateAnalysisRuleRequest, opts ...grpc.CallOption) (*AnalysisRule, error) { + out := new(AnalysisRule) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CreateAnalysisRule", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) GetAnalysisRule(ctx context.Context, in *GetAnalysisRuleRequest, opts ...grpc.CallOption) (*AnalysisRule, error) { + out := new(AnalysisRule) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetAnalysisRule", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) ListAnalysisRules(ctx context.Context, in *ListAnalysisRulesRequest, opts ...grpc.CallOption) (*ListAnalysisRulesResponse, error) { + out := new(ListAnalysisRulesResponse) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListAnalysisRules", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) UpdateAnalysisRule(ctx context.Context, in *UpdateAnalysisRuleRequest, opts ...grpc.CallOption) (*AnalysisRule, error) { + out := new(AnalysisRule) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdateAnalysisRule", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) DeleteAnalysisRule(ctx context.Context, in *DeleteAnalysisRuleRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteAnalysisRule", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *contactCenterInsightsClient) GetEncryptionSpec(ctx context.Context, in *GetEncryptionSpecRequest, opts ...grpc.CallOption) (*EncryptionSpec, error) { out := new(EncryptionSpec) err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetEncryptionSpec", in, out, opts...) @@ -8924,18 +15931,252 @@ func (c *contactCenterInsightsClient) ListViews(ctx context.Context, in *ListVie return out, nil } -func (c *contactCenterInsightsClient) UpdateView(ctx context.Context, in *UpdateViewRequest, opts ...grpc.CallOption) (*View, error) { - out := new(View) - err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdateView", in, out, opts...) +func (c *contactCenterInsightsClient) UpdateView(ctx context.Context, in *UpdateViewRequest, opts ...grpc.CallOption) (*View, error) { + out := new(View) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdateView", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) DeleteView(ctx context.Context, in *DeleteViewRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteView", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) QueryMetrics(ctx context.Context, in *QueryMetricsRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/QueryMetrics", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) CreateQaQuestion(ctx context.Context, in *CreateQaQuestionRequest, opts ...grpc.CallOption) (*QaQuestion, error) { + out := new(QaQuestion) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CreateQaQuestion", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) GetQaQuestion(ctx context.Context, in *GetQaQuestionRequest, opts ...grpc.CallOption) (*QaQuestion, error) { + out := new(QaQuestion) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetQaQuestion", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) UpdateQaQuestion(ctx context.Context, in *UpdateQaQuestionRequest, opts ...grpc.CallOption) (*QaQuestion, error) { + out := new(QaQuestion) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdateQaQuestion", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) DeleteQaQuestion(ctx context.Context, in *DeleteQaQuestionRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteQaQuestion", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) ListQaQuestions(ctx context.Context, in *ListQaQuestionsRequest, opts ...grpc.CallOption) (*ListQaQuestionsResponse, error) { + out := new(ListQaQuestionsResponse) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListQaQuestions", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) CreateQaScorecard(ctx context.Context, in *CreateQaScorecardRequest, opts ...grpc.CallOption) (*QaScorecard, error) { + out := new(QaScorecard) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CreateQaScorecard", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) GetQaScorecard(ctx context.Context, in *GetQaScorecardRequest, opts ...grpc.CallOption) (*QaScorecard, error) { + out := new(QaScorecard) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetQaScorecard", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) UpdateQaScorecard(ctx context.Context, in *UpdateQaScorecardRequest, opts ...grpc.CallOption) (*QaScorecard, error) { + out := new(QaScorecard) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdateQaScorecard", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) DeleteQaScorecard(ctx context.Context, in *DeleteQaScorecardRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteQaScorecard", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) ListQaScorecards(ctx context.Context, in *ListQaScorecardsRequest, opts ...grpc.CallOption) (*ListQaScorecardsResponse, error) { + out := new(ListQaScorecardsResponse) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListQaScorecards", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) CreateQaScorecardRevision(ctx context.Context, in *CreateQaScorecardRevisionRequest, opts ...grpc.CallOption) (*QaScorecardRevision, error) { + out := new(QaScorecardRevision) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CreateQaScorecardRevision", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) GetQaScorecardRevision(ctx context.Context, in *GetQaScorecardRevisionRequest, opts ...grpc.CallOption) (*QaScorecardRevision, error) { + out := new(QaScorecardRevision) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetQaScorecardRevision", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) TuneQaScorecardRevision(ctx context.Context, in *TuneQaScorecardRevisionRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/TuneQaScorecardRevision", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) DeployQaScorecardRevision(ctx context.Context, in *DeployQaScorecardRevisionRequest, opts ...grpc.CallOption) (*QaScorecardRevision, error) { + out := new(QaScorecardRevision) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeployQaScorecardRevision", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) UndeployQaScorecardRevision(ctx context.Context, in *UndeployQaScorecardRevisionRequest, opts ...grpc.CallOption) (*QaScorecardRevision, error) { + out := new(QaScorecardRevision) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UndeployQaScorecardRevision", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) DeleteQaScorecardRevision(ctx context.Context, in *DeleteQaScorecardRevisionRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteQaScorecardRevision", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) ListQaScorecardRevisions(ctx context.Context, in *ListQaScorecardRevisionsRequest, opts ...grpc.CallOption) (*ListQaScorecardRevisionsResponse, error) { + out := new(ListQaScorecardRevisionsResponse) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListQaScorecardRevisions", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) CreateFeedbackLabel(ctx context.Context, in *CreateFeedbackLabelRequest, opts ...grpc.CallOption) (*FeedbackLabel, error) { + out := new(FeedbackLabel) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CreateFeedbackLabel", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) ListFeedbackLabels(ctx context.Context, in *ListFeedbackLabelsRequest, opts ...grpc.CallOption) (*ListFeedbackLabelsResponse, error) { + out := new(ListFeedbackLabelsResponse) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListFeedbackLabels", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) GetFeedbackLabel(ctx context.Context, in *GetFeedbackLabelRequest, opts ...grpc.CallOption) (*FeedbackLabel, error) { + out := new(FeedbackLabel) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetFeedbackLabel", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) UpdateFeedbackLabel(ctx context.Context, in *UpdateFeedbackLabelRequest, opts ...grpc.CallOption) (*FeedbackLabel, error) { + out := new(FeedbackLabel) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdateFeedbackLabel", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) DeleteFeedbackLabel(ctx context.Context, in *DeleteFeedbackLabelRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteFeedbackLabel", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) ListAllFeedbackLabels(ctx context.Context, in *ListAllFeedbackLabelsRequest, opts ...grpc.CallOption) (*ListAllFeedbackLabelsResponse, error) { + out := new(ListAllFeedbackLabelsResponse) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListAllFeedbackLabels", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *contactCenterInsightsClient) BulkUploadFeedbackLabels(ctx context.Context, in *BulkUploadFeedbackLabelsRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/BulkUploadFeedbackLabels", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *contactCenterInsightsClient) DeleteView(ctx context.Context, in *DeleteViewRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { - out := new(emptypb.Empty) - err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteView", in, out, opts...) +func (c *contactCenterInsightsClient) BulkDownloadFeedbackLabels(ctx context.Context, in *BulkDownloadFeedbackLabelsRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/BulkDownloadFeedbackLabels", in, out, opts...) if err != nil { return nil, err } @@ -9024,11 +16265,21 @@ type ContactCenterInsightsServer interface { GetSettings(context.Context, *GetSettingsRequest) (*Settings, error) // Updates project-level settings. UpdateSettings(context.Context, *UpdateSettingsRequest) (*Settings, error) + // Creates a analysis rule. + CreateAnalysisRule(context.Context, *CreateAnalysisRuleRequest) (*AnalysisRule, error) + // Get a analysis rule. + GetAnalysisRule(context.Context, *GetAnalysisRuleRequest) (*AnalysisRule, error) + // Lists analysis rules. + ListAnalysisRules(context.Context, *ListAnalysisRulesRequest) (*ListAnalysisRulesResponse, error) + // Updates a analysis rule. + UpdateAnalysisRule(context.Context, *UpdateAnalysisRuleRequest) (*AnalysisRule, error) + // Deletes a analysis rule. + DeleteAnalysisRule(context.Context, *DeleteAnalysisRuleRequest) (*emptypb.Empty, error) // Gets location-level encryption key specification. GetEncryptionSpec(context.Context, *GetEncryptionSpecRequest) (*EncryptionSpec, error) - // Initializes a location-level encryption key specification. An error will - // be thrown if the location has resources already created before the - // initialization. Once the encryption specification is initialized at a + // Initializes a location-level encryption key specification. An error will + // result if the location has resources already created before the + // initialization. After the encryption specification is initialized at a // location, it is immutable and all newly created resources under the // location will be encrypted with the existing specification. InitializeEncryptionSpec(context.Context, *InitializeEncryptionSpecRequest) (*longrunningpb.Operation, error) @@ -9042,6 +16293,58 @@ type ContactCenterInsightsServer interface { UpdateView(context.Context, *UpdateViewRequest) (*View, error) // Deletes a view. DeleteView(context.Context, *DeleteViewRequest) (*emptypb.Empty, error) + // Query metrics. + QueryMetrics(context.Context, *QueryMetricsRequest) (*longrunningpb.Operation, error) + // Create a QaQuestion. + CreateQaQuestion(context.Context, *CreateQaQuestionRequest) (*QaQuestion, error) + // Gets a QaQuestion. + GetQaQuestion(context.Context, *GetQaQuestionRequest) (*QaQuestion, error) + // Updates a QaQuestion. + UpdateQaQuestion(context.Context, *UpdateQaQuestionRequest) (*QaQuestion, error) + // Deletes a QaQuestion. + DeleteQaQuestion(context.Context, *DeleteQaQuestionRequest) (*emptypb.Empty, error) + // Lists QaQuestions. + ListQaQuestions(context.Context, *ListQaQuestionsRequest) (*ListQaQuestionsResponse, error) + // Create a QaScorecard. + CreateQaScorecard(context.Context, *CreateQaScorecardRequest) (*QaScorecard, error) + // Gets a QaScorecard. + GetQaScorecard(context.Context, *GetQaScorecardRequest) (*QaScorecard, error) + // Updates a QaScorecard. + UpdateQaScorecard(context.Context, *UpdateQaScorecardRequest) (*QaScorecard, error) + // Deletes a QaScorecard. + DeleteQaScorecard(context.Context, *DeleteQaScorecardRequest) (*emptypb.Empty, error) + // Lists QaScorecards. + ListQaScorecards(context.Context, *ListQaScorecardsRequest) (*ListQaScorecardsResponse, error) + // Creates a QaScorecardRevision. + CreateQaScorecardRevision(context.Context, *CreateQaScorecardRevisionRequest) (*QaScorecardRevision, error) + // Gets a QaScorecardRevision. + GetQaScorecardRevision(context.Context, *GetQaScorecardRevisionRequest) (*QaScorecardRevision, error) + // Fine tune one or more QaModels. + TuneQaScorecardRevision(context.Context, *TuneQaScorecardRevisionRequest) (*longrunningpb.Operation, error) + // Deploy a QaScorecardRevision. + DeployQaScorecardRevision(context.Context, *DeployQaScorecardRevisionRequest) (*QaScorecardRevision, error) + // Undeploy a QaScorecardRevision. + UndeployQaScorecardRevision(context.Context, *UndeployQaScorecardRevisionRequest) (*QaScorecardRevision, error) + // Deletes a QaScorecardRevision. + DeleteQaScorecardRevision(context.Context, *DeleteQaScorecardRevisionRequest) (*emptypb.Empty, error) + // Lists all revisions under the parent QaScorecard. + ListQaScorecardRevisions(context.Context, *ListQaScorecardRevisionsRequest) (*ListQaScorecardRevisionsResponse, error) + // Create feedback label. + CreateFeedbackLabel(context.Context, *CreateFeedbackLabelRequest) (*FeedbackLabel, error) + // List feedback labels. + ListFeedbackLabels(context.Context, *ListFeedbackLabelsRequest) (*ListFeedbackLabelsResponse, error) + // Get feedback label. + GetFeedbackLabel(context.Context, *GetFeedbackLabelRequest) (*FeedbackLabel, error) + // Update feedback label. + UpdateFeedbackLabel(context.Context, *UpdateFeedbackLabelRequest) (*FeedbackLabel, error) + // Delete feedback label. + DeleteFeedbackLabel(context.Context, *DeleteFeedbackLabelRequest) (*emptypb.Empty, error) + // List all feedback labels by project number. + ListAllFeedbackLabels(context.Context, *ListAllFeedbackLabelsRequest) (*ListAllFeedbackLabelsResponse, error) + // Upload feedback labels in bulk. + BulkUploadFeedbackLabels(context.Context, *BulkUploadFeedbackLabelsRequest) (*longrunningpb.Operation, error) + // Download feedback labels in bulk. + BulkDownloadFeedbackLabels(context.Context, *BulkDownloadFeedbackLabelsRequest) (*longrunningpb.Operation, error) } // UnimplementedContactCenterInsightsServer can be embedded to have forward compatible implementations. @@ -9114,844 +16417,1495 @@ func (*UnimplementedContactCenterInsightsServer) UndeployIssueModel(context.Cont func (*UnimplementedContactCenterInsightsServer) ExportIssueModel(context.Context, *ExportIssueModelRequest) (*longrunningpb.Operation, error) { return nil, status1.Errorf(codes.Unimplemented, "method ExportIssueModel not implemented") } -func (*UnimplementedContactCenterInsightsServer) ImportIssueModel(context.Context, *ImportIssueModelRequest) (*longrunningpb.Operation, error) { - return nil, status1.Errorf(codes.Unimplemented, "method ImportIssueModel not implemented") +func (*UnimplementedContactCenterInsightsServer) ImportIssueModel(context.Context, *ImportIssueModelRequest) (*longrunningpb.Operation, error) { + return nil, status1.Errorf(codes.Unimplemented, "method ImportIssueModel not implemented") +} +func (*UnimplementedContactCenterInsightsServer) GetIssue(context.Context, *GetIssueRequest) (*Issue, error) { + return nil, status1.Errorf(codes.Unimplemented, "method GetIssue not implemented") +} +func (*UnimplementedContactCenterInsightsServer) ListIssues(context.Context, *ListIssuesRequest) (*ListIssuesResponse, error) { + return nil, status1.Errorf(codes.Unimplemented, "method ListIssues not implemented") +} +func (*UnimplementedContactCenterInsightsServer) UpdateIssue(context.Context, *UpdateIssueRequest) (*Issue, error) { + return nil, status1.Errorf(codes.Unimplemented, "method UpdateIssue not implemented") +} +func (*UnimplementedContactCenterInsightsServer) DeleteIssue(context.Context, *DeleteIssueRequest) (*emptypb.Empty, error) { + return nil, status1.Errorf(codes.Unimplemented, "method DeleteIssue not implemented") +} +func (*UnimplementedContactCenterInsightsServer) CalculateIssueModelStats(context.Context, *CalculateIssueModelStatsRequest) (*CalculateIssueModelStatsResponse, error) { + return nil, status1.Errorf(codes.Unimplemented, "method CalculateIssueModelStats not implemented") +} +func (*UnimplementedContactCenterInsightsServer) CreatePhraseMatcher(context.Context, *CreatePhraseMatcherRequest) (*PhraseMatcher, error) { + return nil, status1.Errorf(codes.Unimplemented, "method CreatePhraseMatcher not implemented") +} +func (*UnimplementedContactCenterInsightsServer) GetPhraseMatcher(context.Context, *GetPhraseMatcherRequest) (*PhraseMatcher, error) { + return nil, status1.Errorf(codes.Unimplemented, "method GetPhraseMatcher not implemented") +} +func (*UnimplementedContactCenterInsightsServer) ListPhraseMatchers(context.Context, *ListPhraseMatchersRequest) (*ListPhraseMatchersResponse, error) { + return nil, status1.Errorf(codes.Unimplemented, "method ListPhraseMatchers not implemented") +} +func (*UnimplementedContactCenterInsightsServer) DeletePhraseMatcher(context.Context, *DeletePhraseMatcherRequest) (*emptypb.Empty, error) { + return nil, status1.Errorf(codes.Unimplemented, "method DeletePhraseMatcher not implemented") +} +func (*UnimplementedContactCenterInsightsServer) UpdatePhraseMatcher(context.Context, *UpdatePhraseMatcherRequest) (*PhraseMatcher, error) { + return nil, status1.Errorf(codes.Unimplemented, "method UpdatePhraseMatcher not implemented") +} +func (*UnimplementedContactCenterInsightsServer) CalculateStats(context.Context, *CalculateStatsRequest) (*CalculateStatsResponse, error) { + return nil, status1.Errorf(codes.Unimplemented, "method CalculateStats not implemented") +} +func (*UnimplementedContactCenterInsightsServer) GetSettings(context.Context, *GetSettingsRequest) (*Settings, error) { + return nil, status1.Errorf(codes.Unimplemented, "method GetSettings not implemented") +} +func (*UnimplementedContactCenterInsightsServer) UpdateSettings(context.Context, *UpdateSettingsRequest) (*Settings, error) { + return nil, status1.Errorf(codes.Unimplemented, "method UpdateSettings not implemented") +} +func (*UnimplementedContactCenterInsightsServer) CreateAnalysisRule(context.Context, *CreateAnalysisRuleRequest) (*AnalysisRule, error) { + return nil, status1.Errorf(codes.Unimplemented, "method CreateAnalysisRule not implemented") +} +func (*UnimplementedContactCenterInsightsServer) GetAnalysisRule(context.Context, *GetAnalysisRuleRequest) (*AnalysisRule, error) { + return nil, status1.Errorf(codes.Unimplemented, "method GetAnalysisRule not implemented") +} +func (*UnimplementedContactCenterInsightsServer) ListAnalysisRules(context.Context, *ListAnalysisRulesRequest) (*ListAnalysisRulesResponse, error) { + return nil, status1.Errorf(codes.Unimplemented, "method ListAnalysisRules not implemented") +} +func (*UnimplementedContactCenterInsightsServer) UpdateAnalysisRule(context.Context, *UpdateAnalysisRuleRequest) (*AnalysisRule, error) { + return nil, status1.Errorf(codes.Unimplemented, "method UpdateAnalysisRule not implemented") +} +func (*UnimplementedContactCenterInsightsServer) DeleteAnalysisRule(context.Context, *DeleteAnalysisRuleRequest) (*emptypb.Empty, error) { + return nil, status1.Errorf(codes.Unimplemented, "method DeleteAnalysisRule not implemented") +} +func (*UnimplementedContactCenterInsightsServer) GetEncryptionSpec(context.Context, *GetEncryptionSpecRequest) (*EncryptionSpec, error) { + return nil, status1.Errorf(codes.Unimplemented, "method GetEncryptionSpec not implemented") +} +func (*UnimplementedContactCenterInsightsServer) InitializeEncryptionSpec(context.Context, *InitializeEncryptionSpecRequest) (*longrunningpb.Operation, error) { + return nil, status1.Errorf(codes.Unimplemented, "method InitializeEncryptionSpec not implemented") +} +func (*UnimplementedContactCenterInsightsServer) CreateView(context.Context, *CreateViewRequest) (*View, error) { + return nil, status1.Errorf(codes.Unimplemented, "method CreateView not implemented") +} +func (*UnimplementedContactCenterInsightsServer) GetView(context.Context, *GetViewRequest) (*View, error) { + return nil, status1.Errorf(codes.Unimplemented, "method GetView not implemented") +} +func (*UnimplementedContactCenterInsightsServer) ListViews(context.Context, *ListViewsRequest) (*ListViewsResponse, error) { + return nil, status1.Errorf(codes.Unimplemented, "method ListViews not implemented") +} +func (*UnimplementedContactCenterInsightsServer) UpdateView(context.Context, *UpdateViewRequest) (*View, error) { + return nil, status1.Errorf(codes.Unimplemented, "method UpdateView not implemented") +} +func (*UnimplementedContactCenterInsightsServer) DeleteView(context.Context, *DeleteViewRequest) (*emptypb.Empty, error) { + return nil, status1.Errorf(codes.Unimplemented, "method DeleteView not implemented") +} +func (*UnimplementedContactCenterInsightsServer) QueryMetrics(context.Context, *QueryMetricsRequest) (*longrunningpb.Operation, error) { + return nil, status1.Errorf(codes.Unimplemented, "method QueryMetrics not implemented") +} +func (*UnimplementedContactCenterInsightsServer) CreateQaQuestion(context.Context, *CreateQaQuestionRequest) (*QaQuestion, error) { + return nil, status1.Errorf(codes.Unimplemented, "method CreateQaQuestion not implemented") +} +func (*UnimplementedContactCenterInsightsServer) GetQaQuestion(context.Context, *GetQaQuestionRequest) (*QaQuestion, error) { + return nil, status1.Errorf(codes.Unimplemented, "method GetQaQuestion not implemented") +} +func (*UnimplementedContactCenterInsightsServer) UpdateQaQuestion(context.Context, *UpdateQaQuestionRequest) (*QaQuestion, error) { + return nil, status1.Errorf(codes.Unimplemented, "method UpdateQaQuestion not implemented") +} +func (*UnimplementedContactCenterInsightsServer) DeleteQaQuestion(context.Context, *DeleteQaQuestionRequest) (*emptypb.Empty, error) { + return nil, status1.Errorf(codes.Unimplemented, "method DeleteQaQuestion not implemented") +} +func (*UnimplementedContactCenterInsightsServer) ListQaQuestions(context.Context, *ListQaQuestionsRequest) (*ListQaQuestionsResponse, error) { + return nil, status1.Errorf(codes.Unimplemented, "method ListQaQuestions not implemented") +} +func (*UnimplementedContactCenterInsightsServer) CreateQaScorecard(context.Context, *CreateQaScorecardRequest) (*QaScorecard, error) { + return nil, status1.Errorf(codes.Unimplemented, "method CreateQaScorecard not implemented") +} +func (*UnimplementedContactCenterInsightsServer) GetQaScorecard(context.Context, *GetQaScorecardRequest) (*QaScorecard, error) { + return nil, status1.Errorf(codes.Unimplemented, "method GetQaScorecard not implemented") +} +func (*UnimplementedContactCenterInsightsServer) UpdateQaScorecard(context.Context, *UpdateQaScorecardRequest) (*QaScorecard, error) { + return nil, status1.Errorf(codes.Unimplemented, "method UpdateQaScorecard not implemented") +} +func (*UnimplementedContactCenterInsightsServer) DeleteQaScorecard(context.Context, *DeleteQaScorecardRequest) (*emptypb.Empty, error) { + return nil, status1.Errorf(codes.Unimplemented, "method DeleteQaScorecard not implemented") +} +func (*UnimplementedContactCenterInsightsServer) ListQaScorecards(context.Context, *ListQaScorecardsRequest) (*ListQaScorecardsResponse, error) { + return nil, status1.Errorf(codes.Unimplemented, "method ListQaScorecards not implemented") +} +func (*UnimplementedContactCenterInsightsServer) CreateQaScorecardRevision(context.Context, *CreateQaScorecardRevisionRequest) (*QaScorecardRevision, error) { + return nil, status1.Errorf(codes.Unimplemented, "method CreateQaScorecardRevision not implemented") +} +func (*UnimplementedContactCenterInsightsServer) GetQaScorecardRevision(context.Context, *GetQaScorecardRevisionRequest) (*QaScorecardRevision, error) { + return nil, status1.Errorf(codes.Unimplemented, "method GetQaScorecardRevision not implemented") +} +func (*UnimplementedContactCenterInsightsServer) TuneQaScorecardRevision(context.Context, *TuneQaScorecardRevisionRequest) (*longrunningpb.Operation, error) { + return nil, status1.Errorf(codes.Unimplemented, "method TuneQaScorecardRevision not implemented") +} +func (*UnimplementedContactCenterInsightsServer) DeployQaScorecardRevision(context.Context, *DeployQaScorecardRevisionRequest) (*QaScorecardRevision, error) { + return nil, status1.Errorf(codes.Unimplemented, "method DeployQaScorecardRevision not implemented") +} +func (*UnimplementedContactCenterInsightsServer) UndeployQaScorecardRevision(context.Context, *UndeployQaScorecardRevisionRequest) (*QaScorecardRevision, error) { + return nil, status1.Errorf(codes.Unimplemented, "method UndeployQaScorecardRevision not implemented") +} +func (*UnimplementedContactCenterInsightsServer) DeleteQaScorecardRevision(context.Context, *DeleteQaScorecardRevisionRequest) (*emptypb.Empty, error) { + return nil, status1.Errorf(codes.Unimplemented, "method DeleteQaScorecardRevision not implemented") +} +func (*UnimplementedContactCenterInsightsServer) ListQaScorecardRevisions(context.Context, *ListQaScorecardRevisionsRequest) (*ListQaScorecardRevisionsResponse, error) { + return nil, status1.Errorf(codes.Unimplemented, "method ListQaScorecardRevisions not implemented") +} +func (*UnimplementedContactCenterInsightsServer) CreateFeedbackLabel(context.Context, *CreateFeedbackLabelRequest) (*FeedbackLabel, error) { + return nil, status1.Errorf(codes.Unimplemented, "method CreateFeedbackLabel not implemented") +} +func (*UnimplementedContactCenterInsightsServer) ListFeedbackLabels(context.Context, *ListFeedbackLabelsRequest) (*ListFeedbackLabelsResponse, error) { + return nil, status1.Errorf(codes.Unimplemented, "method ListFeedbackLabels not implemented") +} +func (*UnimplementedContactCenterInsightsServer) GetFeedbackLabel(context.Context, *GetFeedbackLabelRequest) (*FeedbackLabel, error) { + return nil, status1.Errorf(codes.Unimplemented, "method GetFeedbackLabel not implemented") +} +func (*UnimplementedContactCenterInsightsServer) UpdateFeedbackLabel(context.Context, *UpdateFeedbackLabelRequest) (*FeedbackLabel, error) { + return nil, status1.Errorf(codes.Unimplemented, "method UpdateFeedbackLabel not implemented") +} +func (*UnimplementedContactCenterInsightsServer) DeleteFeedbackLabel(context.Context, *DeleteFeedbackLabelRequest) (*emptypb.Empty, error) { + return nil, status1.Errorf(codes.Unimplemented, "method DeleteFeedbackLabel not implemented") +} +func (*UnimplementedContactCenterInsightsServer) ListAllFeedbackLabels(context.Context, *ListAllFeedbackLabelsRequest) (*ListAllFeedbackLabelsResponse, error) { + return nil, status1.Errorf(codes.Unimplemented, "method ListAllFeedbackLabels not implemented") +} +func (*UnimplementedContactCenterInsightsServer) BulkUploadFeedbackLabels(context.Context, *BulkUploadFeedbackLabelsRequest) (*longrunningpb.Operation, error) { + return nil, status1.Errorf(codes.Unimplemented, "method BulkUploadFeedbackLabels not implemented") +} +func (*UnimplementedContactCenterInsightsServer) BulkDownloadFeedbackLabels(context.Context, *BulkDownloadFeedbackLabelsRequest) (*longrunningpb.Operation, error) { + return nil, status1.Errorf(codes.Unimplemented, "method BulkDownloadFeedbackLabels not implemented") +} + +func RegisterContactCenterInsightsServer(s *grpc.Server, srv ContactCenterInsightsServer) { + s.RegisterService(&_ContactCenterInsights_serviceDesc, srv) +} + +func _ContactCenterInsights_CreateConversation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateConversationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).CreateConversation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CreateConversation", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).CreateConversation(ctx, req.(*CreateConversationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ContactCenterInsights_UploadConversation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UploadConversationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).UploadConversation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UploadConversation", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).UploadConversation(ctx, req.(*UploadConversationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ContactCenterInsights_UpdateConversation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateConversationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).UpdateConversation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdateConversation", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).UpdateConversation(ctx, req.(*UpdateConversationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ContactCenterInsights_GetConversation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetConversationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).GetConversation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetConversation", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).GetConversation(ctx, req.(*GetConversationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ContactCenterInsights_ListConversations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListConversationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).ListConversations(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListConversations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).ListConversations(ctx, req.(*ListConversationsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ContactCenterInsights_DeleteConversation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteConversationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).DeleteConversation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteConversation", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).DeleteConversation(ctx, req.(*DeleteConversationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ContactCenterInsights_CreateAnalysis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateAnalysisRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).CreateAnalysis(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CreateAnalysis", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).CreateAnalysis(ctx, req.(*CreateAnalysisRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ContactCenterInsights_GetAnalysis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAnalysisRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).GetAnalysis(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetAnalysis", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).GetAnalysis(ctx, req.(*GetAnalysisRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ContactCenterInsights_ListAnalyses_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListAnalysesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).ListAnalyses(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListAnalyses", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).ListAnalyses(ctx, req.(*ListAnalysesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ContactCenterInsights_DeleteAnalysis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteAnalysisRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).DeleteAnalysis(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteAnalysis", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).DeleteAnalysis(ctx, req.(*DeleteAnalysisRequest)) + } + return interceptor(ctx, in, info, handler) } -func (*UnimplementedContactCenterInsightsServer) GetIssue(context.Context, *GetIssueRequest) (*Issue, error) { - return nil, status1.Errorf(codes.Unimplemented, "method GetIssue not implemented") + +func _ContactCenterInsights_BulkAnalyzeConversations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(BulkAnalyzeConversationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).BulkAnalyzeConversations(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/BulkAnalyzeConversations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).BulkAnalyzeConversations(ctx, req.(*BulkAnalyzeConversationsRequest)) + } + return interceptor(ctx, in, info, handler) } -func (*UnimplementedContactCenterInsightsServer) ListIssues(context.Context, *ListIssuesRequest) (*ListIssuesResponse, error) { - return nil, status1.Errorf(codes.Unimplemented, "method ListIssues not implemented") + +func _ContactCenterInsights_BulkDeleteConversations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(BulkDeleteConversationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).BulkDeleteConversations(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/BulkDeleteConversations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).BulkDeleteConversations(ctx, req.(*BulkDeleteConversationsRequest)) + } + return interceptor(ctx, in, info, handler) } -func (*UnimplementedContactCenterInsightsServer) UpdateIssue(context.Context, *UpdateIssueRequest) (*Issue, error) { - return nil, status1.Errorf(codes.Unimplemented, "method UpdateIssue not implemented") + +func _ContactCenterInsights_IngestConversations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(IngestConversationsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).IngestConversations(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/IngestConversations", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).IngestConversations(ctx, req.(*IngestConversationsRequest)) + } + return interceptor(ctx, in, info, handler) } -func (*UnimplementedContactCenterInsightsServer) DeleteIssue(context.Context, *DeleteIssueRequest) (*emptypb.Empty, error) { - return nil, status1.Errorf(codes.Unimplemented, "method DeleteIssue not implemented") + +func _ContactCenterInsights_ExportInsightsData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ExportInsightsDataRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).ExportInsightsData(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ExportInsightsData", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).ExportInsightsData(ctx, req.(*ExportInsightsDataRequest)) + } + return interceptor(ctx, in, info, handler) } -func (*UnimplementedContactCenterInsightsServer) CalculateIssueModelStats(context.Context, *CalculateIssueModelStatsRequest) (*CalculateIssueModelStatsResponse, error) { - return nil, status1.Errorf(codes.Unimplemented, "method CalculateIssueModelStats not implemented") + +func _ContactCenterInsights_CreateIssueModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateIssueModelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).CreateIssueModel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CreateIssueModel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).CreateIssueModel(ctx, req.(*CreateIssueModelRequest)) + } + return interceptor(ctx, in, info, handler) } -func (*UnimplementedContactCenterInsightsServer) CreatePhraseMatcher(context.Context, *CreatePhraseMatcherRequest) (*PhraseMatcher, error) { - return nil, status1.Errorf(codes.Unimplemented, "method CreatePhraseMatcher not implemented") + +func _ContactCenterInsights_UpdateIssueModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateIssueModelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).UpdateIssueModel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdateIssueModel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).UpdateIssueModel(ctx, req.(*UpdateIssueModelRequest)) + } + return interceptor(ctx, in, info, handler) } -func (*UnimplementedContactCenterInsightsServer) GetPhraseMatcher(context.Context, *GetPhraseMatcherRequest) (*PhraseMatcher, error) { - return nil, status1.Errorf(codes.Unimplemented, "method GetPhraseMatcher not implemented") + +func _ContactCenterInsights_GetIssueModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetIssueModelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).GetIssueModel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetIssueModel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).GetIssueModel(ctx, req.(*GetIssueModelRequest)) + } + return interceptor(ctx, in, info, handler) } -func (*UnimplementedContactCenterInsightsServer) ListPhraseMatchers(context.Context, *ListPhraseMatchersRequest) (*ListPhraseMatchersResponse, error) { - return nil, status1.Errorf(codes.Unimplemented, "method ListPhraseMatchers not implemented") + +func _ContactCenterInsights_ListIssueModels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListIssueModelsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).ListIssueModels(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListIssueModels", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).ListIssueModels(ctx, req.(*ListIssueModelsRequest)) + } + return interceptor(ctx, in, info, handler) } -func (*UnimplementedContactCenterInsightsServer) DeletePhraseMatcher(context.Context, *DeletePhraseMatcherRequest) (*emptypb.Empty, error) { - return nil, status1.Errorf(codes.Unimplemented, "method DeletePhraseMatcher not implemented") + +func _ContactCenterInsights_DeleteIssueModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteIssueModelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).DeleteIssueModel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteIssueModel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).DeleteIssueModel(ctx, req.(*DeleteIssueModelRequest)) + } + return interceptor(ctx, in, info, handler) } -func (*UnimplementedContactCenterInsightsServer) UpdatePhraseMatcher(context.Context, *UpdatePhraseMatcherRequest) (*PhraseMatcher, error) { - return nil, status1.Errorf(codes.Unimplemented, "method UpdatePhraseMatcher not implemented") + +func _ContactCenterInsights_DeployIssueModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeployIssueModelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).DeployIssueModel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeployIssueModel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).DeployIssueModel(ctx, req.(*DeployIssueModelRequest)) + } + return interceptor(ctx, in, info, handler) } -func (*UnimplementedContactCenterInsightsServer) CalculateStats(context.Context, *CalculateStatsRequest) (*CalculateStatsResponse, error) { - return nil, status1.Errorf(codes.Unimplemented, "method CalculateStats not implemented") + +func _ContactCenterInsights_UndeployIssueModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UndeployIssueModelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).UndeployIssueModel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UndeployIssueModel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).UndeployIssueModel(ctx, req.(*UndeployIssueModelRequest)) + } + return interceptor(ctx, in, info, handler) } -func (*UnimplementedContactCenterInsightsServer) GetSettings(context.Context, *GetSettingsRequest) (*Settings, error) { - return nil, status1.Errorf(codes.Unimplemented, "method GetSettings not implemented") + +func _ContactCenterInsights_ExportIssueModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ExportIssueModelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).ExportIssueModel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ExportIssueModel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).ExportIssueModel(ctx, req.(*ExportIssueModelRequest)) + } + return interceptor(ctx, in, info, handler) } -func (*UnimplementedContactCenterInsightsServer) UpdateSettings(context.Context, *UpdateSettingsRequest) (*Settings, error) { - return nil, status1.Errorf(codes.Unimplemented, "method UpdateSettings not implemented") + +func _ContactCenterInsights_ImportIssueModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ImportIssueModelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).ImportIssueModel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ImportIssueModel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).ImportIssueModel(ctx, req.(*ImportIssueModelRequest)) + } + return interceptor(ctx, in, info, handler) } -func (*UnimplementedContactCenterInsightsServer) GetEncryptionSpec(context.Context, *GetEncryptionSpecRequest) (*EncryptionSpec, error) { - return nil, status1.Errorf(codes.Unimplemented, "method GetEncryptionSpec not implemented") + +func _ContactCenterInsights_GetIssue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetIssueRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).GetIssue(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetIssue", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).GetIssue(ctx, req.(*GetIssueRequest)) + } + return interceptor(ctx, in, info, handler) } -func (*UnimplementedContactCenterInsightsServer) InitializeEncryptionSpec(context.Context, *InitializeEncryptionSpecRequest) (*longrunningpb.Operation, error) { - return nil, status1.Errorf(codes.Unimplemented, "method InitializeEncryptionSpec not implemented") + +func _ContactCenterInsights_ListIssues_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListIssuesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).ListIssues(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListIssues", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).ListIssues(ctx, req.(*ListIssuesRequest)) + } + return interceptor(ctx, in, info, handler) } -func (*UnimplementedContactCenterInsightsServer) CreateView(context.Context, *CreateViewRequest) (*View, error) { - return nil, status1.Errorf(codes.Unimplemented, "method CreateView not implemented") + +func _ContactCenterInsights_UpdateIssue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateIssueRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).UpdateIssue(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdateIssue", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).UpdateIssue(ctx, req.(*UpdateIssueRequest)) + } + return interceptor(ctx, in, info, handler) } -func (*UnimplementedContactCenterInsightsServer) GetView(context.Context, *GetViewRequest) (*View, error) { - return nil, status1.Errorf(codes.Unimplemented, "method GetView not implemented") + +func _ContactCenterInsights_DeleteIssue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteIssueRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).DeleteIssue(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteIssue", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).DeleteIssue(ctx, req.(*DeleteIssueRequest)) + } + return interceptor(ctx, in, info, handler) } -func (*UnimplementedContactCenterInsightsServer) ListViews(context.Context, *ListViewsRequest) (*ListViewsResponse, error) { - return nil, status1.Errorf(codes.Unimplemented, "method ListViews not implemented") + +func _ContactCenterInsights_CalculateIssueModelStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CalculateIssueModelStatsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).CalculateIssueModelStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CalculateIssueModelStats", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).CalculateIssueModelStats(ctx, req.(*CalculateIssueModelStatsRequest)) + } + return interceptor(ctx, in, info, handler) } -func (*UnimplementedContactCenterInsightsServer) UpdateView(context.Context, *UpdateViewRequest) (*View, error) { - return nil, status1.Errorf(codes.Unimplemented, "method UpdateView not implemented") + +func _ContactCenterInsights_CreatePhraseMatcher_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreatePhraseMatcherRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).CreatePhraseMatcher(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CreatePhraseMatcher", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).CreatePhraseMatcher(ctx, req.(*CreatePhraseMatcherRequest)) + } + return interceptor(ctx, in, info, handler) } -func (*UnimplementedContactCenterInsightsServer) DeleteView(context.Context, *DeleteViewRequest) (*emptypb.Empty, error) { - return nil, status1.Errorf(codes.Unimplemented, "method DeleteView not implemented") + +func _ContactCenterInsights_GetPhraseMatcher_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPhraseMatcherRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).GetPhraseMatcher(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetPhraseMatcher", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).GetPhraseMatcher(ctx, req.(*GetPhraseMatcherRequest)) + } + return interceptor(ctx, in, info, handler) } -func RegisterContactCenterInsightsServer(s *grpc.Server, srv ContactCenterInsightsServer) { - s.RegisterService(&_ContactCenterInsights_serviceDesc, srv) +func _ContactCenterInsights_ListPhraseMatchers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListPhraseMatchersRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ContactCenterInsightsServer).ListPhraseMatchers(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListPhraseMatchers", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ContactCenterInsightsServer).ListPhraseMatchers(ctx, req.(*ListPhraseMatchersRequest)) + } + return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_CreateConversation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateConversationRequest) +func _ContactCenterInsights_DeletePhraseMatcher_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeletePhraseMatcherRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).CreateConversation(ctx, in) + return srv.(ContactCenterInsightsServer).DeletePhraseMatcher(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CreateConversation", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeletePhraseMatcher", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).CreateConversation(ctx, req.(*CreateConversationRequest)) + return srv.(ContactCenterInsightsServer).DeletePhraseMatcher(ctx, req.(*DeletePhraseMatcherRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_UploadConversation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UploadConversationRequest) +func _ContactCenterInsights_UpdatePhraseMatcher_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdatePhraseMatcherRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).UploadConversation(ctx, in) + return srv.(ContactCenterInsightsServer).UpdatePhraseMatcher(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UploadConversation", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdatePhraseMatcher", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).UploadConversation(ctx, req.(*UploadConversationRequest)) + return srv.(ContactCenterInsightsServer).UpdatePhraseMatcher(ctx, req.(*UpdatePhraseMatcherRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_UpdateConversation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateConversationRequest) +func _ContactCenterInsights_CalculateStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CalculateStatsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).UpdateConversation(ctx, in) + return srv.(ContactCenterInsightsServer).CalculateStats(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdateConversation", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CalculateStats", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).UpdateConversation(ctx, req.(*UpdateConversationRequest)) + return srv.(ContactCenterInsightsServer).CalculateStats(ctx, req.(*CalculateStatsRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_GetConversation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetConversationRequest) +func _ContactCenterInsights_GetSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetSettingsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).GetConversation(ctx, in) + return srv.(ContactCenterInsightsServer).GetSettings(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetConversation", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetSettings", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).GetConversation(ctx, req.(*GetConversationRequest)) + return srv.(ContactCenterInsightsServer).GetSettings(ctx, req.(*GetSettingsRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_ListConversations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListConversationsRequest) +func _ContactCenterInsights_UpdateSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateSettingsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).ListConversations(ctx, in) + return srv.(ContactCenterInsightsServer).UpdateSettings(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListConversations", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdateSettings", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).ListConversations(ctx, req.(*ListConversationsRequest)) + return srv.(ContactCenterInsightsServer).UpdateSettings(ctx, req.(*UpdateSettingsRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_DeleteConversation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteConversationRequest) +func _ContactCenterInsights_CreateAnalysisRule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateAnalysisRuleRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).DeleteConversation(ctx, in) + return srv.(ContactCenterInsightsServer).CreateAnalysisRule(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteConversation", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CreateAnalysisRule", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).DeleteConversation(ctx, req.(*DeleteConversationRequest)) + return srv.(ContactCenterInsightsServer).CreateAnalysisRule(ctx, req.(*CreateAnalysisRuleRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_CreateAnalysis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateAnalysisRequest) +func _ContactCenterInsights_GetAnalysisRule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAnalysisRuleRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).CreateAnalysis(ctx, in) + return srv.(ContactCenterInsightsServer).GetAnalysisRule(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CreateAnalysis", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetAnalysisRule", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).CreateAnalysis(ctx, req.(*CreateAnalysisRequest)) + return srv.(ContactCenterInsightsServer).GetAnalysisRule(ctx, req.(*GetAnalysisRuleRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_GetAnalysis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetAnalysisRequest) +func _ContactCenterInsights_ListAnalysisRules_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListAnalysisRulesRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).GetAnalysis(ctx, in) + return srv.(ContactCenterInsightsServer).ListAnalysisRules(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetAnalysis", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListAnalysisRules", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).GetAnalysis(ctx, req.(*GetAnalysisRequest)) + return srv.(ContactCenterInsightsServer).ListAnalysisRules(ctx, req.(*ListAnalysisRulesRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_ListAnalyses_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListAnalysesRequest) +func _ContactCenterInsights_UpdateAnalysisRule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateAnalysisRuleRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).ListAnalyses(ctx, in) + return srv.(ContactCenterInsightsServer).UpdateAnalysisRule(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListAnalyses", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdateAnalysisRule", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).ListAnalyses(ctx, req.(*ListAnalysesRequest)) + return srv.(ContactCenterInsightsServer).UpdateAnalysisRule(ctx, req.(*UpdateAnalysisRuleRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_DeleteAnalysis_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteAnalysisRequest) +func _ContactCenterInsights_DeleteAnalysisRule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteAnalysisRuleRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).DeleteAnalysis(ctx, in) + return srv.(ContactCenterInsightsServer).DeleteAnalysisRule(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteAnalysis", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteAnalysisRule", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).DeleteAnalysis(ctx, req.(*DeleteAnalysisRequest)) + return srv.(ContactCenterInsightsServer).DeleteAnalysisRule(ctx, req.(*DeleteAnalysisRuleRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_BulkAnalyzeConversations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BulkAnalyzeConversationsRequest) +func _ContactCenterInsights_GetEncryptionSpec_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetEncryptionSpecRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).BulkAnalyzeConversations(ctx, in) + return srv.(ContactCenterInsightsServer).GetEncryptionSpec(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/BulkAnalyzeConversations", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetEncryptionSpec", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).BulkAnalyzeConversations(ctx, req.(*BulkAnalyzeConversationsRequest)) + return srv.(ContactCenterInsightsServer).GetEncryptionSpec(ctx, req.(*GetEncryptionSpecRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_BulkDeleteConversations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(BulkDeleteConversationsRequest) +func _ContactCenterInsights_InitializeEncryptionSpec_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InitializeEncryptionSpecRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).BulkDeleteConversations(ctx, in) + return srv.(ContactCenterInsightsServer).InitializeEncryptionSpec(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/BulkDeleteConversations", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/InitializeEncryptionSpec", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).BulkDeleteConversations(ctx, req.(*BulkDeleteConversationsRequest)) + return srv.(ContactCenterInsightsServer).InitializeEncryptionSpec(ctx, req.(*InitializeEncryptionSpecRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_IngestConversations_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(IngestConversationsRequest) +func _ContactCenterInsights_CreateView_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateViewRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).IngestConversations(ctx, in) + return srv.(ContactCenterInsightsServer).CreateView(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/IngestConversations", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CreateView", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).IngestConversations(ctx, req.(*IngestConversationsRequest)) + return srv.(ContactCenterInsightsServer).CreateView(ctx, req.(*CreateViewRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_ExportInsightsData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ExportInsightsDataRequest) +func _ContactCenterInsights_GetView_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetViewRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).ExportInsightsData(ctx, in) + return srv.(ContactCenterInsightsServer).GetView(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ExportInsightsData", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetView", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).ExportInsightsData(ctx, req.(*ExportInsightsDataRequest)) + return srv.(ContactCenterInsightsServer).GetView(ctx, req.(*GetViewRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_CreateIssueModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateIssueModelRequest) +func _ContactCenterInsights_ListViews_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListViewsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).CreateIssueModel(ctx, in) + return srv.(ContactCenterInsightsServer).ListViews(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CreateIssueModel", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListViews", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).CreateIssueModel(ctx, req.(*CreateIssueModelRequest)) + return srv.(ContactCenterInsightsServer).ListViews(ctx, req.(*ListViewsRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_UpdateIssueModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateIssueModelRequest) +func _ContactCenterInsights_UpdateView_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateViewRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).UpdateIssueModel(ctx, in) + return srv.(ContactCenterInsightsServer).UpdateView(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdateIssueModel", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdateView", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).UpdateIssueModel(ctx, req.(*UpdateIssueModelRequest)) + return srv.(ContactCenterInsightsServer).UpdateView(ctx, req.(*UpdateViewRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_GetIssueModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetIssueModelRequest) +func _ContactCenterInsights_DeleteView_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteViewRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).GetIssueModel(ctx, in) + return srv.(ContactCenterInsightsServer).DeleteView(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetIssueModel", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteView", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).GetIssueModel(ctx, req.(*GetIssueModelRequest)) + return srv.(ContactCenterInsightsServer).DeleteView(ctx, req.(*DeleteViewRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_ListIssueModels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListIssueModelsRequest) +func _ContactCenterInsights_QueryMetrics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryMetricsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).ListIssueModels(ctx, in) + return srv.(ContactCenterInsightsServer).QueryMetrics(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListIssueModels", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/QueryMetrics", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).ListIssueModels(ctx, req.(*ListIssueModelsRequest)) + return srv.(ContactCenterInsightsServer).QueryMetrics(ctx, req.(*QueryMetricsRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_DeleteIssueModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteIssueModelRequest) +func _ContactCenterInsights_CreateQaQuestion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateQaQuestionRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).DeleteIssueModel(ctx, in) + return srv.(ContactCenterInsightsServer).CreateQaQuestion(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteIssueModel", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CreateQaQuestion", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).DeleteIssueModel(ctx, req.(*DeleteIssueModelRequest)) + return srv.(ContactCenterInsightsServer).CreateQaQuestion(ctx, req.(*CreateQaQuestionRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_DeployIssueModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeployIssueModelRequest) +func _ContactCenterInsights_GetQaQuestion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetQaQuestionRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).DeployIssueModel(ctx, in) + return srv.(ContactCenterInsightsServer).GetQaQuestion(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeployIssueModel", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetQaQuestion", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).DeployIssueModel(ctx, req.(*DeployIssueModelRequest)) + return srv.(ContactCenterInsightsServer).GetQaQuestion(ctx, req.(*GetQaQuestionRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_UndeployIssueModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UndeployIssueModelRequest) +func _ContactCenterInsights_UpdateQaQuestion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateQaQuestionRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).UndeployIssueModel(ctx, in) + return srv.(ContactCenterInsightsServer).UpdateQaQuestion(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UndeployIssueModel", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdateQaQuestion", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).UndeployIssueModel(ctx, req.(*UndeployIssueModelRequest)) + return srv.(ContactCenterInsightsServer).UpdateQaQuestion(ctx, req.(*UpdateQaQuestionRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_ExportIssueModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ExportIssueModelRequest) +func _ContactCenterInsights_DeleteQaQuestion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteQaQuestionRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).ExportIssueModel(ctx, in) + return srv.(ContactCenterInsightsServer).DeleteQaQuestion(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ExportIssueModel", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteQaQuestion", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).ExportIssueModel(ctx, req.(*ExportIssueModelRequest)) + return srv.(ContactCenterInsightsServer).DeleteQaQuestion(ctx, req.(*DeleteQaQuestionRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_ImportIssueModel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ImportIssueModelRequest) +func _ContactCenterInsights_ListQaQuestions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListQaQuestionsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).ImportIssueModel(ctx, in) + return srv.(ContactCenterInsightsServer).ListQaQuestions(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ImportIssueModel", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListQaQuestions", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).ImportIssueModel(ctx, req.(*ImportIssueModelRequest)) + return srv.(ContactCenterInsightsServer).ListQaQuestions(ctx, req.(*ListQaQuestionsRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_GetIssue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetIssueRequest) +func _ContactCenterInsights_CreateQaScorecard_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateQaScorecardRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).GetIssue(ctx, in) + return srv.(ContactCenterInsightsServer).CreateQaScorecard(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetIssue", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CreateQaScorecard", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).GetIssue(ctx, req.(*GetIssueRequest)) + return srv.(ContactCenterInsightsServer).CreateQaScorecard(ctx, req.(*CreateQaScorecardRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_ListIssues_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListIssuesRequest) +func _ContactCenterInsights_GetQaScorecard_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetQaScorecardRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).ListIssues(ctx, in) + return srv.(ContactCenterInsightsServer).GetQaScorecard(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListIssues", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetQaScorecard", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).ListIssues(ctx, req.(*ListIssuesRequest)) + return srv.(ContactCenterInsightsServer).GetQaScorecard(ctx, req.(*GetQaScorecardRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_UpdateIssue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateIssueRequest) +func _ContactCenterInsights_UpdateQaScorecard_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateQaScorecardRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).UpdateIssue(ctx, in) + return srv.(ContactCenterInsightsServer).UpdateQaScorecard(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdateIssue", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdateQaScorecard", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).UpdateIssue(ctx, req.(*UpdateIssueRequest)) + return srv.(ContactCenterInsightsServer).UpdateQaScorecard(ctx, req.(*UpdateQaScorecardRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_DeleteIssue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteIssueRequest) +func _ContactCenterInsights_DeleteQaScorecard_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteQaScorecardRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).DeleteIssue(ctx, in) + return srv.(ContactCenterInsightsServer).DeleteQaScorecard(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteIssue", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteQaScorecard", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).DeleteIssue(ctx, req.(*DeleteIssueRequest)) + return srv.(ContactCenterInsightsServer).DeleteQaScorecard(ctx, req.(*DeleteQaScorecardRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_CalculateIssueModelStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CalculateIssueModelStatsRequest) +func _ContactCenterInsights_ListQaScorecards_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListQaScorecardsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).CalculateIssueModelStats(ctx, in) + return srv.(ContactCenterInsightsServer).ListQaScorecards(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CalculateIssueModelStats", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListQaScorecards", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).CalculateIssueModelStats(ctx, req.(*CalculateIssueModelStatsRequest)) + return srv.(ContactCenterInsightsServer).ListQaScorecards(ctx, req.(*ListQaScorecardsRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_CreatePhraseMatcher_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreatePhraseMatcherRequest) +func _ContactCenterInsights_CreateQaScorecardRevision_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateQaScorecardRevisionRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).CreatePhraseMatcher(ctx, in) + return srv.(ContactCenterInsightsServer).CreateQaScorecardRevision(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CreatePhraseMatcher", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CreateQaScorecardRevision", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).CreatePhraseMatcher(ctx, req.(*CreatePhraseMatcherRequest)) + return srv.(ContactCenterInsightsServer).CreateQaScorecardRevision(ctx, req.(*CreateQaScorecardRevisionRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_GetPhraseMatcher_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetPhraseMatcherRequest) +func _ContactCenterInsights_GetQaScorecardRevision_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetQaScorecardRevisionRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).GetPhraseMatcher(ctx, in) + return srv.(ContactCenterInsightsServer).GetQaScorecardRevision(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetPhraseMatcher", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetQaScorecardRevision", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).GetPhraseMatcher(ctx, req.(*GetPhraseMatcherRequest)) + return srv.(ContactCenterInsightsServer).GetQaScorecardRevision(ctx, req.(*GetQaScorecardRevisionRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_ListPhraseMatchers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListPhraseMatchersRequest) +func _ContactCenterInsights_TuneQaScorecardRevision_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(TuneQaScorecardRevisionRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).ListPhraseMatchers(ctx, in) + return srv.(ContactCenterInsightsServer).TuneQaScorecardRevision(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListPhraseMatchers", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/TuneQaScorecardRevision", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).ListPhraseMatchers(ctx, req.(*ListPhraseMatchersRequest)) + return srv.(ContactCenterInsightsServer).TuneQaScorecardRevision(ctx, req.(*TuneQaScorecardRevisionRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_DeletePhraseMatcher_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeletePhraseMatcherRequest) +func _ContactCenterInsights_DeployQaScorecardRevision_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeployQaScorecardRevisionRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).DeletePhraseMatcher(ctx, in) + return srv.(ContactCenterInsightsServer).DeployQaScorecardRevision(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeletePhraseMatcher", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeployQaScorecardRevision", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).DeletePhraseMatcher(ctx, req.(*DeletePhraseMatcherRequest)) + return srv.(ContactCenterInsightsServer).DeployQaScorecardRevision(ctx, req.(*DeployQaScorecardRevisionRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_UpdatePhraseMatcher_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdatePhraseMatcherRequest) +func _ContactCenterInsights_UndeployQaScorecardRevision_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UndeployQaScorecardRevisionRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).UpdatePhraseMatcher(ctx, in) + return srv.(ContactCenterInsightsServer).UndeployQaScorecardRevision(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdatePhraseMatcher", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UndeployQaScorecardRevision", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).UpdatePhraseMatcher(ctx, req.(*UpdatePhraseMatcherRequest)) + return srv.(ContactCenterInsightsServer).UndeployQaScorecardRevision(ctx, req.(*UndeployQaScorecardRevisionRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_CalculateStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CalculateStatsRequest) +func _ContactCenterInsights_DeleteQaScorecardRevision_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteQaScorecardRevisionRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).CalculateStats(ctx, in) + return srv.(ContactCenterInsightsServer).DeleteQaScorecardRevision(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CalculateStats", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteQaScorecardRevision", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).CalculateStats(ctx, req.(*CalculateStatsRequest)) + return srv.(ContactCenterInsightsServer).DeleteQaScorecardRevision(ctx, req.(*DeleteQaScorecardRevisionRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_GetSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetSettingsRequest) +func _ContactCenterInsights_ListQaScorecardRevisions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListQaScorecardRevisionsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).GetSettings(ctx, in) + return srv.(ContactCenterInsightsServer).ListQaScorecardRevisions(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetSettings", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListQaScorecardRevisions", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).GetSettings(ctx, req.(*GetSettingsRequest)) + return srv.(ContactCenterInsightsServer).ListQaScorecardRevisions(ctx, req.(*ListQaScorecardRevisionsRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_UpdateSettings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateSettingsRequest) +func _ContactCenterInsights_CreateFeedbackLabel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateFeedbackLabelRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).UpdateSettings(ctx, in) + return srv.(ContactCenterInsightsServer).CreateFeedbackLabel(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdateSettings", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CreateFeedbackLabel", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).UpdateSettings(ctx, req.(*UpdateSettingsRequest)) + return srv.(ContactCenterInsightsServer).CreateFeedbackLabel(ctx, req.(*CreateFeedbackLabelRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_GetEncryptionSpec_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetEncryptionSpecRequest) +func _ContactCenterInsights_ListFeedbackLabels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListFeedbackLabelsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).GetEncryptionSpec(ctx, in) + return srv.(ContactCenterInsightsServer).ListFeedbackLabels(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetEncryptionSpec", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListFeedbackLabels", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).GetEncryptionSpec(ctx, req.(*GetEncryptionSpecRequest)) + return srv.(ContactCenterInsightsServer).ListFeedbackLabels(ctx, req.(*ListFeedbackLabelsRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_InitializeEncryptionSpec_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(InitializeEncryptionSpecRequest) +func _ContactCenterInsights_GetFeedbackLabel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetFeedbackLabelRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).InitializeEncryptionSpec(ctx, in) + return srv.(ContactCenterInsightsServer).GetFeedbackLabel(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/InitializeEncryptionSpec", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetFeedbackLabel", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).InitializeEncryptionSpec(ctx, req.(*InitializeEncryptionSpecRequest)) + return srv.(ContactCenterInsightsServer).GetFeedbackLabel(ctx, req.(*GetFeedbackLabelRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_CreateView_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateViewRequest) +func _ContactCenterInsights_UpdateFeedbackLabel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateFeedbackLabelRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).CreateView(ctx, in) + return srv.(ContactCenterInsightsServer).UpdateFeedbackLabel(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/CreateView", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdateFeedbackLabel", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).CreateView(ctx, req.(*CreateViewRequest)) + return srv.(ContactCenterInsightsServer).UpdateFeedbackLabel(ctx, req.(*UpdateFeedbackLabelRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_GetView_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetViewRequest) +func _ContactCenterInsights_DeleteFeedbackLabel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteFeedbackLabelRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).GetView(ctx, in) + return srv.(ContactCenterInsightsServer).DeleteFeedbackLabel(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/GetView", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteFeedbackLabel", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).GetView(ctx, req.(*GetViewRequest)) + return srv.(ContactCenterInsightsServer).DeleteFeedbackLabel(ctx, req.(*DeleteFeedbackLabelRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_ListViews_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ListViewsRequest) +func _ContactCenterInsights_ListAllFeedbackLabels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListAllFeedbackLabelsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).ListViews(ctx, in) + return srv.(ContactCenterInsightsServer).ListAllFeedbackLabels(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListViews", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/ListAllFeedbackLabels", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).ListViews(ctx, req.(*ListViewsRequest)) + return srv.(ContactCenterInsightsServer).ListAllFeedbackLabels(ctx, req.(*ListAllFeedbackLabelsRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_UpdateView_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateViewRequest) +func _ContactCenterInsights_BulkUploadFeedbackLabels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(BulkUploadFeedbackLabelsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).UpdateView(ctx, in) + return srv.(ContactCenterInsightsServer).BulkUploadFeedbackLabels(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/UpdateView", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/BulkUploadFeedbackLabels", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).UpdateView(ctx, req.(*UpdateViewRequest)) + return srv.(ContactCenterInsightsServer).BulkUploadFeedbackLabels(ctx, req.(*BulkUploadFeedbackLabelsRequest)) } return interceptor(ctx, in, info, handler) } -func _ContactCenterInsights_DeleteView_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteViewRequest) +func _ContactCenterInsights_BulkDownloadFeedbackLabels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(BulkDownloadFeedbackLabelsRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(ContactCenterInsightsServer).DeleteView(ctx, in) + return srv.(ContactCenterInsightsServer).BulkDownloadFeedbackLabels(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/DeleteView", + FullMethod: "/google.cloud.contactcenterinsights.v1.ContactCenterInsights/BulkDownloadFeedbackLabels", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ContactCenterInsightsServer).DeleteView(ctx, req.(*DeleteViewRequest)) + return srv.(ContactCenterInsightsServer).BulkDownloadFeedbackLabels(ctx, req.(*BulkDownloadFeedbackLabelsRequest)) } return interceptor(ctx, in, info, handler) } @@ -10104,6 +18058,26 @@ var _ContactCenterInsights_serviceDesc = grpc.ServiceDesc{ MethodName: "UpdateSettings", Handler: _ContactCenterInsights_UpdateSettings_Handler, }, + { + MethodName: "CreateAnalysisRule", + Handler: _ContactCenterInsights_CreateAnalysisRule_Handler, + }, + { + MethodName: "GetAnalysisRule", + Handler: _ContactCenterInsights_GetAnalysisRule_Handler, + }, + { + MethodName: "ListAnalysisRules", + Handler: _ContactCenterInsights_ListAnalysisRules_Handler, + }, + { + MethodName: "UpdateAnalysisRule", + Handler: _ContactCenterInsights_UpdateAnalysisRule_Handler, + }, + { + MethodName: "DeleteAnalysisRule", + Handler: _ContactCenterInsights_DeleteAnalysisRule_Handler, + }, { MethodName: "GetEncryptionSpec", Handler: _ContactCenterInsights_GetEncryptionSpec_Handler, @@ -10132,6 +18106,110 @@ var _ContactCenterInsights_serviceDesc = grpc.ServiceDesc{ MethodName: "DeleteView", Handler: _ContactCenterInsights_DeleteView_Handler, }, + { + MethodName: "QueryMetrics", + Handler: _ContactCenterInsights_QueryMetrics_Handler, + }, + { + MethodName: "CreateQaQuestion", + Handler: _ContactCenterInsights_CreateQaQuestion_Handler, + }, + { + MethodName: "GetQaQuestion", + Handler: _ContactCenterInsights_GetQaQuestion_Handler, + }, + { + MethodName: "UpdateQaQuestion", + Handler: _ContactCenterInsights_UpdateQaQuestion_Handler, + }, + { + MethodName: "DeleteQaQuestion", + Handler: _ContactCenterInsights_DeleteQaQuestion_Handler, + }, + { + MethodName: "ListQaQuestions", + Handler: _ContactCenterInsights_ListQaQuestions_Handler, + }, + { + MethodName: "CreateQaScorecard", + Handler: _ContactCenterInsights_CreateQaScorecard_Handler, + }, + { + MethodName: "GetQaScorecard", + Handler: _ContactCenterInsights_GetQaScorecard_Handler, + }, + { + MethodName: "UpdateQaScorecard", + Handler: _ContactCenterInsights_UpdateQaScorecard_Handler, + }, + { + MethodName: "DeleteQaScorecard", + Handler: _ContactCenterInsights_DeleteQaScorecard_Handler, + }, + { + MethodName: "ListQaScorecards", + Handler: _ContactCenterInsights_ListQaScorecards_Handler, + }, + { + MethodName: "CreateQaScorecardRevision", + Handler: _ContactCenterInsights_CreateQaScorecardRevision_Handler, + }, + { + MethodName: "GetQaScorecardRevision", + Handler: _ContactCenterInsights_GetQaScorecardRevision_Handler, + }, + { + MethodName: "TuneQaScorecardRevision", + Handler: _ContactCenterInsights_TuneQaScorecardRevision_Handler, + }, + { + MethodName: "DeployQaScorecardRevision", + Handler: _ContactCenterInsights_DeployQaScorecardRevision_Handler, + }, + { + MethodName: "UndeployQaScorecardRevision", + Handler: _ContactCenterInsights_UndeployQaScorecardRevision_Handler, + }, + { + MethodName: "DeleteQaScorecardRevision", + Handler: _ContactCenterInsights_DeleteQaScorecardRevision_Handler, + }, + { + MethodName: "ListQaScorecardRevisions", + Handler: _ContactCenterInsights_ListQaScorecardRevisions_Handler, + }, + { + MethodName: "CreateFeedbackLabel", + Handler: _ContactCenterInsights_CreateFeedbackLabel_Handler, + }, + { + MethodName: "ListFeedbackLabels", + Handler: _ContactCenterInsights_ListFeedbackLabels_Handler, + }, + { + MethodName: "GetFeedbackLabel", + Handler: _ContactCenterInsights_GetFeedbackLabel_Handler, + }, + { + MethodName: "UpdateFeedbackLabel", + Handler: _ContactCenterInsights_UpdateFeedbackLabel_Handler, + }, + { + MethodName: "DeleteFeedbackLabel", + Handler: _ContactCenterInsights_DeleteFeedbackLabel_Handler, + }, + { + MethodName: "ListAllFeedbackLabels", + Handler: _ContactCenterInsights_ListAllFeedbackLabels_Handler, + }, + { + MethodName: "BulkUploadFeedbackLabels", + Handler: _ContactCenterInsights_BulkUploadFeedbackLabels_Handler, + }, + { + MethodName: "BulkDownloadFeedbackLabels", + Handler: _ContactCenterInsights_BulkDownloadFeedbackLabels_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "google/cloud/contactcenterinsights/v1/contact_center_insights.proto", diff --git a/contactcenterinsights/apiv1/contactcenterinsightspb/resources.pb.go b/contactcenterinsights/apiv1/contactcenterinsightspb/resources.pb.go index 72e5e8bb1912..c0faecba315e 100755 --- a/contactcenterinsights/apiv1/contactcenterinsightspb/resources.pb.go +++ b/contactcenterinsights/apiv1/contactcenterinsightspb/resources.pb.go @@ -38,6 +38,71 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +// Enum for the different types of issues a tuning dataset can have. +// These warnings are currentlyraised when trying to validate a dataset for +// tuning a scorecard. +type DatasetValidationWarning int32 + +const ( + // Unspecified data validation warning. + DatasetValidationWarning_DATASET_VALIDATION_WARNING_UNSPECIFIED DatasetValidationWarning = 0 + // A non-trivial percentage of the feedback labels are invalid. + DatasetValidationWarning_TOO_MANY_INVALID_FEEDBACK_LABELS DatasetValidationWarning = 1 + // The quantity of valid feedback labels provided is less than the + // recommended minimum. + DatasetValidationWarning_INSUFFICIENT_FEEDBACK_LABELS DatasetValidationWarning = 2 + // One or more of the answers have less than the recommended minimum of + // feedback labels. + DatasetValidationWarning_INSUFFICIENT_FEEDBACK_LABELS_PER_ANSWER DatasetValidationWarning = 3 + // All the labels in the dataset come from a single answer choice. + DatasetValidationWarning_ALL_FEEDBACK_LABELS_HAVE_THE_SAME_ANSWER DatasetValidationWarning = 4 +) + +// Enum value maps for DatasetValidationWarning. +var ( + DatasetValidationWarning_name = map[int32]string{ + 0: "DATASET_VALIDATION_WARNING_UNSPECIFIED", + 1: "TOO_MANY_INVALID_FEEDBACK_LABELS", + 2: "INSUFFICIENT_FEEDBACK_LABELS", + 3: "INSUFFICIENT_FEEDBACK_LABELS_PER_ANSWER", + 4: "ALL_FEEDBACK_LABELS_HAVE_THE_SAME_ANSWER", + } + DatasetValidationWarning_value = map[string]int32{ + "DATASET_VALIDATION_WARNING_UNSPECIFIED": 0, + "TOO_MANY_INVALID_FEEDBACK_LABELS": 1, + "INSUFFICIENT_FEEDBACK_LABELS": 2, + "INSUFFICIENT_FEEDBACK_LABELS_PER_ANSWER": 3, + "ALL_FEEDBACK_LABELS_HAVE_THE_SAME_ANSWER": 4, + } +) + +func (x DatasetValidationWarning) Enum() *DatasetValidationWarning { + p := new(DatasetValidationWarning) + *p = x + return p +} + +func (x DatasetValidationWarning) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DatasetValidationWarning) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[0].Descriptor() +} + +func (DatasetValidationWarning) Type() protoreflect.EnumType { + return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[0] +} + +func (x DatasetValidationWarning) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DatasetValidationWarning.Descriptor instead. +func (DatasetValidationWarning) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{0} +} + // Possible media for the conversation. type Conversation_Medium int32 @@ -75,11 +140,11 @@ func (x Conversation_Medium) String() string { } func (Conversation_Medium) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[0].Descriptor() + return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[1].Descriptor() } func (Conversation_Medium) Type() protoreflect.EnumType { - return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[0] + return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[1] } func (x Conversation_Medium) Number() protoreflect.EnumNumber { @@ -205,11 +270,11 @@ func (x Entity_Type) String() string { } func (Entity_Type) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[1].Descriptor() + return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[2].Descriptor() } func (Entity_Type) Type() protoreflect.EnumType { - return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[1] + return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[2] } func (x Entity_Type) Number() protoreflect.EnumNumber { @@ -218,7 +283,7 @@ func (x Entity_Type) Number() protoreflect.EnumNumber { // Deprecated: Use Entity_Type.Descriptor instead. func (Entity_Type) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{12, 0} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{13, 0} } // The supported types of mentions. @@ -258,11 +323,11 @@ func (x EntityMentionData_MentionType) String() string { } func (EntityMentionData_MentionType) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[2].Descriptor() + return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[3].Descriptor() } func (EntityMentionData_MentionType) Type() protoreflect.EnumType { - return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[2] + return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[3] } func (x EntityMentionData_MentionType) Number() protoreflect.EnumNumber { @@ -271,7 +336,7 @@ func (x EntityMentionData_MentionType) Number() protoreflect.EnumNumber { // Deprecated: Use EntityMentionData_MentionType.Descriptor instead. func (EntityMentionData_MentionType) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{19, 0} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{20, 0} } // State of the model. @@ -324,11 +389,11 @@ func (x IssueModel_State) String() string { } func (IssueModel_State) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[3].Descriptor() + return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[4].Descriptor() } func (IssueModel_State) Type() protoreflect.EnumType { - return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[3] + return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[4] } func (x IssueModel_State) Number() protoreflect.EnumNumber { @@ -337,7 +402,7 @@ func (x IssueModel_State) Number() protoreflect.EnumNumber { // Deprecated: Use IssueModel_State.Descriptor instead. func (IssueModel_State) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{23, 0} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{24, 0} } // Type of the model. @@ -377,11 +442,11 @@ func (x IssueModel_ModelType) String() string { } func (IssueModel_ModelType) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[4].Descriptor() + return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[5].Descriptor() } func (IssueModel_ModelType) Type() protoreflect.EnumType { - return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[4] + return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[5] } func (x IssueModel_ModelType) Number() protoreflect.EnumNumber { @@ -390,7 +455,7 @@ func (x IssueModel_ModelType) Number() protoreflect.EnumNumber { // Deprecated: Use IssueModel_ModelType.Descriptor instead. func (IssueModel_ModelType) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{23, 1} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{24, 1} } // Specifies how to combine each phrase match rule group to determine whether @@ -431,11 +496,11 @@ func (x PhraseMatcher_PhraseMatcherType) String() string { } func (PhraseMatcher_PhraseMatcherType) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[5].Descriptor() + return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[6].Descriptor() } func (PhraseMatcher_PhraseMatcherType) Type() protoreflect.EnumType { - return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[5] + return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[6] } func (x PhraseMatcher_PhraseMatcherType) Number() protoreflect.EnumNumber { @@ -444,7 +509,7 @@ func (x PhraseMatcher_PhraseMatcherType) Number() protoreflect.EnumNumber { // Deprecated: Use PhraseMatcher_PhraseMatcherType.Descriptor instead. func (PhraseMatcher_PhraseMatcherType) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{26, 0} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{27, 0} } // Specifies how to combine each phrase match rule for whether there is a @@ -485,11 +550,11 @@ func (x PhraseMatchRuleGroup_PhraseMatchRuleGroupType) String() string { } func (PhraseMatchRuleGroup_PhraseMatchRuleGroupType) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[6].Descriptor() + return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[7].Descriptor() } func (PhraseMatchRuleGroup_PhraseMatchRuleGroupType) Type() protoreflect.EnumType { - return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[6] + return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[7] } func (x PhraseMatchRuleGroup_PhraseMatchRuleGroupType) Number() protoreflect.EnumNumber { @@ -498,7 +563,7 @@ func (x PhraseMatchRuleGroup_PhraseMatchRuleGroupType) Number() protoreflect.Enu // Deprecated: Use PhraseMatchRuleGroup_PhraseMatchRuleGroupType.Descriptor instead. func (PhraseMatchRuleGroup_PhraseMatchRuleGroupType) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{27, 0} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{28, 0} } // The source of the query. @@ -539,11 +604,11 @@ func (x RuntimeAnnotation_UserInput_QuerySource) String() string { } func (RuntimeAnnotation_UserInput_QuerySource) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[7].Descriptor() + return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[8].Descriptor() } func (RuntimeAnnotation_UserInput_QuerySource) Type() protoreflect.EnumType { - return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[7] + return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[8] } func (x RuntimeAnnotation_UserInput_QuerySource) Number() protoreflect.EnumNumber { @@ -552,7 +617,7 @@ func (x RuntimeAnnotation_UserInput_QuerySource) Number() protoreflect.EnumNumbe // Deprecated: Use RuntimeAnnotation_UserInput_QuerySource.Descriptor instead. func (RuntimeAnnotation_UserInput_QuerySource) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{35, 0, 0} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{37, 0, 0} } // The correctness level of an answer. @@ -596,11 +661,11 @@ func (x AnswerFeedback_CorrectnessLevel) String() string { } func (AnswerFeedback_CorrectnessLevel) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[8].Descriptor() + return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[9].Descriptor() } func (AnswerFeedback_CorrectnessLevel) Type() protoreflect.EnumType { - return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[8] + return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[9] } func (x AnswerFeedback_CorrectnessLevel) Number() protoreflect.EnumNumber { @@ -609,7 +674,7 @@ func (x AnswerFeedback_CorrectnessLevel) Number() protoreflect.EnumNumber { // Deprecated: Use AnswerFeedback_CorrectnessLevel.Descriptor instead. func (AnswerFeedback_CorrectnessLevel) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{36, 0} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{38, 0} } // The role of the participant. @@ -657,11 +722,11 @@ func (x ConversationParticipant_Role) String() string { } func (ConversationParticipant_Role) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[9].Descriptor() + return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[10].Descriptor() } func (ConversationParticipant_Role) Type() protoreflect.EnumType { - return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[9] + return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[10] } func (x ConversationParticipant_Role) Number() protoreflect.EnumNumber { @@ -670,7 +735,7 @@ func (x ConversationParticipant_Role) Number() protoreflect.EnumNumber { // Deprecated: Use ConversationParticipant_Role.Descriptor instead. func (ConversationParticipant_Role) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{43, 0} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{45, 0} } // Summarization model to use, if `conversation_profile` is not used. @@ -710,11 +775,11 @@ func (x AnnotatorSelector_SummarizationConfig_SummarizationModel) String() strin } func (AnnotatorSelector_SummarizationConfig_SummarizationModel) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[10].Descriptor() + return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[11].Descriptor() } func (AnnotatorSelector_SummarizationConfig_SummarizationModel) Type() protoreflect.EnumType { - return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[10] + return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[11] } func (x AnnotatorSelector_SummarizationConfig_SummarizationModel) Number() protoreflect.EnumNumber { @@ -723,7 +788,183 @@ func (x AnnotatorSelector_SummarizationConfig_SummarizationModel) Number() proto // Deprecated: Use AnnotatorSelector_SummarizationConfig_SummarizationModel.Descriptor instead. func (AnnotatorSelector_SummarizationConfig_SummarizationModel) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{45, 0, 0} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{47, 0, 0} +} + +// Enum representing the set of states a scorecard revision may be in. +type QaScorecardRevision_State int32 + +const ( + // Unspecified. + QaScorecardRevision_STATE_UNSPECIFIED QaScorecardRevision_State = 0 + // The scorecard revision can be edited. + QaScorecardRevision_EDITABLE QaScorecardRevision_State = 12 + // Scorecard model training is in progress. + QaScorecardRevision_TRAINING QaScorecardRevision_State = 2 + // Scorecard revision model training failed. + QaScorecardRevision_TRAINING_FAILED QaScorecardRevision_State = 9 + // The revision can be used in analysis. + QaScorecardRevision_READY QaScorecardRevision_State = 11 + // Scorecard is being deleted. + QaScorecardRevision_DELETING QaScorecardRevision_State = 7 + // Scorecard model training was explicitly cancelled by the user. + QaScorecardRevision_TRAINING_CANCELLED QaScorecardRevision_State = 14 +) + +// Enum value maps for QaScorecardRevision_State. +var ( + QaScorecardRevision_State_name = map[int32]string{ + 0: "STATE_UNSPECIFIED", + 12: "EDITABLE", + 2: "TRAINING", + 9: "TRAINING_FAILED", + 11: "READY", + 7: "DELETING", + 14: "TRAINING_CANCELLED", + } + QaScorecardRevision_State_value = map[string]int32{ + "STATE_UNSPECIFIED": 0, + "EDITABLE": 12, + "TRAINING": 2, + "TRAINING_FAILED": 9, + "READY": 11, + "DELETING": 7, + "TRAINING_CANCELLED": 14, + } +) + +func (x QaScorecardRevision_State) Enum() *QaScorecardRevision_State { + p := new(QaScorecardRevision_State) + *p = x + return p +} + +func (x QaScorecardRevision_State) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (QaScorecardRevision_State) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[12].Descriptor() +} + +func (QaScorecardRevision_State) Type() protoreflect.EnumType { + return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[12] +} + +func (x QaScorecardRevision_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use QaScorecardRevision_State.Descriptor instead. +func (QaScorecardRevision_State) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{50, 0} +} + +// What created the answer. +type QaAnswer_AnswerSource_SourceType int32 + +const ( + // Source type is unspecified. + QaAnswer_AnswerSource_SOURCE_TYPE_UNSPECIFIED QaAnswer_AnswerSource_SourceType = 0 + // Answer was system-generated; created during an Insights analysis. + QaAnswer_AnswerSource_SYSTEM_GENERATED QaAnswer_AnswerSource_SourceType = 1 + // Answer was created by a human via manual edit. + QaAnswer_AnswerSource_MANUAL_EDIT QaAnswer_AnswerSource_SourceType = 2 +) + +// Enum value maps for QaAnswer_AnswerSource_SourceType. +var ( + QaAnswer_AnswerSource_SourceType_name = map[int32]string{ + 0: "SOURCE_TYPE_UNSPECIFIED", + 1: "SYSTEM_GENERATED", + 2: "MANUAL_EDIT", + } + QaAnswer_AnswerSource_SourceType_value = map[string]int32{ + "SOURCE_TYPE_UNSPECIFIED": 0, + "SYSTEM_GENERATED": 1, + "MANUAL_EDIT": 2, + } +) + +func (x QaAnswer_AnswerSource_SourceType) Enum() *QaAnswer_AnswerSource_SourceType { + p := new(QaAnswer_AnswerSource_SourceType) + *p = x + return p +} + +func (x QaAnswer_AnswerSource_SourceType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (QaAnswer_AnswerSource_SourceType) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[13].Descriptor() +} + +func (QaAnswer_AnswerSource_SourceType) Type() protoreflect.EnumType { + return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[13] +} + +func (x QaAnswer_AnswerSource_SourceType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use QaAnswer_AnswerSource_SourceType.Descriptor instead. +func (QaAnswer_AnswerSource_SourceType) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{51, 1, 0} +} + +// What created the score. +type QaScorecardResult_ScoreSource_SourceType int32 + +const ( + // Source type is unspecified. + QaScorecardResult_ScoreSource_SOURCE_TYPE_UNSPECIFIED QaScorecardResult_ScoreSource_SourceType = 0 + // Score is derived only from system-generated answers. + QaScorecardResult_ScoreSource_SYSTEM_GENERATED_ONLY QaScorecardResult_ScoreSource_SourceType = 1 + // Score is derived from both system-generated answers, and includes + // any manual edits if they exist. + QaScorecardResult_ScoreSource_INCLUDES_MANUAL_EDITS QaScorecardResult_ScoreSource_SourceType = 2 +) + +// Enum value maps for QaScorecardResult_ScoreSource_SourceType. +var ( + QaScorecardResult_ScoreSource_SourceType_name = map[int32]string{ + 0: "SOURCE_TYPE_UNSPECIFIED", + 1: "SYSTEM_GENERATED_ONLY", + 2: "INCLUDES_MANUAL_EDITS", + } + QaScorecardResult_ScoreSource_SourceType_value = map[string]int32{ + "SOURCE_TYPE_UNSPECIFIED": 0, + "SYSTEM_GENERATED_ONLY": 1, + "INCLUDES_MANUAL_EDITS": 2, + } +) + +func (x QaScorecardResult_ScoreSource_SourceType) Enum() *QaScorecardResult_ScoreSource_SourceType { + p := new(QaScorecardResult_ScoreSource_SourceType) + *p = x + return p +} + +func (x QaScorecardResult_ScoreSource_SourceType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (QaScorecardResult_ScoreSource_SourceType) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[14].Descriptor() +} + +func (QaScorecardResult_ScoreSource_SourceType) Type() protoreflect.EnumType { + return &file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes[14] +} + +func (x QaScorecardResult_ScoreSource_SourceType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use QaScorecardResult_ScoreSource_SourceType.Descriptor instead. +func (QaScorecardResult_ScoreSource_SourceType) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{52, 1, 0} } // The conversation resource. @@ -765,14 +1006,14 @@ type Conversation struct { // An opaque, user-specified string representing the human agent who handled // the conversation. AgentId string `protobuf:"bytes,5,opt,name=agent_id,json=agentId,proto3" json:"agent_id,omitempty"` - // A map for the user to specify any custom fields. A maximum of 20 labels per - // conversation is allowed, with a maximum of 256 characters per entry. + // A map for the user to specify any custom fields. A maximum of 100 labels + // per conversation is allowed, with a maximum of 256 characters per entry. Labels map[string]string `protobuf:"bytes,6,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Conversation metadata related to quality management. QualityMetadata *Conversation_QualityMetadata `protobuf:"bytes,24,opt,name=quality_metadata,json=qualityMetadata,proto3" json:"quality_metadata,omitempty"` - // Input only. JSON Metadata encoded as a string. + // Input only. JSON metadata encoded as a string. // This field is primarily used by Insights integrations with various telphony - // systems and must be in one of Insights' supported formats. + // systems and must be in one of Insight's supported formats. MetadataJson string `protobuf:"bytes,25,opt,name=metadata_json,json=metadataJson,proto3" json:"metadata_json,omitempty"` // Output only. The conversation transcript. Transcript *Conversation_Transcript `protobuf:"bytes,8,opt,name=transcript,proto3" json:"transcript,omitempty"` @@ -1465,6 +1706,130 @@ func (x *IssueModelResult) GetIssues() []*IssueAssignment { return nil } +// Represents a conversation, resource, and label provided by the user. +type FeedbackLabel struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Label type. + // + // Types that are assignable to LabelType: + // + // *FeedbackLabel_Label + // *FeedbackLabel_QaAnswerLabel + LabelType isFeedbackLabel_LabelType `protobuf_oneof:"label_type"` + // Immutable. Resource name of the FeedbackLabel. + // Format: + // projects/{project}/locations/{location}/conversations/{conversation}/feedbackLabels/{feedback_label} + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Resource name of the resource to be labeled. + LabeledResource string `protobuf:"bytes,3,opt,name=labeled_resource,json=labeledResource,proto3" json:"labeled_resource,omitempty"` + // Output only. Create time of the label. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Output only. Update time of the label. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` +} + +func (x *FeedbackLabel) Reset() { + *x = FeedbackLabel{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FeedbackLabel) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FeedbackLabel) ProtoMessage() {} + +func (x *FeedbackLabel) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FeedbackLabel.ProtoReflect.Descriptor instead. +func (*FeedbackLabel) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{7} +} + +func (m *FeedbackLabel) GetLabelType() isFeedbackLabel_LabelType { + if m != nil { + return m.LabelType + } + return nil +} + +func (x *FeedbackLabel) GetLabel() string { + if x, ok := x.GetLabelType().(*FeedbackLabel_Label); ok { + return x.Label + } + return "" +} + +func (x *FeedbackLabel) GetQaAnswerLabel() *QaAnswer_AnswerValue { + if x, ok := x.GetLabelType().(*FeedbackLabel_QaAnswerLabel); ok { + return x.QaAnswerLabel + } + return nil +} + +func (x *FeedbackLabel) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *FeedbackLabel) GetLabeledResource() string { + if x != nil { + return x.LabeledResource + } + return "" +} + +func (x *FeedbackLabel) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *FeedbackLabel) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +type isFeedbackLabel_LabelType interface { + isFeedbackLabel_LabelType() +} + +type FeedbackLabel_Label struct { + // String label. + Label string `protobuf:"bytes,4,opt,name=label,proto3,oneof"` +} + +type FeedbackLabel_QaAnswerLabel struct { + // QaAnswer label. + QaAnswerLabel *QaAnswer_AnswerValue `protobuf:"bytes,7,opt,name=qa_answer_label,json=qaAnswerLabel,proto3,oneof"` +} + +func (*FeedbackLabel_Label) isFeedbackLabel_LabelType() {} + +func (*FeedbackLabel_QaAnswerLabel) isFeedbackLabel_LabelType() {} + // One channel of conversation-level sentiment data. type ConversationLevelSentiment struct { state protoimpl.MessageState @@ -1480,7 +1845,7 @@ type ConversationLevelSentiment struct { func (x *ConversationLevelSentiment) Reset() { *x = ConversationLevelSentiment{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[7] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1493,7 +1858,7 @@ func (x *ConversationLevelSentiment) String() string { func (*ConversationLevelSentiment) ProtoMessage() {} func (x *ConversationLevelSentiment) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[7] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1506,7 +1871,7 @@ func (x *ConversationLevelSentiment) ProtoReflect() protoreflect.Message { // Deprecated: Use ConversationLevelSentiment.ProtoReflect.Descriptor instead. func (*ConversationLevelSentiment) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{7} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{8} } func (x *ConversationLevelSentiment) GetChannelTag() int32 { @@ -1538,7 +1903,7 @@ type ConversationLevelSilence struct { func (x *ConversationLevelSilence) Reset() { *x = ConversationLevelSilence{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[8] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1551,7 +1916,7 @@ func (x *ConversationLevelSilence) String() string { func (*ConversationLevelSilence) ProtoMessage() {} func (x *ConversationLevelSilence) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[8] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1564,7 +1929,7 @@ func (x *ConversationLevelSilence) ProtoReflect() protoreflect.Message { // Deprecated: Use ConversationLevelSilence.ProtoReflect.Descriptor instead. func (*ConversationLevelSilence) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{8} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{9} } func (x *ConversationLevelSilence) GetSilenceDuration() *durationpb.Duration { @@ -1600,7 +1965,7 @@ type IssueAssignment struct { func (x *IssueAssignment) Reset() { *x = IssueAssignment{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[9] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1613,7 +1978,7 @@ func (x *IssueAssignment) String() string { func (*IssueAssignment) ProtoMessage() {} func (x *IssueAssignment) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[9] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1626,7 +1991,7 @@ func (x *IssueAssignment) ProtoReflect() protoreflect.Message { // Deprecated: Use IssueAssignment.ProtoReflect.Descriptor instead. func (*IssueAssignment) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{9} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{10} } func (x *IssueAssignment) GetIssue() string { @@ -1681,7 +2046,7 @@ type CallAnnotation struct { func (x *CallAnnotation) Reset() { *x = CallAnnotation{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[10] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1694,7 +2059,7 @@ func (x *CallAnnotation) String() string { func (*CallAnnotation) ProtoMessage() {} func (x *CallAnnotation) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[10] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1707,7 +2072,7 @@ func (x *CallAnnotation) ProtoReflect() protoreflect.Message { // Deprecated: Use CallAnnotation.ProtoReflect.Descriptor instead. func (*CallAnnotation) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{10} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{11} } func (m *CallAnnotation) GetData() isCallAnnotation_Data { @@ -1874,7 +2239,7 @@ type AnnotationBoundary struct { func (x *AnnotationBoundary) Reset() { *x = AnnotationBoundary{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[11] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1887,7 +2252,7 @@ func (x *AnnotationBoundary) String() string { func (*AnnotationBoundary) ProtoMessage() {} func (x *AnnotationBoundary) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[11] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1900,7 +2265,7 @@ func (x *AnnotationBoundary) ProtoReflect() protoreflect.Message { // Deprecated: Use AnnotationBoundary.ProtoReflect.Descriptor instead. func (*AnnotationBoundary) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{11} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{12} } func (m *AnnotationBoundary) GetDetailedBoundary() isAnnotationBoundary_DetailedBoundary { @@ -1968,7 +2333,7 @@ type Entity struct { func (x *Entity) Reset() { *x = Entity{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[12] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1981,7 +2346,7 @@ func (x *Entity) String() string { func (*Entity) ProtoMessage() {} func (x *Entity) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[12] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1994,7 +2359,7 @@ func (x *Entity) ProtoReflect() protoreflect.Message { // Deprecated: Use Entity.ProtoReflect.Descriptor instead. func (*Entity) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{12} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{13} } func (x *Entity) GetDisplayName() string { @@ -2048,7 +2413,7 @@ type Intent struct { func (x *Intent) Reset() { *x = Intent{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[13] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2061,7 +2426,7 @@ func (x *Intent) String() string { func (*Intent) ProtoMessage() {} func (x *Intent) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[13] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2074,7 +2439,7 @@ func (x *Intent) ProtoReflect() protoreflect.Message { // Deprecated: Use Intent.ProtoReflect.Descriptor instead. func (*Intent) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{13} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{14} } func (x *Intent) GetId() string { @@ -2107,7 +2472,7 @@ type PhraseMatchData struct { func (x *PhraseMatchData) Reset() { *x = PhraseMatchData{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[14] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2120,7 +2485,7 @@ func (x *PhraseMatchData) String() string { func (*PhraseMatchData) ProtoMessage() {} func (x *PhraseMatchData) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[14] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2133,7 +2498,7 @@ func (x *PhraseMatchData) ProtoReflect() protoreflect.Message { // Deprecated: Use PhraseMatchData.ProtoReflect.Descriptor instead. func (*PhraseMatchData) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{14} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{15} } func (x *PhraseMatchData) GetPhraseMatcher() string { @@ -2164,7 +2529,7 @@ type DialogflowIntent struct { func (x *DialogflowIntent) Reset() { *x = DialogflowIntent{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[15] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2177,7 +2542,7 @@ func (x *DialogflowIntent) String() string { func (*DialogflowIntent) ProtoMessage() {} func (x *DialogflowIntent) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[15] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2190,7 +2555,7 @@ func (x *DialogflowIntent) ProtoReflect() protoreflect.Message { // Deprecated: Use DialogflowIntent.ProtoReflect.Descriptor instead. func (*DialogflowIntent) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{15} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{16} } func (x *DialogflowIntent) GetDisplayName() string { @@ -2210,7 +2575,7 @@ type InterruptionData struct { func (x *InterruptionData) Reset() { *x = InterruptionData{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[16] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2223,7 +2588,7 @@ func (x *InterruptionData) String() string { func (*InterruptionData) ProtoMessage() {} func (x *InterruptionData) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[16] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2236,7 +2601,7 @@ func (x *InterruptionData) ProtoReflect() protoreflect.Message { // Deprecated: Use InterruptionData.ProtoReflect.Descriptor instead. func (*InterruptionData) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{16} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{17} } // The data for a silence annotation. @@ -2249,7 +2614,7 @@ type SilenceData struct { func (x *SilenceData) Reset() { *x = SilenceData{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[17] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2262,7 +2627,7 @@ func (x *SilenceData) String() string { func (*SilenceData) ProtoMessage() {} func (x *SilenceData) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[17] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2275,7 +2640,7 @@ func (x *SilenceData) ProtoReflect() protoreflect.Message { // Deprecated: Use SilenceData.ProtoReflect.Descriptor instead. func (*SilenceData) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{17} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{18} } // The data for a hold annotation. @@ -2288,7 +2653,7 @@ type HoldData struct { func (x *HoldData) Reset() { *x = HoldData{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[18] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2301,7 +2666,7 @@ func (x *HoldData) String() string { func (*HoldData) ProtoMessage() {} func (x *HoldData) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[18] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2314,7 +2679,7 @@ func (x *HoldData) ProtoReflect() protoreflect.Message { // Deprecated: Use HoldData.ProtoReflect.Descriptor instead. func (*HoldData) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{18} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{19} } // The data for an entity mention annotation. @@ -2336,7 +2701,7 @@ type EntityMentionData struct { func (x *EntityMentionData) Reset() { *x = EntityMentionData{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[19] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2349,7 +2714,7 @@ func (x *EntityMentionData) String() string { func (*EntityMentionData) ProtoMessage() {} func (x *EntityMentionData) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[19] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2362,7 +2727,7 @@ func (x *EntityMentionData) ProtoReflect() protoreflect.Message { // Deprecated: Use EntityMentionData.ProtoReflect.Descriptor instead. func (*EntityMentionData) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{19} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{20} } func (x *EntityMentionData) GetEntityUniqueId() string { @@ -2403,7 +2768,7 @@ type IntentMatchData struct { func (x *IntentMatchData) Reset() { *x = IntentMatchData{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[20] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2416,7 +2781,7 @@ func (x *IntentMatchData) String() string { func (*IntentMatchData) ProtoMessage() {} func (x *IntentMatchData) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[20] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2429,7 +2794,7 @@ func (x *IntentMatchData) ProtoReflect() protoreflect.Message { // Deprecated: Use IntentMatchData.ProtoReflect.Descriptor instead. func (*IntentMatchData) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{20} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{21} } func (x *IntentMatchData) GetIntentUniqueId() string { @@ -2455,7 +2820,7 @@ type SentimentData struct { func (x *SentimentData) Reset() { *x = SentimentData{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[21] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2468,7 +2833,7 @@ func (x *SentimentData) String() string { func (*SentimentData) ProtoMessage() {} func (x *SentimentData) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[21] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2481,7 +2846,7 @@ func (x *SentimentData) ProtoReflect() protoreflect.Message { // Deprecated: Use SentimentData.ProtoReflect.Descriptor instead. func (*SentimentData) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{21} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{22} } func (x *SentimentData) GetMagnitude() float32 { @@ -2511,7 +2876,7 @@ type IssueMatchData struct { func (x *IssueMatchData) Reset() { *x = IssueMatchData{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[22] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2524,7 +2889,7 @@ func (x *IssueMatchData) String() string { func (*IssueMatchData) ProtoMessage() {} func (x *IssueMatchData) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[22] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2537,7 +2902,7 @@ func (x *IssueMatchData) ProtoReflect() protoreflect.Message { // Deprecated: Use IssueMatchData.ProtoReflect.Descriptor instead. func (*IssueMatchData) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{22} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{23} } func (x *IssueMatchData) GetIssueAssignment() *IssueAssignment { @@ -2581,7 +2946,7 @@ type IssueModel struct { func (x *IssueModel) Reset() { *x = IssueModel{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[23] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2594,7 +2959,7 @@ func (x *IssueModel) String() string { func (*IssueModel) ProtoMessage() {} func (x *IssueModel) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[23] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2607,7 +2972,7 @@ func (x *IssueModel) ProtoReflect() protoreflect.Message { // Deprecated: Use IssueModel.ProtoReflect.Descriptor instead. func (*IssueModel) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{23} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{24} } func (x *IssueModel) GetName() string { @@ -2706,7 +3071,7 @@ type Issue struct { func (x *Issue) Reset() { *x = Issue{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[24] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2719,7 +3084,7 @@ func (x *Issue) String() string { func (*Issue) ProtoMessage() {} func (x *Issue) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[24] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2732,7 +3097,7 @@ func (x *Issue) ProtoReflect() protoreflect.Message { // Deprecated: Use Issue.ProtoReflect.Descriptor instead. func (*Issue) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{24} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{25} } func (x *Issue) GetName() string { @@ -2795,7 +3160,7 @@ type IssueModelLabelStats struct { func (x *IssueModelLabelStats) Reset() { *x = IssueModelLabelStats{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[25] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2808,7 +3173,7 @@ func (x *IssueModelLabelStats) String() string { func (*IssueModelLabelStats) ProtoMessage() {} func (x *IssueModelLabelStats) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[25] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2821,7 +3186,7 @@ func (x *IssueModelLabelStats) ProtoReflect() protoreflect.Message { // Deprecated: Use IssueModelLabelStats.ProtoReflect.Descriptor instead. func (*IssueModelLabelStats) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{25} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{26} } func (x *IssueModelLabelStats) GetAnalyzedConversationsCount() int64 { @@ -2888,7 +3253,7 @@ type PhraseMatcher struct { func (x *PhraseMatcher) Reset() { *x = PhraseMatcher{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[26] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2901,7 +3266,7 @@ func (x *PhraseMatcher) String() string { func (*PhraseMatcher) ProtoMessage() {} func (x *PhraseMatcher) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[26] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2914,7 +3279,7 @@ func (x *PhraseMatcher) ProtoReflect() protoreflect.Message { // Deprecated: Use PhraseMatcher.ProtoReflect.Descriptor instead. func (*PhraseMatcher) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{26} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{27} } func (x *PhraseMatcher) GetName() string { @@ -3009,7 +3374,7 @@ type PhraseMatchRuleGroup struct { func (x *PhraseMatchRuleGroup) Reset() { *x = PhraseMatchRuleGroup{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[27] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3022,7 +3387,7 @@ func (x *PhraseMatchRuleGroup) String() string { func (*PhraseMatchRuleGroup) ProtoMessage() {} func (x *PhraseMatchRuleGroup) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[27] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3035,7 +3400,7 @@ func (x *PhraseMatchRuleGroup) ProtoReflect() protoreflect.Message { // Deprecated: Use PhraseMatchRuleGroup.ProtoReflect.Descriptor instead. func (*PhraseMatchRuleGroup) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{27} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{28} } func (x *PhraseMatchRuleGroup) GetType() PhraseMatchRuleGroup_PhraseMatchRuleGroupType { @@ -3071,7 +3436,7 @@ type PhraseMatchRule struct { func (x *PhraseMatchRule) Reset() { *x = PhraseMatchRule{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[28] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3084,7 +3449,7 @@ func (x *PhraseMatchRule) String() string { func (*PhraseMatchRule) ProtoMessage() {} func (x *PhraseMatchRule) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[28] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3097,7 +3462,7 @@ func (x *PhraseMatchRule) ProtoReflect() protoreflect.Message { // Deprecated: Use PhraseMatchRule.ProtoReflect.Descriptor instead. func (*PhraseMatchRule) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{28} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{29} } func (x *PhraseMatchRule) GetQuery() string { @@ -3138,7 +3503,7 @@ type PhraseMatchRuleConfig struct { func (x *PhraseMatchRuleConfig) Reset() { *x = PhraseMatchRuleConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[29] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3151,7 +3516,7 @@ func (x *PhraseMatchRuleConfig) String() string { func (*PhraseMatchRuleConfig) ProtoMessage() {} func (x *PhraseMatchRuleConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[29] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3164,7 +3529,7 @@ func (x *PhraseMatchRuleConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use PhraseMatchRuleConfig.ProtoReflect.Descriptor instead. func (*PhraseMatchRuleConfig) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{29} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{30} } func (m *PhraseMatchRuleConfig) GetConfig() isPhraseMatchRuleConfig_Config { @@ -3205,7 +3570,7 @@ type ExactMatchConfig struct { func (x *ExactMatchConfig) Reset() { *x = ExactMatchConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[30] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3218,7 +3583,7 @@ func (x *ExactMatchConfig) String() string { func (*ExactMatchConfig) ProtoMessage() {} func (x *ExactMatchConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[30] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3231,7 +3596,7 @@ func (x *ExactMatchConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ExactMatchConfig.ProtoReflect.Descriptor instead. func (*ExactMatchConfig) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{30} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{31} } func (x *ExactMatchConfig) GetCaseSensitive() bool { @@ -3306,7 +3671,7 @@ type Settings struct { func (x *Settings) Reset() { *x = Settings{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[31] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3319,7 +3684,7 @@ func (x *Settings) String() string { func (*Settings) ProtoMessage() {} func (x *Settings) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[31] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3332,7 +3697,7 @@ func (x *Settings) ProtoReflect() protoreflect.Message { // Deprecated: Use Settings.ProtoReflect.Descriptor instead. func (*Settings) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{31} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{32} } func (x *Settings) GetName() string { @@ -3398,8 +3763,134 @@ func (x *Settings) GetSpeechConfig() *SpeechConfig { return nil } +// The CCAI Insights project wide analysis rule. This rule will be applied to +// all conversations that match the filter defined in the rule. For a +// conversation matches the filter, the annotators specified in the rule will be +// run. If a conversation matches multiple rules, a union of all the annotators +// will be run. One project can have multiple analysis rules. +type AnalysisRule struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Identifier. The resource name of the analysis rule. + // Format: + // projects/{project}/locations/{location}/analysisRules/{analysis_rule} + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Output only. The time at which this analysis rule was created. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Output only. The most recent time at which this analysis rule was updated. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + // Display Name of the analysis rule. + DisplayName *string `protobuf:"bytes,4,opt,name=display_name,json=displayName,proto3,oneof" json:"display_name,omitempty"` + // Filter for the conversations that should apply this analysis + // rule. An empty filter means this analysis rule applies to all + // conversations. + ConversationFilter string `protobuf:"bytes,5,opt,name=conversation_filter,json=conversationFilter,proto3" json:"conversation_filter,omitempty"` + // Selector of annotators to run and the phrase matchers to use for + // conversations that matches the conversation_filter. If not specified, NO + // annotators will be run. + AnnotatorSelector *AnnotatorSelector `protobuf:"bytes,6,opt,name=annotator_selector,json=annotatorSelector,proto3" json:"annotator_selector,omitempty"` + // Percentage of conversations that we should apply this analysis setting + // automatically, between [0, 1]. For example, 0.1 means 10%. Conversations + // are sampled in a determenestic way. The original runtime_percentage & + // upload percentage will be replaced by defining filters on the conversation. + AnalysisPercentage float64 `protobuf:"fixed64,7,opt,name=analysis_percentage,json=analysisPercentage,proto3" json:"analysis_percentage,omitempty"` + // If true, apply this rule to conversations. Otherwise, this rule is + // inactive and saved as a draft. + Active bool `protobuf:"varint,8,opt,name=active,proto3" json:"active,omitempty"` +} + +func (x *AnalysisRule) Reset() { + *x = AnalysisRule{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AnalysisRule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnalysisRule) ProtoMessage() {} + +func (x *AnalysisRule) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AnalysisRule.ProtoReflect.Descriptor instead. +func (*AnalysisRule) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{33} +} + +func (x *AnalysisRule) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *AnalysisRule) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *AnalysisRule) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +func (x *AnalysisRule) GetDisplayName() string { + if x != nil && x.DisplayName != nil { + return *x.DisplayName + } + return "" +} + +func (x *AnalysisRule) GetConversationFilter() string { + if x != nil { + return x.ConversationFilter + } + return "" +} + +func (x *AnalysisRule) GetAnnotatorSelector() *AnnotatorSelector { + if x != nil { + return x.AnnotatorSelector + } + return nil +} + +func (x *AnalysisRule) GetAnalysisPercentage() float64 { + if x != nil { + return x.AnalysisPercentage + } + return 0 +} + +func (x *AnalysisRule) GetActive() bool { + if x != nil { + return x.Active + } + return false +} + // A customer-managed encryption key specification that can be applied to all -// created resources (e.g. Conversation). +// created resources (e.g. `Conversation`). type EncryptionSpec struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3411,8 +3902,8 @@ type EncryptionSpec struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Required. The name of customer-managed encryption key that is used to // secure a resource and its sub-resources. If empty, the resource is secured - // by the default Google encryption key. Only the key in the same location as - // this resource is allowed to be used for encryption. Format: + // by our default encryption key. Only the key in the same location as this + // resource is allowed to be used for encryption. Format: // `projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{key}` KmsKey string `protobuf:"bytes,2,opt,name=kms_key,json=kmsKey,proto3" json:"kms_key,omitempty"` } @@ -3420,7 +3911,7 @@ type EncryptionSpec struct { func (x *EncryptionSpec) Reset() { *x = EncryptionSpec{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[32] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3433,7 +3924,7 @@ func (x *EncryptionSpec) String() string { func (*EncryptionSpec) ProtoMessage() {} func (x *EncryptionSpec) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[32] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3446,7 +3937,7 @@ func (x *EncryptionSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use EncryptionSpec.ProtoReflect.Descriptor instead. func (*EncryptionSpec) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{32} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{34} } func (x *EncryptionSpec) GetName() string { @@ -3488,7 +3979,7 @@ type RedactionConfig struct { func (x *RedactionConfig) Reset() { *x = RedactionConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[33] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3501,7 +3992,7 @@ func (x *RedactionConfig) String() string { func (*RedactionConfig) ProtoMessage() {} func (x *RedactionConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[33] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3514,7 +4005,7 @@ func (x *RedactionConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use RedactionConfig.ProtoReflect.Descriptor instead. func (*RedactionConfig) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{33} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{35} } func (x *RedactionConfig) GetDeidentifyTemplate() string { @@ -3550,7 +4041,7 @@ type SpeechConfig struct { func (x *SpeechConfig) Reset() { *x = SpeechConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[34] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3563,7 +4054,7 @@ func (x *SpeechConfig) String() string { func (*SpeechConfig) ProtoMessage() {} func (x *SpeechConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[34] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3576,7 +4067,7 @@ func (x *SpeechConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use SpeechConfig.ProtoReflect.Descriptor instead. func (*SpeechConfig) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{34} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{36} } func (x *SpeechConfig) GetSpeechRecognizer() string { @@ -3622,7 +4113,7 @@ type RuntimeAnnotation struct { func (x *RuntimeAnnotation) Reset() { *x = RuntimeAnnotation{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[35] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3635,7 +4126,7 @@ func (x *RuntimeAnnotation) String() string { func (*RuntimeAnnotation) ProtoMessage() {} func (x *RuntimeAnnotation) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[35] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3648,7 +4139,7 @@ func (x *RuntimeAnnotation) ProtoReflect() protoreflect.Message { // Deprecated: Use RuntimeAnnotation.ProtoReflect.Descriptor instead. func (*RuntimeAnnotation) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{35} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{37} } func (m *RuntimeAnnotation) GetData() isRuntimeAnnotation_Data { @@ -3807,7 +4298,7 @@ type AnswerFeedback struct { func (x *AnswerFeedback) Reset() { *x = AnswerFeedback{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[36] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3820,7 +4311,7 @@ func (x *AnswerFeedback) String() string { func (*AnswerFeedback) ProtoMessage() {} func (x *AnswerFeedback) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[36] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3833,7 +4324,7 @@ func (x *AnswerFeedback) ProtoReflect() protoreflect.Message { // Deprecated: Use AnswerFeedback.ProtoReflect.Descriptor instead. func (*AnswerFeedback) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{36} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{38} } func (x *AnswerFeedback) GetCorrectnessLevel() AnswerFeedback_CorrectnessLevel { @@ -3887,7 +4378,7 @@ type ArticleSuggestionData struct { func (x *ArticleSuggestionData) Reset() { *x = ArticleSuggestionData{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[37] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3900,7 +4391,7 @@ func (x *ArticleSuggestionData) String() string { func (*ArticleSuggestionData) ProtoMessage() {} func (x *ArticleSuggestionData) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[37] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3913,7 +4404,7 @@ func (x *ArticleSuggestionData) ProtoReflect() protoreflect.Message { // Deprecated: Use ArticleSuggestionData.ProtoReflect.Descriptor instead. func (*ArticleSuggestionData) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{37} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{39} } func (x *ArticleSuggestionData) GetTitle() string { @@ -3988,7 +4479,7 @@ type FaqAnswerData struct { func (x *FaqAnswerData) Reset() { *x = FaqAnswerData{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[38] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4001,7 +4492,7 @@ func (x *FaqAnswerData) String() string { func (*FaqAnswerData) ProtoMessage() {} func (x *FaqAnswerData) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[38] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4014,7 +4505,7 @@ func (x *FaqAnswerData) ProtoReflect() protoreflect.Message { // Deprecated: Use FaqAnswerData.ProtoReflect.Descriptor instead. func (*FaqAnswerData) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{38} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{40} } func (x *FaqAnswerData) GetAnswer() string { @@ -4083,7 +4574,7 @@ type SmartReplyData struct { func (x *SmartReplyData) Reset() { *x = SmartReplyData{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[39] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4096,7 +4587,7 @@ func (x *SmartReplyData) String() string { func (*SmartReplyData) ProtoMessage() {} func (x *SmartReplyData) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[39] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4109,7 +4600,7 @@ func (x *SmartReplyData) ProtoReflect() protoreflect.Message { // Deprecated: Use SmartReplyData.ProtoReflect.Descriptor instead. func (*SmartReplyData) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{39} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{41} } func (x *SmartReplyData) GetReply() string { @@ -4164,7 +4655,7 @@ type SmartComposeSuggestionData struct { func (x *SmartComposeSuggestionData) Reset() { *x = SmartComposeSuggestionData{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[40] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4177,7 +4668,7 @@ func (x *SmartComposeSuggestionData) String() string { func (*SmartComposeSuggestionData) ProtoMessage() {} func (x *SmartComposeSuggestionData) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[40] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4190,7 +4681,7 @@ func (x *SmartComposeSuggestionData) ProtoReflect() protoreflect.Message { // Deprecated: Use SmartComposeSuggestionData.ProtoReflect.Descriptor instead. func (*SmartComposeSuggestionData) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{40} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{42} } func (x *SmartComposeSuggestionData) GetSuggestion() string { @@ -4238,7 +4729,7 @@ type DialogflowInteractionData struct { func (x *DialogflowInteractionData) Reset() { *x = DialogflowInteractionData{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[41] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4251,7 +4742,7 @@ func (x *DialogflowInteractionData) String() string { func (*DialogflowInteractionData) ProtoMessage() {} func (x *DialogflowInteractionData) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[41] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4264,7 +4755,7 @@ func (x *DialogflowInteractionData) ProtoReflect() protoreflect.Message { // Deprecated: Use DialogflowInteractionData.ProtoReflect.Descriptor instead. func (*DialogflowInteractionData) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{41} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{43} } func (x *DialogflowInteractionData) GetDialogflowIntentId() string { @@ -4311,7 +4802,7 @@ type ConversationSummarizationSuggestionData struct { func (x *ConversationSummarizationSuggestionData) Reset() { *x = ConversationSummarizationSuggestionData{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[42] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4324,7 +4815,7 @@ func (x *ConversationSummarizationSuggestionData) String() string { func (*ConversationSummarizationSuggestionData) ProtoMessage() {} func (x *ConversationSummarizationSuggestionData) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[42] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4337,7 +4828,7 @@ func (x *ConversationSummarizationSuggestionData) ProtoReflect() protoreflect.Me // Deprecated: Use ConversationSummarizationSuggestionData.ProtoReflect.Descriptor instead. func (*ConversationSummarizationSuggestionData) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{42} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{44} } func (x *ConversationSummarizationSuggestionData) GetText() string { @@ -4408,7 +4899,7 @@ type ConversationParticipant struct { func (x *ConversationParticipant) Reset() { *x = ConversationParticipant{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[43] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4421,7 +4912,7 @@ func (x *ConversationParticipant) String() string { func (*ConversationParticipant) ProtoMessage() {} func (x *ConversationParticipant) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[43] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4434,7 +4925,7 @@ func (x *ConversationParticipant) ProtoReflect() protoreflect.Message { // Deprecated: Use ConversationParticipant.ProtoReflect.Descriptor instead. func (*ConversationParticipant) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{43} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{45} } func (m *ConversationParticipant) GetParticipant() isConversationParticipant_Participant { @@ -4522,7 +5013,7 @@ type View struct { func (x *View) Reset() { *x = View{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[44] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4535,7 +5026,7 @@ func (x *View) String() string { func (*View) ProtoMessage() {} func (x *View) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[44] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4548,7 +5039,7 @@ func (x *View) ProtoReflect() protoreflect.Message { // Deprecated: Use View.ProtoReflect.Descriptor instead. func (*View) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{44} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{46} } func (x *View) GetName() string { @@ -4623,12 +5114,16 @@ type AnnotatorSelector struct { RunSummarizationAnnotator bool `protobuf:"varint,9,opt,name=run_summarization_annotator,json=runSummarizationAnnotator,proto3" json:"run_summarization_annotator,omitempty"` // Configuration for the summarization annotator. SummarizationConfig *AnnotatorSelector_SummarizationConfig `protobuf:"bytes,11,opt,name=summarization_config,json=summarizationConfig,proto3" json:"summarization_config,omitempty"` + // Whether to run the QA annotator. + RunQaAnnotator bool `protobuf:"varint,12,opt,name=run_qa_annotator,json=runQaAnnotator,proto3" json:"run_qa_annotator,omitempty"` + // Configuration for the QA annotator. + QaConfig *AnnotatorSelector_QaConfig `protobuf:"bytes,13,opt,name=qa_config,json=qaConfig,proto3" json:"qa_config,omitempty"` } func (x *AnnotatorSelector) Reset() { *x = AnnotatorSelector{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[45] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4641,7 +5136,7 @@ func (x *AnnotatorSelector) String() string { func (*AnnotatorSelector) ProtoMessage() {} func (x *AnnotatorSelector) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[45] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4654,7 +5149,7 @@ func (x *AnnotatorSelector) ProtoReflect() protoreflect.Message { // Deprecated: Use AnnotatorSelector.ProtoReflect.Descriptor instead. func (*AnnotatorSelector) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{45} + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{47} } func (x *AnnotatorSelector) GetRunInterruptionAnnotator() bool { @@ -4734,35 +5229,76 @@ func (x *AnnotatorSelector) GetSummarizationConfig() *AnnotatorSelector_Summariz return nil } -// Call-specific metadata. -type Conversation_CallMetadata struct { +func (x *AnnotatorSelector) GetRunQaAnnotator() bool { + if x != nil { + return x.RunQaAnnotator + } + return false +} + +func (x *AnnotatorSelector) GetQaConfig() *AnnotatorSelector_QaConfig { + if x != nil { + return x.QaConfig + } + return nil +} + +// A single question to be scored by the Insights QA feature. +type QaQuestion struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The audio channel that contains the customer. - CustomerChannel int32 `protobuf:"varint,1,opt,name=customer_channel,json=customerChannel,proto3" json:"customer_channel,omitempty"` - // The audio channel that contains the agent. - AgentChannel int32 `protobuf:"varint,2,opt,name=agent_channel,json=agentChannel,proto3" json:"agent_channel,omitempty"` -} - -func (x *Conversation_CallMetadata) Reset() { - *x = Conversation_CallMetadata{} + // Identifier. The resource name of the question. + // Format: + // projects/{project}/locations/{location}/qaScorecards/{qa_scorecard}/revisions/{revision}/qaQuestions/{qa_question} + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Short, descriptive string, used in the UI where it's not practical + // to display the full question body. E.g., "Greeting". + Abbreviation string `protobuf:"bytes,2,opt,name=abbreviation,proto3" json:"abbreviation,omitempty"` + // Output only. The time at which this question was created. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Output only. The most recent time at which the question was updated. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + // Question text. E.g., "Did the agent greet the customer?" + QuestionBody string `protobuf:"bytes,5,opt,name=question_body,json=questionBody,proto3" json:"question_body,omitempty"` + // Instructions describing how to determine the answer. + AnswerInstructions string `protobuf:"bytes,9,opt,name=answer_instructions,json=answerInstructions,proto3" json:"answer_instructions,omitempty"` + // A list of valid answers to the question, which the LLM must choose from. + AnswerChoices []*QaQuestion_AnswerChoice `protobuf:"bytes,6,rep,name=answer_choices,json=answerChoices,proto3" json:"answer_choices,omitempty"` + // User-defined list of arbitrary tags for the question. Used for + // grouping/organization and for weighting the score of each question. + Tags []string `protobuf:"bytes,7,rep,name=tags,proto3" json:"tags,omitempty"` + // Defines the order of the question within its parent scorecard revision. + Order int32 `protobuf:"varint,8,opt,name=order,proto3" json:"order,omitempty"` + // Metrics of the underlying tuned LLM over a holdout/test set while fine + // tuning the underlying LLM for the given question. This field will only be + // populated if and only if the question is part of a scorecard revision that + // has been tuned. + Metrics *QaQuestion_Metrics `protobuf:"bytes,10,opt,name=metrics,proto3" json:"metrics,omitempty"` + // Metadata about the tuning operation for the question.This field will only + // be populated if and only if the question is part of a scorecard revision + // that has been tuned. + TuningMetadata *QaQuestion_TuningMetadata `protobuf:"bytes,11,opt,name=tuning_metadata,json=tuningMetadata,proto3" json:"tuning_metadata,omitempty"` +} + +func (x *QaQuestion) Reset() { + *x = QaQuestion{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[46] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Conversation_CallMetadata) String() string { +func (x *QaQuestion) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Conversation_CallMetadata) ProtoMessage() {} +func (*QaQuestion) ProtoMessage() {} -func (x *Conversation_CallMetadata) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[46] +func (x *QaQuestion) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4773,58 +5309,126 @@ func (x *Conversation_CallMetadata) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Conversation_CallMetadata.ProtoReflect.Descriptor instead. -func (*Conversation_CallMetadata) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{0, 0} +// Deprecated: Use QaQuestion.ProtoReflect.Descriptor instead. +func (*QaQuestion) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{48} } -func (x *Conversation_CallMetadata) GetCustomerChannel() int32 { +func (x *QaQuestion) GetName() string { if x != nil { - return x.CustomerChannel + return x.Name } - return 0 + return "" } -func (x *Conversation_CallMetadata) GetAgentChannel() int32 { +func (x *QaQuestion) GetAbbreviation() string { if x != nil { - return x.AgentChannel + return x.Abbreviation + } + return "" +} + +func (x *QaQuestion) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *QaQuestion) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +func (x *QaQuestion) GetQuestionBody() string { + if x != nil { + return x.QuestionBody + } + return "" +} + +func (x *QaQuestion) GetAnswerInstructions() string { + if x != nil { + return x.AnswerInstructions + } + return "" +} + +func (x *QaQuestion) GetAnswerChoices() []*QaQuestion_AnswerChoice { + if x != nil { + return x.AnswerChoices + } + return nil +} + +func (x *QaQuestion) GetTags() []string { + if x != nil { + return x.Tags + } + return nil +} + +func (x *QaQuestion) GetOrder() int32 { + if x != nil { + return x.Order } return 0 } -// Conversation metadata related to quality management. -type Conversation_QualityMetadata struct { +func (x *QaQuestion) GetMetrics() *QaQuestion_Metrics { + if x != nil { + return x.Metrics + } + return nil +} + +func (x *QaQuestion) GetTuningMetadata() *QaQuestion_TuningMetadata { + if x != nil { + return x.TuningMetadata + } + return nil +} + +// A QaScorecard represents a collection of questions to be scored during +// analysis. +type QaScorecard struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // An arbitrary integer value indicating the customer's satisfaction rating. - CustomerSatisfactionRating int32 `protobuf:"varint,1,opt,name=customer_satisfaction_rating,json=customerSatisfactionRating,proto3" json:"customer_satisfaction_rating,omitempty"` - // The amount of time the customer waited to connect with an agent. - WaitDuration *durationpb.Duration `protobuf:"bytes,2,opt,name=wait_duration,json=waitDuration,proto3" json:"wait_duration,omitempty"` - // An arbitrary string value specifying the menu path the customer took. - MenuPath string `protobuf:"bytes,3,opt,name=menu_path,json=menuPath,proto3" json:"menu_path,omitempty"` - // Information about agents involved in the call. - AgentInfo []*Conversation_QualityMetadata_AgentInfo `protobuf:"bytes,4,rep,name=agent_info,json=agentInfo,proto3" json:"agent_info,omitempty"` + // Identifier. The scorecard name. + // Format: + // projects/{project}/locations/{location}/qaScorecards/{qa_scorecard} + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // The user-specified display name of the scorecard. + DisplayName string `protobuf:"bytes,7,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // A text description explaining the intent of the scorecard. + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + // Output only. The time at which this scorecard was created. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Output only. The most recent time at which the scorecard was updated. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` } -func (x *Conversation_QualityMetadata) Reset() { - *x = Conversation_QualityMetadata{} +func (x *QaScorecard) Reset() { + *x = QaScorecard{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[47] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Conversation_QualityMetadata) String() string { +func (x *QaScorecard) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Conversation_QualityMetadata) ProtoMessage() {} +func (*QaScorecard) ProtoMessage() {} -func (x *Conversation_QualityMetadata) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[47] +func (x *QaScorecard) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4835,66 +5439,90 @@ func (x *Conversation_QualityMetadata) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Conversation_QualityMetadata.ProtoReflect.Descriptor instead. -func (*Conversation_QualityMetadata) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{0, 1} +// Deprecated: Use QaScorecard.ProtoReflect.Descriptor instead. +func (*QaScorecard) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{49} } -func (x *Conversation_QualityMetadata) GetCustomerSatisfactionRating() int32 { +func (x *QaScorecard) GetName() string { if x != nil { - return x.CustomerSatisfactionRating + return x.Name } - return 0 + return "" } -func (x *Conversation_QualityMetadata) GetWaitDuration() *durationpb.Duration { +func (x *QaScorecard) GetDisplayName() string { if x != nil { - return x.WaitDuration + return x.DisplayName } - return nil + return "" } -func (x *Conversation_QualityMetadata) GetMenuPath() string { +func (x *QaScorecard) GetDescription() string { if x != nil { - return x.MenuPath + return x.Description } return "" } -func (x *Conversation_QualityMetadata) GetAgentInfo() []*Conversation_QualityMetadata_AgentInfo { +func (x *QaScorecard) GetCreateTime() *timestamppb.Timestamp { if x != nil { - return x.AgentInfo + return x.CreateTime } return nil } -// A message representing the transcript of a conversation. -type Conversation_Transcript struct { +func (x *QaScorecard) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +// A revision of a QaScorecard. +// +// Modifying published scorecard fields would invalidate existing scorecard +// results — the questions may have changed, or the score weighting will make +// existing scores impossible to understand. So changes must create a new +// revision, rather than modifying the existing resource. +type QaScorecardRevision struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // A list of sequential transcript segments that comprise the conversation. - TranscriptSegments []*Conversation_Transcript_TranscriptSegment `protobuf:"bytes,1,rep,name=transcript_segments,json=transcriptSegments,proto3" json:"transcript_segments,omitempty"` + // Identifier. The name of the scorecard revision. + // Format: + // projects/{project}/locations/{location}/qaScorecards/{qa_scorecard}/revisions/{revision} + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // The snapshot of the scorecard at the time of this revision's creation. + Snapshot *QaScorecard `protobuf:"bytes,2,opt,name=snapshot,proto3" json:"snapshot,omitempty"` + // Output only. The timestamp that the revision was created. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Output only. Alternative IDs for this revision of the scorecard, e.g., + // `latest`. + AlternateIds []string `protobuf:"bytes,4,rep,name=alternate_ids,json=alternateIds,proto3" json:"alternate_ids,omitempty"` + // Output only. State of the scorecard revision, indicating whether it's ready + // to be used in analysis. + State QaScorecardRevision_State `protobuf:"varint,5,opt,name=state,proto3,enum=google.cloud.contactcenterinsights.v1.QaScorecardRevision_State" json:"state,omitempty"` } -func (x *Conversation_Transcript) Reset() { - *x = Conversation_Transcript{} +func (x *QaScorecardRevision) Reset() { + *x = QaScorecardRevision{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[48] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Conversation_Transcript) String() string { +func (x *QaScorecardRevision) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Conversation_Transcript) ProtoMessage() {} +func (*QaScorecardRevision) ProtoMessage() {} -func (x *Conversation_Transcript) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[48] +func (x *QaScorecardRevision) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4905,37 +5533,70 @@ func (x *Conversation_Transcript) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Conversation_Transcript.ProtoReflect.Descriptor instead. -func (*Conversation_Transcript) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{0, 2} +// Deprecated: Use QaScorecardRevision.ProtoReflect.Descriptor instead. +func (*QaScorecardRevision) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{50} } -func (x *Conversation_Transcript) GetTranscriptSegments() []*Conversation_Transcript_TranscriptSegment { +func (x *QaScorecardRevision) GetName() string { if x != nil { - return x.TranscriptSegments + return x.Name + } + return "" +} + +func (x *QaScorecardRevision) GetSnapshot() *QaScorecard { + if x != nil { + return x.Snapshot } return nil } -// Information about an agent involved in the conversation. -type Conversation_QualityMetadata_AgentInfo struct { +func (x *QaScorecardRevision) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *QaScorecardRevision) GetAlternateIds() []string { + if x != nil { + return x.AlternateIds + } + return nil +} + +func (x *QaScorecardRevision) GetState() QaScorecardRevision_State { + if x != nil { + return x.State + } + return QaScorecardRevision_STATE_UNSPECIFIED +} + +// An answer to a QaQuestion. +type QaAnswer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // A user-specified string representing the agent. - AgentId string `protobuf:"bytes,1,opt,name=agent_id,json=agentId,proto3" json:"agent_id,omitempty"` - // The agent's name. - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - // A user-specified string representing the agent's team. - Team string `protobuf:"bytes,3,opt,name=team,proto3" json:"team,omitempty"` - // A user-provided string indicating the outcome of the agent's segment of - // the call. - DispositionCode string `protobuf:"bytes,4,opt,name=disposition_code,json=dispositionCode,proto3" json:"disposition_code,omitempty"` -} - -func (x *Conversation_QualityMetadata_AgentInfo) Reset() { - *x = Conversation_QualityMetadata_AgentInfo{} + // The QaQuestion answered by this answer. + QaQuestion string `protobuf:"bytes,7,opt,name=qa_question,json=qaQuestion,proto3" json:"qa_question,omitempty"` + // The conversation the answer applies to. + Conversation string `protobuf:"bytes,2,opt,name=conversation,proto3" json:"conversation,omitempty"` + // Question text. E.g., "Did the agent greet the customer?" + QuestionBody string `protobuf:"bytes,6,opt,name=question_body,json=questionBody,proto3" json:"question_body,omitempty"` + // The main answer value, incorporating any manual edits if they exist. + AnswerValue *QaAnswer_AnswerValue `protobuf:"bytes,3,opt,name=answer_value,json=answerValue,proto3" json:"answer_value,omitempty"` + // User-defined list of arbitrary tags. Matches the value from + // QaScorecard.ScorecardQuestion.tags. Used for grouping/organization and + // for weighting the score of each answer. + Tags []string `protobuf:"bytes,5,rep,name=tags,proto3" json:"tags,omitempty"` + // List of all individual answers given to the question. + AnswerSources []*QaAnswer_AnswerSource `protobuf:"bytes,8,rep,name=answer_sources,json=answerSources,proto3" json:"answer_sources,omitempty"` +} + +func (x *QaAnswer) Reset() { + *x = QaAnswer{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4943,13 +5604,13 @@ func (x *Conversation_QualityMetadata_AgentInfo) Reset() { } } -func (x *Conversation_QualityMetadata_AgentInfo) String() string { +func (x *QaAnswer) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Conversation_QualityMetadata_AgentInfo) ProtoMessage() {} +func (*QaAnswer) ProtoMessage() {} -func (x *Conversation_QualityMetadata_AgentInfo) ProtoReflect() protoreflect.Message { +func (x *QaAnswer) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4961,73 +5622,91 @@ func (x *Conversation_QualityMetadata_AgentInfo) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use Conversation_QualityMetadata_AgentInfo.ProtoReflect.Descriptor instead. -func (*Conversation_QualityMetadata_AgentInfo) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{0, 1, 0} +// Deprecated: Use QaAnswer.ProtoReflect.Descriptor instead. +func (*QaAnswer) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{51} } -func (x *Conversation_QualityMetadata_AgentInfo) GetAgentId() string { +func (x *QaAnswer) GetQaQuestion() string { if x != nil { - return x.AgentId + return x.QaQuestion } return "" } -func (x *Conversation_QualityMetadata_AgentInfo) GetDisplayName() string { +func (x *QaAnswer) GetConversation() string { if x != nil { - return x.DisplayName + return x.Conversation } return "" } -func (x *Conversation_QualityMetadata_AgentInfo) GetTeam() string { +func (x *QaAnswer) GetQuestionBody() string { if x != nil { - return x.Team + return x.QuestionBody } return "" } -func (x *Conversation_QualityMetadata_AgentInfo) GetDispositionCode() string { +func (x *QaAnswer) GetAnswerValue() *QaAnswer_AnswerValue { if x != nil { - return x.DispositionCode + return x.AnswerValue } - return "" + return nil } -// A segment of a full transcript. -type Conversation_Transcript_TranscriptSegment struct { +func (x *QaAnswer) GetTags() []string { + if x != nil { + return x.Tags + } + return nil +} + +func (x *QaAnswer) GetAnswerSources() []*QaAnswer_AnswerSource { + if x != nil { + return x.AnswerSources + } + return nil +} + +// The results of scoring a single conversation against a QaScorecard. Contains +// a collection of QaAnswers and aggregate score. +type QaScorecardResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The time that the message occurred, if provided. - MessageTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=message_time,json=messageTime,proto3" json:"message_time,omitempty"` - // The text of this segment. - Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` - // A confidence estimate between 0.0 and 1.0 of the fidelity of this - // segment. A default value of 0.0 indicates that the value is unset. - Confidence float32 `protobuf:"fixed32,2,opt,name=confidence,proto3" json:"confidence,omitempty"` - // A list of the word-specific information for each word in the segment. - Words []*Conversation_Transcript_TranscriptSegment_WordInfo `protobuf:"bytes,3,rep,name=words,proto3" json:"words,omitempty"` - // The language code of this segment as a - // [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. - // Example: "en-US". - LanguageCode string `protobuf:"bytes,4,opt,name=language_code,json=languageCode,proto3" json:"language_code,omitempty"` - // For conversations derived from multi-channel audio, this is the channel - // number corresponding to the audio from that channel. For - // audioChannelCount = N, its output values can range from '1' to 'N'. A - // channel tag of 0 indicates that the audio is mono. - ChannelTag int32 `protobuf:"varint,5,opt,name=channel_tag,json=channelTag,proto3" json:"channel_tag,omitempty"` - // The participant of this segment. - SegmentParticipant *ConversationParticipant `protobuf:"bytes,9,opt,name=segment_participant,json=segmentParticipant,proto3" json:"segment_participant,omitempty"` - // CCAI metadata relating to the current transcript segment. - DialogflowSegmentMetadata *Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata `protobuf:"bytes,10,opt,name=dialogflow_segment_metadata,json=dialogflowSegmentMetadata,proto3" json:"dialogflow_segment_metadata,omitempty"` - // The sentiment for this transcript segment. - Sentiment *SentimentData `protobuf:"bytes,11,opt,name=sentiment,proto3" json:"sentiment,omitempty"` -} - -func (x *Conversation_Transcript_TranscriptSegment) Reset() { - *x = Conversation_Transcript_TranscriptSegment{} + // Identifier. The name of the scorecard result. + // Format: + // projects/{project}/locations/{location}/qaScorecardResults/{qa_scorecard_result} + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // The QaScorecardRevision scored by this result. + QaScorecardRevision string `protobuf:"bytes,2,opt,name=qa_scorecard_revision,json=qaScorecardRevision,proto3" json:"qa_scorecard_revision,omitempty"` + // The conversation scored by this result. + Conversation string `protobuf:"bytes,3,opt,name=conversation,proto3" json:"conversation,omitempty"` + // Output only. The timestamp that the revision was created. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // ID of the agent that handled the conversation. + AgentId string `protobuf:"bytes,5,opt,name=agent_id,json=agentId,proto3" json:"agent_id,omitempty"` + // Set of QaAnswers represented in the result. + QaAnswers []*QaAnswer `protobuf:"bytes,6,rep,name=qa_answers,json=qaAnswers,proto3" json:"qa_answers,omitempty"` + // The overall numerical score of the result, incorporating any manual edits + // if they exist. + Score *float64 `protobuf:"fixed64,7,opt,name=score,proto3,oneof" json:"score,omitempty"` + // The maximum potential overall score of the scorecard. Any questions + // answered using `na_value` are excluded from this calculation. + PotentialScore *float64 `protobuf:"fixed64,8,opt,name=potential_score,json=potentialScore,proto3,oneof" json:"potential_score,omitempty"` + // The normalized score, which is the score divided by the potential score. + // Any manual edits are included if they exist. + NormalizedScore *float64 `protobuf:"fixed64,9,opt,name=normalized_score,json=normalizedScore,proto3,oneof" json:"normalized_score,omitempty"` + // Collection of tags and their scores. + QaTagResults []*QaScorecardResult_QaTagResult `protobuf:"bytes,10,rep,name=qa_tag_results,json=qaTagResults,proto3" json:"qa_tag_results,omitempty"` + // List of all individual score sets. + ScoreSources []*QaScorecardResult_ScoreSource `protobuf:"bytes,11,rep,name=score_sources,json=scoreSources,proto3" json:"score_sources,omitempty"` +} + +func (x *QaScorecardResult) Reset() { + *x = QaScorecardResult{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5035,13 +5714,13 @@ func (x *Conversation_Transcript_TranscriptSegment) Reset() { } } -func (x *Conversation_Transcript_TranscriptSegment) String() string { +func (x *QaScorecardResult) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Conversation_Transcript_TranscriptSegment) ProtoMessage() {} +func (*QaScorecardResult) ProtoMessage() {} -func (x *Conversation_Transcript_TranscriptSegment) ProtoReflect() protoreflect.Message { +func (x *QaScorecardResult) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5053,95 +5732,102 @@ func (x *Conversation_Transcript_TranscriptSegment) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use Conversation_Transcript_TranscriptSegment.ProtoReflect.Descriptor instead. -func (*Conversation_Transcript_TranscriptSegment) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{0, 2, 0} +// Deprecated: Use QaScorecardResult.ProtoReflect.Descriptor instead. +func (*QaScorecardResult) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{52} } -func (x *Conversation_Transcript_TranscriptSegment) GetMessageTime() *timestamppb.Timestamp { +func (x *QaScorecardResult) GetName() string { if x != nil { - return x.MessageTime + return x.Name } - return nil + return "" } -func (x *Conversation_Transcript_TranscriptSegment) GetText() string { +func (x *QaScorecardResult) GetQaScorecardRevision() string { if x != nil { - return x.Text + return x.QaScorecardRevision } return "" } -func (x *Conversation_Transcript_TranscriptSegment) GetConfidence() float32 { +func (x *QaScorecardResult) GetConversation() string { if x != nil { - return x.Confidence + return x.Conversation } - return 0 + return "" } -func (x *Conversation_Transcript_TranscriptSegment) GetWords() []*Conversation_Transcript_TranscriptSegment_WordInfo { +func (x *QaScorecardResult) GetCreateTime() *timestamppb.Timestamp { if x != nil { - return x.Words + return x.CreateTime } return nil } -func (x *Conversation_Transcript_TranscriptSegment) GetLanguageCode() string { +func (x *QaScorecardResult) GetAgentId() string { if x != nil { - return x.LanguageCode + return x.AgentId } return "" } -func (x *Conversation_Transcript_TranscriptSegment) GetChannelTag() int32 { +func (x *QaScorecardResult) GetQaAnswers() []*QaAnswer { if x != nil { - return x.ChannelTag + return x.QaAnswers + } + return nil +} + +func (x *QaScorecardResult) GetScore() float64 { + if x != nil && x.Score != nil { + return *x.Score } return 0 } -func (x *Conversation_Transcript_TranscriptSegment) GetSegmentParticipant() *ConversationParticipant { - if x != nil { - return x.SegmentParticipant +func (x *QaScorecardResult) GetPotentialScore() float64 { + if x != nil && x.PotentialScore != nil { + return *x.PotentialScore } - return nil + return 0 } -func (x *Conversation_Transcript_TranscriptSegment) GetDialogflowSegmentMetadata() *Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata { +func (x *QaScorecardResult) GetNormalizedScore() float64 { + if x != nil && x.NormalizedScore != nil { + return *x.NormalizedScore + } + return 0 +} + +func (x *QaScorecardResult) GetQaTagResults() []*QaScorecardResult_QaTagResult { if x != nil { - return x.DialogflowSegmentMetadata + return x.QaTagResults } return nil } -func (x *Conversation_Transcript_TranscriptSegment) GetSentiment() *SentimentData { +func (x *QaScorecardResult) GetScoreSources() []*QaScorecardResult_ScoreSource { if x != nil { - return x.Sentiment + return x.ScoreSources } return nil } -// Word-level info for words in a transcript. -type Conversation_Transcript_TranscriptSegment_WordInfo struct { +// Call-specific metadata. +type Conversation_CallMetadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Time offset of the start of this word relative to the beginning of - // the total conversation. - StartOffset *durationpb.Duration `protobuf:"bytes,1,opt,name=start_offset,json=startOffset,proto3" json:"start_offset,omitempty"` - // Time offset of the end of this word relative to the beginning of the - // total conversation. - EndOffset *durationpb.Duration `protobuf:"bytes,2,opt,name=end_offset,json=endOffset,proto3" json:"end_offset,omitempty"` - // The word itself. Includes punctuation marks that surround the word. - Word string `protobuf:"bytes,3,opt,name=word,proto3" json:"word,omitempty"` - // A confidence estimate between 0.0 and 1.0 of the fidelity of this - // word. A default value of 0.0 indicates that the value is unset. - Confidence float32 `protobuf:"fixed32,4,opt,name=confidence,proto3" json:"confidence,omitempty"` + // The audio channel that contains the customer. + CustomerChannel int32 `protobuf:"varint,1,opt,name=customer_channel,json=customerChannel,proto3" json:"customer_channel,omitempty"` + // The audio channel that contains the agent. + AgentChannel int32 `protobuf:"varint,2,opt,name=agent_channel,json=agentChannel,proto3" json:"agent_channel,omitempty"` } -func (x *Conversation_Transcript_TranscriptSegment_WordInfo) Reset() { - *x = Conversation_Transcript_TranscriptSegment_WordInfo{} +func (x *Conversation_CallMetadata) Reset() { + *x = Conversation_CallMetadata{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5149,13 +5835,13 @@ func (x *Conversation_Transcript_TranscriptSegment_WordInfo) Reset() { } } -func (x *Conversation_Transcript_TranscriptSegment_WordInfo) String() string { +func (x *Conversation_CallMetadata) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Conversation_Transcript_TranscriptSegment_WordInfo) ProtoMessage() {} +func (*Conversation_CallMetadata) ProtoMessage() {} -func (x *Conversation_Transcript_TranscriptSegment_WordInfo) ProtoReflect() protoreflect.Message { +func (x *Conversation_CallMetadata) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5167,52 +5853,43 @@ func (x *Conversation_Transcript_TranscriptSegment_WordInfo) ProtoReflect() prot return mi.MessageOf(x) } -// Deprecated: Use Conversation_Transcript_TranscriptSegment_WordInfo.ProtoReflect.Descriptor instead. -func (*Conversation_Transcript_TranscriptSegment_WordInfo) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{0, 2, 0, 0} -} - -func (x *Conversation_Transcript_TranscriptSegment_WordInfo) GetStartOffset() *durationpb.Duration { - if x != nil { - return x.StartOffset - } - return nil -} - -func (x *Conversation_Transcript_TranscriptSegment_WordInfo) GetEndOffset() *durationpb.Duration { - if x != nil { - return x.EndOffset - } - return nil +// Deprecated: Use Conversation_CallMetadata.ProtoReflect.Descriptor instead. +func (*Conversation_CallMetadata) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{0, 0} } -func (x *Conversation_Transcript_TranscriptSegment_WordInfo) GetWord() string { +func (x *Conversation_CallMetadata) GetCustomerChannel() int32 { if x != nil { - return x.Word + return x.CustomerChannel } - return "" + return 0 } -func (x *Conversation_Transcript_TranscriptSegment_WordInfo) GetConfidence() float32 { +func (x *Conversation_CallMetadata) GetAgentChannel() int32 { if x != nil { - return x.Confidence + return x.AgentChannel } return 0 } -// Metadata from Dialogflow relating to the current transcript segment. -type Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata struct { +// Conversation metadata related to quality management. +type Conversation_QualityMetadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Whether the transcript segment was covered under the configured smart - // reply allowlist in Agent Assist. - SmartReplyAllowlistCovered bool `protobuf:"varint,1,opt,name=smart_reply_allowlist_covered,json=smartReplyAllowlistCovered,proto3" json:"smart_reply_allowlist_covered,omitempty"` + // An arbitrary integer value indicating the customer's satisfaction rating. + CustomerSatisfactionRating int32 `protobuf:"varint,1,opt,name=customer_satisfaction_rating,json=customerSatisfactionRating,proto3" json:"customer_satisfaction_rating,omitempty"` + // The amount of time the customer waited to connect with an agent. + WaitDuration *durationpb.Duration `protobuf:"bytes,2,opt,name=wait_duration,json=waitDuration,proto3" json:"wait_duration,omitempty"` + // An arbitrary string value specifying the menu path the customer took. + MenuPath string `protobuf:"bytes,3,opt,name=menu_path,json=menuPath,proto3" json:"menu_path,omitempty"` + // Information about agents involved in the call. + AgentInfo []*Conversation_QualityMetadata_AgentInfo `protobuf:"bytes,4,rep,name=agent_info,json=agentInfo,proto3" json:"agent_info,omitempty"` } -func (x *Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata) Reset() { - *x = Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata{} +func (x *Conversation_QualityMetadata) Reset() { + *x = Conversation_QualityMetadata{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5220,13 +5897,13 @@ func (x *Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata) Re } } -func (x *Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata) String() string { +func (x *Conversation_QualityMetadata) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata) ProtoMessage() {} +func (*Conversation_QualityMetadata) ProtoMessage() {} -func (x *Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata) ProtoReflect() protoreflect.Message { +func (x *Conversation_QualityMetadata) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5238,42 +5915,51 @@ func (x *Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata) Pr return mi.MessageOf(x) } -// Deprecated: Use Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata.ProtoReflect.Descriptor instead. -func (*Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{0, 2, 0, 1} +// Deprecated: Use Conversation_QualityMetadata.ProtoReflect.Descriptor instead. +func (*Conversation_QualityMetadata) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{0, 1} } -func (x *Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata) GetSmartReplyAllowlistCovered() bool { +func (x *Conversation_QualityMetadata) GetCustomerSatisfactionRating() int32 { if x != nil { - return x.SmartReplyAllowlistCovered + return x.CustomerSatisfactionRating } - return false + return 0 } -// Call-specific metadata created during analysis. -type AnalysisResult_CallAnalysisMetadata struct { +func (x *Conversation_QualityMetadata) GetWaitDuration() *durationpb.Duration { + if x != nil { + return x.WaitDuration + } + return nil +} + +func (x *Conversation_QualityMetadata) GetMenuPath() string { + if x != nil { + return x.MenuPath + } + return "" +} + +func (x *Conversation_QualityMetadata) GetAgentInfo() []*Conversation_QualityMetadata_AgentInfo { + if x != nil { + return x.AgentInfo + } + return nil +} + +// A message representing the transcript of a conversation. +type Conversation_Transcript struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // A list of call annotations that apply to this call. - Annotations []*CallAnnotation `protobuf:"bytes,2,rep,name=annotations,proto3" json:"annotations,omitempty"` - // All the entities in the call. - Entities map[string]*Entity `protobuf:"bytes,3,rep,name=entities,proto3" json:"entities,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // Overall conversation-level sentiment for each channel of the call. - Sentiments []*ConversationLevelSentiment `protobuf:"bytes,4,rep,name=sentiments,proto3" json:"sentiments,omitempty"` - // Overall conversation-level silence during the call. - Silence *ConversationLevelSilence `protobuf:"bytes,11,opt,name=silence,proto3" json:"silence,omitempty"` - // All the matched intents in the call. - Intents map[string]*Intent `protobuf:"bytes,6,rep,name=intents,proto3" json:"intents,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // All the matched phrase matchers in the call. - PhraseMatchers map[string]*PhraseMatchData `protobuf:"bytes,7,rep,name=phrase_matchers,json=phraseMatchers,proto3" json:"phrase_matchers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // Overall conversation-level issue modeling result. - IssueModelResult *IssueModelResult `protobuf:"bytes,8,opt,name=issue_model_result,json=issueModelResult,proto3" json:"issue_model_result,omitempty"` + // A list of sequential transcript segments that comprise the conversation. + TranscriptSegments []*Conversation_Transcript_TranscriptSegment `protobuf:"bytes,1,rep,name=transcript_segments,json=transcriptSegments,proto3" json:"transcript_segments,omitempty"` } -func (x *AnalysisResult_CallAnalysisMetadata) Reset() { - *x = AnalysisResult_CallAnalysisMetadata{} +func (x *Conversation_Transcript) Reset() { + *x = Conversation_Transcript{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5281,13 +5967,13 @@ func (x *AnalysisResult_CallAnalysisMetadata) Reset() { } } -func (x *AnalysisResult_CallAnalysisMetadata) String() string { +func (x *Conversation_Transcript) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalysisResult_CallAnalysisMetadata) ProtoMessage() {} +func (*Conversation_Transcript) ProtoMessage() {} -func (x *AnalysisResult_CallAnalysisMetadata) ProtoReflect() protoreflect.Message { +func (x *Conversation_Transcript) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5299,96 +5985,144 @@ func (x *AnalysisResult_CallAnalysisMetadata) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use AnalysisResult_CallAnalysisMetadata.ProtoReflect.Descriptor instead. -func (*AnalysisResult_CallAnalysisMetadata) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{5, 0} +// Deprecated: Use Conversation_Transcript.ProtoReflect.Descriptor instead. +func (*Conversation_Transcript) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{0, 2} } -func (x *AnalysisResult_CallAnalysisMetadata) GetAnnotations() []*CallAnnotation { +func (x *Conversation_Transcript) GetTranscriptSegments() []*Conversation_Transcript_TranscriptSegment { if x != nil { - return x.Annotations + return x.TranscriptSegments } return nil } -func (x *AnalysisResult_CallAnalysisMetadata) GetEntities() map[string]*Entity { - if x != nil { - return x.Entities - } - return nil +// Information about an agent involved in the conversation. +type Conversation_QualityMetadata_AgentInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A user-specified string representing the agent. + AgentId string `protobuf:"bytes,1,opt,name=agent_id,json=agentId,proto3" json:"agent_id,omitempty"` + // The agent's name. + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // A user-specified string representing the agent's team. + Team string `protobuf:"bytes,3,opt,name=team,proto3" json:"team,omitempty"` + // A user-provided string indicating the outcome of the agent's segment of + // the call. + DispositionCode string `protobuf:"bytes,4,opt,name=disposition_code,json=dispositionCode,proto3" json:"disposition_code,omitempty"` } -func (x *AnalysisResult_CallAnalysisMetadata) GetSentiments() []*ConversationLevelSentiment { - if x != nil { - return x.Sentiments +func (x *Conversation_QualityMetadata_AgentInfo) Reset() { + *x = Conversation_QualityMetadata_AgentInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *AnalysisResult_CallAnalysisMetadata) GetSilence() *ConversationLevelSilence { - if x != nil { - return x.Silence - } - return nil +func (x *Conversation_QualityMetadata_AgentInfo) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *AnalysisResult_CallAnalysisMetadata) GetIntents() map[string]*Intent { - if x != nil { - return x.Intents - } - return nil +func (*Conversation_QualityMetadata_AgentInfo) ProtoMessage() {} + +func (x *Conversation_QualityMetadata_AgentInfo) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[58] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) } -func (x *AnalysisResult_CallAnalysisMetadata) GetPhraseMatchers() map[string]*PhraseMatchData { +// Deprecated: Use Conversation_QualityMetadata_AgentInfo.ProtoReflect.Descriptor instead. +func (*Conversation_QualityMetadata_AgentInfo) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{0, 1, 0} +} + +func (x *Conversation_QualityMetadata_AgentInfo) GetAgentId() string { if x != nil { - return x.PhraseMatchers + return x.AgentId } - return nil + return "" } -func (x *AnalysisResult_CallAnalysisMetadata) GetIssueModelResult() *IssueModelResult { +func (x *Conversation_QualityMetadata_AgentInfo) GetDisplayName() string { if x != nil { - return x.IssueModelResult + return x.DisplayName } - return nil + return "" } -// Configs for the input data used to create the issue model. -type IssueModel_InputDataConfig struct { +func (x *Conversation_QualityMetadata_AgentInfo) GetTeam() string { + if x != nil { + return x.Team + } + return "" +} + +func (x *Conversation_QualityMetadata_AgentInfo) GetDispositionCode() string { + if x != nil { + return x.DispositionCode + } + return "" +} + +// A segment of a full transcript. +type Conversation_Transcript_TranscriptSegment struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Medium of conversations used in training data. This field is being - // deprecated. To specify the medium to be used in training a new issue - // model, set the `medium` field on `filter`. - // - // Deprecated: Marked as deprecated in google/cloud/contactcenterinsights/v1/resources.proto. - Medium Conversation_Medium `protobuf:"varint,1,opt,name=medium,proto3,enum=google.cloud.contactcenterinsights.v1.Conversation_Medium" json:"medium,omitempty"` - // Output only. Number of conversations used in training. Output only. - TrainingConversationsCount int64 `protobuf:"varint,2,opt,name=training_conversations_count,json=trainingConversationsCount,proto3" json:"training_conversations_count,omitempty"` - // A filter to reduce the conversations used for training the model to a - // specific subset. - Filter string `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"` + // The time that the message occurred, if provided. + MessageTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=message_time,json=messageTime,proto3" json:"message_time,omitempty"` + // The text of this segment. + Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"` + // A confidence estimate between 0.0 and 1.0 of the fidelity of this + // segment. A default value of 0.0 indicates that the value is unset. + Confidence float32 `protobuf:"fixed32,2,opt,name=confidence,proto3" json:"confidence,omitempty"` + // A list of the word-specific information for each word in the segment. + Words []*Conversation_Transcript_TranscriptSegment_WordInfo `protobuf:"bytes,3,rep,name=words,proto3" json:"words,omitempty"` + // The language code of this segment as a + // [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. + // Example: "en-US". + LanguageCode string `protobuf:"bytes,4,opt,name=language_code,json=languageCode,proto3" json:"language_code,omitempty"` + // For conversations derived from multi-channel audio, this is the channel + // number corresponding to the audio from that channel. For + // audioChannelCount = N, its output values can range from '1' to 'N'. A + // channel tag of 0 indicates that the audio is mono. + ChannelTag int32 `protobuf:"varint,5,opt,name=channel_tag,json=channelTag,proto3" json:"channel_tag,omitempty"` + // The participant of this segment. + SegmentParticipant *ConversationParticipant `protobuf:"bytes,9,opt,name=segment_participant,json=segmentParticipant,proto3" json:"segment_participant,omitempty"` + // CCAI metadata relating to the current transcript segment. + DialogflowSegmentMetadata *Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata `protobuf:"bytes,10,opt,name=dialogflow_segment_metadata,json=dialogflowSegmentMetadata,proto3" json:"dialogflow_segment_metadata,omitempty"` + // The sentiment for this transcript segment. + Sentiment *SentimentData `protobuf:"bytes,11,opt,name=sentiment,proto3" json:"sentiment,omitempty"` } -func (x *IssueModel_InputDataConfig) Reset() { - *x = IssueModel_InputDataConfig{} +func (x *Conversation_Transcript_TranscriptSegment) Reset() { + *x = Conversation_Transcript_TranscriptSegment{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[60] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IssueModel_InputDataConfig) String() string { +func (x *Conversation_Transcript_TranscriptSegment) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IssueModel_InputDataConfig) ProtoMessage() {} +func (*Conversation_Transcript_TranscriptSegment) ProtoMessage() {} -func (x *IssueModel_InputDataConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[60] +func (x *Conversation_Transcript_TranscriptSegment) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5399,66 +6133,110 @@ func (x *IssueModel_InputDataConfig) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IssueModel_InputDataConfig.ProtoReflect.Descriptor instead. -func (*IssueModel_InputDataConfig) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{23, 0} +// Deprecated: Use Conversation_Transcript_TranscriptSegment.ProtoReflect.Descriptor instead. +func (*Conversation_Transcript_TranscriptSegment) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{0, 2, 0} } -// Deprecated: Marked as deprecated in google/cloud/contactcenterinsights/v1/resources.proto. -func (x *IssueModel_InputDataConfig) GetMedium() Conversation_Medium { +func (x *Conversation_Transcript_TranscriptSegment) GetMessageTime() *timestamppb.Timestamp { if x != nil { - return x.Medium + return x.MessageTime } - return Conversation_MEDIUM_UNSPECIFIED + return nil } -func (x *IssueModel_InputDataConfig) GetTrainingConversationsCount() int64 { +func (x *Conversation_Transcript_TranscriptSegment) GetText() string { if x != nil { - return x.TrainingConversationsCount + return x.Text + } + return "" +} + +func (x *Conversation_Transcript_TranscriptSegment) GetConfidence() float32 { + if x != nil { + return x.Confidence } return 0 } -func (x *IssueModel_InputDataConfig) GetFilter() string { +func (x *Conversation_Transcript_TranscriptSegment) GetWords() []*Conversation_Transcript_TranscriptSegment_WordInfo { if x != nil { - return x.Filter + return x.Words + } + return nil +} + +func (x *Conversation_Transcript_TranscriptSegment) GetLanguageCode() string { + if x != nil { + return x.LanguageCode } return "" } -// Aggregated statistics about an issue. -type IssueModelLabelStats_IssueStats struct { +func (x *Conversation_Transcript_TranscriptSegment) GetChannelTag() int32 { + if x != nil { + return x.ChannelTag + } + return 0 +} + +func (x *Conversation_Transcript_TranscriptSegment) GetSegmentParticipant() *ConversationParticipant { + if x != nil { + return x.SegmentParticipant + } + return nil +} + +func (x *Conversation_Transcript_TranscriptSegment) GetDialogflowSegmentMetadata() *Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata { + if x != nil { + return x.DialogflowSegmentMetadata + } + return nil +} + +func (x *Conversation_Transcript_TranscriptSegment) GetSentiment() *SentimentData { + if x != nil { + return x.Sentiment + } + return nil +} + +// Word-level info for words in a transcript. +type Conversation_Transcript_TranscriptSegment_WordInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Issue resource. - // Format: - // projects/{project}/locations/{location}/issueModels/{issue_model}/issues/{issue} - Issue string `protobuf:"bytes,1,opt,name=issue,proto3" json:"issue,omitempty"` - // Number of conversations attached to the issue at this point in time. - LabeledConversationsCount int64 `protobuf:"varint,2,opt,name=labeled_conversations_count,json=labeledConversationsCount,proto3" json:"labeled_conversations_count,omitempty"` - // Display name of the issue. - DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + // Time offset of the start of this word relative to the beginning of + // the total conversation. + StartOffset *durationpb.Duration `protobuf:"bytes,1,opt,name=start_offset,json=startOffset,proto3" json:"start_offset,omitempty"` + // Time offset of the end of this word relative to the beginning of the + // total conversation. + EndOffset *durationpb.Duration `protobuf:"bytes,2,opt,name=end_offset,json=endOffset,proto3" json:"end_offset,omitempty"` + // The word itself. Includes punctuation marks that surround the word. + Word string `protobuf:"bytes,3,opt,name=word,proto3" json:"word,omitempty"` + // A confidence estimate between 0.0 and 1.0 of the fidelity of this + // word. A default value of 0.0 indicates that the value is unset. + Confidence float32 `protobuf:"fixed32,4,opt,name=confidence,proto3" json:"confidence,omitempty"` } -func (x *IssueModelLabelStats_IssueStats) Reset() { - *x = IssueModelLabelStats_IssueStats{} +func (x *Conversation_Transcript_TranscriptSegment_WordInfo) Reset() { + *x = Conversation_Transcript_TranscriptSegment_WordInfo{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[61] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IssueModelLabelStats_IssueStats) String() string { +func (x *Conversation_Transcript_TranscriptSegment_WordInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IssueModelLabelStats_IssueStats) ProtoMessage() {} +func (*Conversation_Transcript_TranscriptSegment_WordInfo) ProtoMessage() {} -func (x *IssueModelLabelStats_IssueStats) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[61] +func (x *Conversation_Transcript_TranscriptSegment_WordInfo) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5469,66 +6247,67 @@ func (x *IssueModelLabelStats_IssueStats) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IssueModelLabelStats_IssueStats.ProtoReflect.Descriptor instead. -func (*IssueModelLabelStats_IssueStats) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{25, 0} +// Deprecated: Use Conversation_Transcript_TranscriptSegment_WordInfo.ProtoReflect.Descriptor instead. +func (*Conversation_Transcript_TranscriptSegment_WordInfo) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{0, 2, 0, 0} } -func (x *IssueModelLabelStats_IssueStats) GetIssue() string { +func (x *Conversation_Transcript_TranscriptSegment_WordInfo) GetStartOffset() *durationpb.Duration { if x != nil { - return x.Issue + return x.StartOffset } - return "" + return nil } -func (x *IssueModelLabelStats_IssueStats) GetLabeledConversationsCount() int64 { +func (x *Conversation_Transcript_TranscriptSegment_WordInfo) GetEndOffset() *durationpb.Duration { if x != nil { - return x.LabeledConversationsCount + return x.EndOffset } - return 0 + return nil } -func (x *IssueModelLabelStats_IssueStats) GetDisplayName() string { +func (x *Conversation_Transcript_TranscriptSegment_WordInfo) GetWord() string { if x != nil { - return x.DisplayName + return x.Word } return "" } -// Default configuration when creating Analyses in Insights. -type Settings_AnalysisConfig struct { +func (x *Conversation_Transcript_TranscriptSegment_WordInfo) GetConfidence() float32 { + if x != nil { + return x.Confidence + } + return 0 +} + +// Metadata from Dialogflow relating to the current transcript segment. +type Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Percentage of conversations created using Dialogflow runtime integration - // to analyze automatically, between [0, 100]. - RuntimeIntegrationAnalysisPercentage float64 `protobuf:"fixed64,1,opt,name=runtime_integration_analysis_percentage,json=runtimeIntegrationAnalysisPercentage,proto3" json:"runtime_integration_analysis_percentage,omitempty"` - // Percentage of conversations created using the UploadConversation endpoint - // to analyze automatically, between [0, 100]. - UploadConversationAnalysisPercentage float64 `protobuf:"fixed64,6,opt,name=upload_conversation_analysis_percentage,json=uploadConversationAnalysisPercentage,proto3" json:"upload_conversation_analysis_percentage,omitempty"` - // To select the annotators to run and the phrase matchers to use - // (if any). If not specified, all annotators will be run. - AnnotatorSelector *AnnotatorSelector `protobuf:"bytes,5,opt,name=annotator_selector,json=annotatorSelector,proto3" json:"annotator_selector,omitempty"` + // Whether the transcript segment was covered under the configured smart + // reply allowlist in Agent Assist. + SmartReplyAllowlistCovered bool `protobuf:"varint,1,opt,name=smart_reply_allowlist_covered,json=smartReplyAllowlistCovered,proto3" json:"smart_reply_allowlist_covered,omitempty"` } -func (x *Settings_AnalysisConfig) Reset() { - *x = Settings_AnalysisConfig{} +func (x *Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata) Reset() { + *x = Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[63] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Settings_AnalysisConfig) String() string { +func (x *Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Settings_AnalysisConfig) ProtoMessage() {} +func (*Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata) ProtoMessage() {} -func (x *Settings_AnalysisConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[63] +func (x *Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5539,65 +6318,166 @@ func (x *Settings_AnalysisConfig) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Settings_AnalysisConfig.ProtoReflect.Descriptor instead. -func (*Settings_AnalysisConfig) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{31, 0} +// Deprecated: Use Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata.ProtoReflect.Descriptor instead. +func (*Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{0, 2, 0, 1} } -func (x *Settings_AnalysisConfig) GetRuntimeIntegrationAnalysisPercentage() float64 { +func (x *Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata) GetSmartReplyAllowlistCovered() bool { if x != nil { - return x.RuntimeIntegrationAnalysisPercentage + return x.SmartReplyAllowlistCovered } - return 0 + return false } -func (x *Settings_AnalysisConfig) GetUploadConversationAnalysisPercentage() float64 { +// Call-specific metadata created during analysis. +type AnalysisResult_CallAnalysisMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A list of call annotations that apply to this call. + Annotations []*CallAnnotation `protobuf:"bytes,2,rep,name=annotations,proto3" json:"annotations,omitempty"` + // All the entities in the call. + Entities map[string]*Entity `protobuf:"bytes,3,rep,name=entities,proto3" json:"entities,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Overall conversation-level sentiment for each channel of the call. + Sentiments []*ConversationLevelSentiment `protobuf:"bytes,4,rep,name=sentiments,proto3" json:"sentiments,omitempty"` + // Overall conversation-level silence during the call. + Silence *ConversationLevelSilence `protobuf:"bytes,11,opt,name=silence,proto3" json:"silence,omitempty"` + // All the matched intents in the call. + Intents map[string]*Intent `protobuf:"bytes,6,rep,name=intents,proto3" json:"intents,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // All the matched phrase matchers in the call. + PhraseMatchers map[string]*PhraseMatchData `protobuf:"bytes,7,rep,name=phrase_matchers,json=phraseMatchers,proto3" json:"phrase_matchers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Overall conversation-level issue modeling result. + IssueModelResult *IssueModelResult `protobuf:"bytes,8,opt,name=issue_model_result,json=issueModelResult,proto3" json:"issue_model_result,omitempty"` + // Results of scoring QaScorecards. + QaScorecardResults []*QaScorecardResult `protobuf:"bytes,10,rep,name=qa_scorecard_results,json=qaScorecardResults,proto3" json:"qa_scorecard_results,omitempty"` +} + +func (x *AnalysisResult_CallAnalysisMetadata) Reset() { + *x = AnalysisResult_CallAnalysisMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AnalysisResult_CallAnalysisMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnalysisResult_CallAnalysisMetadata) ProtoMessage() {} + +func (x *AnalysisResult_CallAnalysisMetadata) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[62] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AnalysisResult_CallAnalysisMetadata.ProtoReflect.Descriptor instead. +func (*AnalysisResult_CallAnalysisMetadata) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{5, 0} +} + +func (x *AnalysisResult_CallAnalysisMetadata) GetAnnotations() []*CallAnnotation { if x != nil { - return x.UploadConversationAnalysisPercentage + return x.Annotations } - return 0 + return nil } -func (x *Settings_AnalysisConfig) GetAnnotatorSelector() *AnnotatorSelector { +func (x *AnalysisResult_CallAnalysisMetadata) GetEntities() map[string]*Entity { if x != nil { - return x.AnnotatorSelector + return x.Entities } return nil } -// Explicit input used for generating the answer -type RuntimeAnnotation_UserInput struct { +func (x *AnalysisResult_CallAnalysisMetadata) GetSentiments() []*ConversationLevelSentiment { + if x != nil { + return x.Sentiments + } + return nil +} + +func (x *AnalysisResult_CallAnalysisMetadata) GetSilence() *ConversationLevelSilence { + if x != nil { + return x.Silence + } + return nil +} + +func (x *AnalysisResult_CallAnalysisMetadata) GetIntents() map[string]*Intent { + if x != nil { + return x.Intents + } + return nil +} + +func (x *AnalysisResult_CallAnalysisMetadata) GetPhraseMatchers() map[string]*PhraseMatchData { + if x != nil { + return x.PhraseMatchers + } + return nil +} + +func (x *AnalysisResult_CallAnalysisMetadata) GetIssueModelResult() *IssueModelResult { + if x != nil { + return x.IssueModelResult + } + return nil +} + +func (x *AnalysisResult_CallAnalysisMetadata) GetQaScorecardResults() []*QaScorecardResult { + if x != nil { + return x.QaScorecardResults + } + return nil +} + +// Configs for the input data used to create the issue model. +type IssueModel_InputDataConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Query text. Article Search uses this to store the input query used - // to generate the search results. - Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` - // The resource name of associated generator. Format: - // `projects//locations//generators/` - GeneratorName string `protobuf:"bytes,2,opt,name=generator_name,json=generatorName,proto3" json:"generator_name,omitempty"` - // Query source for the answer. - QuerySource RuntimeAnnotation_UserInput_QuerySource `protobuf:"varint,3,opt,name=query_source,json=querySource,proto3,enum=google.cloud.contactcenterinsights.v1.RuntimeAnnotation_UserInput_QuerySource" json:"query_source,omitempty"` + // Medium of conversations used in training data. This field is being + // deprecated. To specify the medium to be used in training a new issue + // model, set the `medium` field on `filter`. + // + // Deprecated: Marked as deprecated in google/cloud/contactcenterinsights/v1/resources.proto. + Medium Conversation_Medium `protobuf:"varint,1,opt,name=medium,proto3,enum=google.cloud.contactcenterinsights.v1.Conversation_Medium" json:"medium,omitempty"` + // Output only. Number of conversations used in training. Output only. + TrainingConversationsCount int64 `protobuf:"varint,2,opt,name=training_conversations_count,json=trainingConversationsCount,proto3" json:"training_conversations_count,omitempty"` + // A filter to reduce the conversations used for training the model to a + // specific subset. + Filter string `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"` } -func (x *RuntimeAnnotation_UserInput) Reset() { - *x = RuntimeAnnotation_UserInput{} +func (x *IssueModel_InputDataConfig) Reset() { + *x = IssueModel_InputDataConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[65] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *RuntimeAnnotation_UserInput) String() string { +func (x *IssueModel_InputDataConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RuntimeAnnotation_UserInput) ProtoMessage() {} +func (*IssueModel_InputDataConfig) ProtoMessage() {} -func (x *RuntimeAnnotation_UserInput) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[65] +func (x *IssueModel_InputDataConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5608,65 +6488,66 @@ func (x *RuntimeAnnotation_UserInput) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RuntimeAnnotation_UserInput.ProtoReflect.Descriptor instead. -func (*RuntimeAnnotation_UserInput) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{35, 0} +// Deprecated: Use IssueModel_InputDataConfig.ProtoReflect.Descriptor instead. +func (*IssueModel_InputDataConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{24, 0} } -func (x *RuntimeAnnotation_UserInput) GetQuery() string { +// Deprecated: Marked as deprecated in google/cloud/contactcenterinsights/v1/resources.proto. +func (x *IssueModel_InputDataConfig) GetMedium() Conversation_Medium { if x != nil { - return x.Query + return x.Medium } - return "" + return Conversation_MEDIUM_UNSPECIFIED } -func (x *RuntimeAnnotation_UserInput) GetGeneratorName() string { +func (x *IssueModel_InputDataConfig) GetTrainingConversationsCount() int64 { if x != nil { - return x.GeneratorName + return x.TrainingConversationsCount } - return "" + return 0 } -func (x *RuntimeAnnotation_UserInput) GetQuerySource() RuntimeAnnotation_UserInput_QuerySource { +func (x *IssueModel_InputDataConfig) GetFilter() string { if x != nil { - return x.QuerySource + return x.Filter } - return RuntimeAnnotation_UserInput_QUERY_SOURCE_UNSPECIFIED + return "" } -// Configuration for summarization. -type AnnotatorSelector_SummarizationConfig struct { +// Aggregated statistics about an issue. +type IssueModelLabelStats_IssueStats struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Summarization must use either a preexisting conversation profile or one - // of the supported default models. - // - // Types that are assignable to ModelSource: - // - // *AnnotatorSelector_SummarizationConfig_ConversationProfile - // *AnnotatorSelector_SummarizationConfig_SummarizationModel_ - ModelSource isAnnotatorSelector_SummarizationConfig_ModelSource `protobuf_oneof:"model_source"` + // Issue resource. + // Format: + // projects/{project}/locations/{location}/issueModels/{issue_model}/issues/{issue} + Issue string `protobuf:"bytes,1,opt,name=issue,proto3" json:"issue,omitempty"` + // Number of conversations attached to the issue at this point in time. + LabeledConversationsCount int64 `protobuf:"varint,2,opt,name=labeled_conversations_count,json=labeledConversationsCount,proto3" json:"labeled_conversations_count,omitempty"` + // Display name of the issue. + DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` } -func (x *AnnotatorSelector_SummarizationConfig) Reset() { - *x = AnnotatorSelector_SummarizationConfig{} +func (x *IssueModelLabelStats_IssueStats) Reset() { + *x = IssueModelLabelStats_IssueStats{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[72] + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AnnotatorSelector_SummarizationConfig) String() string { +func (x *IssueModelLabelStats_IssueStats) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnnotatorSelector_SummarizationConfig) ProtoMessage() {} +func (*IssueModelLabelStats_IssueStats) ProtoMessage() {} -func (x *AnnotatorSelector_SummarizationConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[72] +func (x *IssueModelLabelStats_IssueStats) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5677,52 +6558,1020 @@ func (x *AnnotatorSelector_SummarizationConfig) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use AnnotatorSelector_SummarizationConfig.ProtoReflect.Descriptor instead. -func (*AnnotatorSelector_SummarizationConfig) Descriptor() ([]byte, []int) { - return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{45, 0} +// Deprecated: Use IssueModelLabelStats_IssueStats.ProtoReflect.Descriptor instead. +func (*IssueModelLabelStats_IssueStats) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{26, 0} } -func (m *AnnotatorSelector_SummarizationConfig) GetModelSource() isAnnotatorSelector_SummarizationConfig_ModelSource { - if m != nil { - return m.ModelSource +func (x *IssueModelLabelStats_IssueStats) GetIssue() string { + if x != nil { + return x.Issue } - return nil + return "" } -func (x *AnnotatorSelector_SummarizationConfig) GetConversationProfile() string { - if x, ok := x.GetModelSource().(*AnnotatorSelector_SummarizationConfig_ConversationProfile); ok { - return x.ConversationProfile +func (x *IssueModelLabelStats_IssueStats) GetLabeledConversationsCount() int64 { + if x != nil { + return x.LabeledConversationsCount } - return "" + return 0 } -func (x *AnnotatorSelector_SummarizationConfig) GetSummarizationModel() AnnotatorSelector_SummarizationConfig_SummarizationModel { - if x, ok := x.GetModelSource().(*AnnotatorSelector_SummarizationConfig_SummarizationModel_); ok { - return x.SummarizationModel +func (x *IssueModelLabelStats_IssueStats) GetDisplayName() string { + if x != nil { + return x.DisplayName } - return AnnotatorSelector_SummarizationConfig_SUMMARIZATION_MODEL_UNSPECIFIED + return "" } -type isAnnotatorSelector_SummarizationConfig_ModelSource interface { - isAnnotatorSelector_SummarizationConfig_ModelSource() -} +// Default configuration when creating Analyses in Insights. +type Settings_AnalysisConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -type AnnotatorSelector_SummarizationConfig_ConversationProfile struct { - // Resource name of the Dialogflow conversation profile. - // Format: - // projects/{project}/locations/{location}/conversationProfiles/{conversation_profile} - ConversationProfile string `protobuf:"bytes,1,opt,name=conversation_profile,json=conversationProfile,proto3,oneof"` + // Percentage of conversations created using Dialogflow runtime integration + // to analyze automatically, between [0, 100]. + RuntimeIntegrationAnalysisPercentage float64 `protobuf:"fixed64,1,opt,name=runtime_integration_analysis_percentage,json=runtimeIntegrationAnalysisPercentage,proto3" json:"runtime_integration_analysis_percentage,omitempty"` + // Percentage of conversations created using the UploadConversation endpoint + // to analyze automatically, between [0, 100]. + UploadConversationAnalysisPercentage float64 `protobuf:"fixed64,6,opt,name=upload_conversation_analysis_percentage,json=uploadConversationAnalysisPercentage,proto3" json:"upload_conversation_analysis_percentage,omitempty"` + // To select the annotators to run and the phrase matchers to use + // (if any). If not specified, all annotators will be run. + AnnotatorSelector *AnnotatorSelector `protobuf:"bytes,5,opt,name=annotator_selector,json=annotatorSelector,proto3" json:"annotator_selector,omitempty"` } -type AnnotatorSelector_SummarizationConfig_SummarizationModel_ struct { - // Default summarization model to be used. - SummarizationModel AnnotatorSelector_SummarizationConfig_SummarizationModel `protobuf:"varint,2,opt,name=summarization_model,json=summarizationModel,proto3,enum=google.cloud.contactcenterinsights.v1.AnnotatorSelector_SummarizationConfig_SummarizationModel,oneof"` +func (x *Settings_AnalysisConfig) Reset() { + *x = Settings_AnalysisConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (*AnnotatorSelector_SummarizationConfig_ConversationProfile) isAnnotatorSelector_SummarizationConfig_ModelSource() { +func (x *Settings_AnalysisConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Settings_AnalysisConfig) ProtoMessage() {} + +func (x *Settings_AnalysisConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[70] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Settings_AnalysisConfig.ProtoReflect.Descriptor instead. +func (*Settings_AnalysisConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{32, 0} +} + +func (x *Settings_AnalysisConfig) GetRuntimeIntegrationAnalysisPercentage() float64 { + if x != nil { + return x.RuntimeIntegrationAnalysisPercentage + } + return 0 +} + +func (x *Settings_AnalysisConfig) GetUploadConversationAnalysisPercentage() float64 { + if x != nil { + return x.UploadConversationAnalysisPercentage + } + return 0 +} + +func (x *Settings_AnalysisConfig) GetAnnotatorSelector() *AnnotatorSelector { + if x != nil { + return x.AnnotatorSelector + } + return nil +} + +// Explicit input used for generating the answer +type RuntimeAnnotation_UserInput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Query text. Article Search uses this to store the input query used + // to generate the search results. + Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + // The resource name of associated generator. Format: + // `projects//locations//generators/` + GeneratorName string `protobuf:"bytes,2,opt,name=generator_name,json=generatorName,proto3" json:"generator_name,omitempty"` + // Query source for the answer. + QuerySource RuntimeAnnotation_UserInput_QuerySource `protobuf:"varint,3,opt,name=query_source,json=querySource,proto3,enum=google.cloud.contactcenterinsights.v1.RuntimeAnnotation_UserInput_QuerySource" json:"query_source,omitempty"` +} + +func (x *RuntimeAnnotation_UserInput) Reset() { + *x = RuntimeAnnotation_UserInput{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RuntimeAnnotation_UserInput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RuntimeAnnotation_UserInput) ProtoMessage() {} + +func (x *RuntimeAnnotation_UserInput) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[72] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RuntimeAnnotation_UserInput.ProtoReflect.Descriptor instead. +func (*RuntimeAnnotation_UserInput) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{37, 0} +} + +func (x *RuntimeAnnotation_UserInput) GetQuery() string { + if x != nil { + return x.Query + } + return "" +} + +func (x *RuntimeAnnotation_UserInput) GetGeneratorName() string { + if x != nil { + return x.GeneratorName + } + return "" +} + +func (x *RuntimeAnnotation_UserInput) GetQuerySource() RuntimeAnnotation_UserInput_QuerySource { + if x != nil { + return x.QuerySource + } + return RuntimeAnnotation_UserInput_QUERY_SOURCE_UNSPECIFIED +} + +// Configuration for summarization. +type AnnotatorSelector_SummarizationConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Summarization must use either a preexisting conversation profile or one + // of the supported default models. + // + // Types that are assignable to ModelSource: + // + // *AnnotatorSelector_SummarizationConfig_ConversationProfile + // *AnnotatorSelector_SummarizationConfig_SummarizationModel_ + ModelSource isAnnotatorSelector_SummarizationConfig_ModelSource `protobuf_oneof:"model_source"` +} + +func (x *AnnotatorSelector_SummarizationConfig) Reset() { + *x = AnnotatorSelector_SummarizationConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[79] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AnnotatorSelector_SummarizationConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnnotatorSelector_SummarizationConfig) ProtoMessage() {} + +func (x *AnnotatorSelector_SummarizationConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[79] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AnnotatorSelector_SummarizationConfig.ProtoReflect.Descriptor instead. +func (*AnnotatorSelector_SummarizationConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{47, 0} +} + +func (m *AnnotatorSelector_SummarizationConfig) GetModelSource() isAnnotatorSelector_SummarizationConfig_ModelSource { + if m != nil { + return m.ModelSource + } + return nil +} + +func (x *AnnotatorSelector_SummarizationConfig) GetConversationProfile() string { + if x, ok := x.GetModelSource().(*AnnotatorSelector_SummarizationConfig_ConversationProfile); ok { + return x.ConversationProfile + } + return "" +} + +func (x *AnnotatorSelector_SummarizationConfig) GetSummarizationModel() AnnotatorSelector_SummarizationConfig_SummarizationModel { + if x, ok := x.GetModelSource().(*AnnotatorSelector_SummarizationConfig_SummarizationModel_); ok { + return x.SummarizationModel + } + return AnnotatorSelector_SummarizationConfig_SUMMARIZATION_MODEL_UNSPECIFIED +} + +type isAnnotatorSelector_SummarizationConfig_ModelSource interface { + isAnnotatorSelector_SummarizationConfig_ModelSource() +} + +type AnnotatorSelector_SummarizationConfig_ConversationProfile struct { + // Resource name of the Dialogflow conversation profile. + // Format: + // projects/{project}/locations/{location}/conversationProfiles/{conversation_profile} + ConversationProfile string `protobuf:"bytes,1,opt,name=conversation_profile,json=conversationProfile,proto3,oneof"` +} + +type AnnotatorSelector_SummarizationConfig_SummarizationModel_ struct { + // Default summarization model to be used. + SummarizationModel AnnotatorSelector_SummarizationConfig_SummarizationModel `protobuf:"varint,2,opt,name=summarization_model,json=summarizationModel,proto3,enum=google.cloud.contactcenterinsights.v1.AnnotatorSelector_SummarizationConfig_SummarizationModel,oneof"` +} + +func (*AnnotatorSelector_SummarizationConfig_ConversationProfile) isAnnotatorSelector_SummarizationConfig_ModelSource() { +} + +func (*AnnotatorSelector_SummarizationConfig_SummarizationModel_) isAnnotatorSelector_SummarizationConfig_ModelSource() { +} + +// Configuration for the QA feature. +type AnnotatorSelector_QaConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Which scorecards should be scored. + // + // Types that are assignable to ScorecardSource: + // + // *AnnotatorSelector_QaConfig_ScorecardList_ + ScorecardSource isAnnotatorSelector_QaConfig_ScorecardSource `protobuf_oneof:"scorecard_source"` +} + +func (x *AnnotatorSelector_QaConfig) Reset() { + *x = AnnotatorSelector_QaConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[80] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AnnotatorSelector_QaConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnnotatorSelector_QaConfig) ProtoMessage() {} + +func (x *AnnotatorSelector_QaConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[80] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AnnotatorSelector_QaConfig.ProtoReflect.Descriptor instead. +func (*AnnotatorSelector_QaConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{47, 1} +} + +func (m *AnnotatorSelector_QaConfig) GetScorecardSource() isAnnotatorSelector_QaConfig_ScorecardSource { + if m != nil { + return m.ScorecardSource + } + return nil +} + +func (x *AnnotatorSelector_QaConfig) GetScorecardList() *AnnotatorSelector_QaConfig_ScorecardList { + if x, ok := x.GetScorecardSource().(*AnnotatorSelector_QaConfig_ScorecardList_); ok { + return x.ScorecardList + } + return nil +} + +type isAnnotatorSelector_QaConfig_ScorecardSource interface { + isAnnotatorSelector_QaConfig_ScorecardSource() +} + +type AnnotatorSelector_QaConfig_ScorecardList_ struct { + // A manual list of scorecards to score. + ScorecardList *AnnotatorSelector_QaConfig_ScorecardList `protobuf:"bytes,1,opt,name=scorecard_list,json=scorecardList,proto3,oneof"` +} + +func (*AnnotatorSelector_QaConfig_ScorecardList_) isAnnotatorSelector_QaConfig_ScorecardSource() {} + +// Container for a list of scorecards. +type AnnotatorSelector_QaConfig_ScorecardList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List of QaScorecardRevisions. + QaScorecardRevisions []string `protobuf:"bytes,1,rep,name=qa_scorecard_revisions,json=qaScorecardRevisions,proto3" json:"qa_scorecard_revisions,omitempty"` +} + +func (x *AnnotatorSelector_QaConfig_ScorecardList) Reset() { + *x = AnnotatorSelector_QaConfig_ScorecardList{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[81] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AnnotatorSelector_QaConfig_ScorecardList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnnotatorSelector_QaConfig_ScorecardList) ProtoMessage() {} + +func (x *AnnotatorSelector_QaConfig_ScorecardList) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[81] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AnnotatorSelector_QaConfig_ScorecardList.ProtoReflect.Descriptor instead. +func (*AnnotatorSelector_QaConfig_ScorecardList) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{47, 1, 0} +} + +func (x *AnnotatorSelector_QaConfig_ScorecardList) GetQaScorecardRevisions() []string { + if x != nil { + return x.QaScorecardRevisions + } + return nil +} + +// Message representing a possible answer to the question. +type QaQuestion_AnswerChoice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The answer value may be one of a few different types. + // + // Types that are assignable to Value: + // + // *QaQuestion_AnswerChoice_StrValue + // *QaQuestion_AnswerChoice_NumValue + // *QaQuestion_AnswerChoice_BoolValue + // *QaQuestion_AnswerChoice_NaValue + Value isQaQuestion_AnswerChoice_Value `protobuf_oneof:"value"` + // A short string used as an identifier. + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + // Numerical score of the answer, used for generating the overall score of + // a QaScorecardResult. If the answer uses na_value, this field is unused. + Score *float64 `protobuf:"fixed64,6,opt,name=score,proto3,oneof" json:"score,omitempty"` +} + +func (x *QaQuestion_AnswerChoice) Reset() { + *x = QaQuestion_AnswerChoice{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[82] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QaQuestion_AnswerChoice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QaQuestion_AnswerChoice) ProtoMessage() {} + +func (x *QaQuestion_AnswerChoice) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[82] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QaQuestion_AnswerChoice.ProtoReflect.Descriptor instead. +func (*QaQuestion_AnswerChoice) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{48, 0} +} + +func (m *QaQuestion_AnswerChoice) GetValue() isQaQuestion_AnswerChoice_Value { + if m != nil { + return m.Value + } + return nil +} + +func (x *QaQuestion_AnswerChoice) GetStrValue() string { + if x, ok := x.GetValue().(*QaQuestion_AnswerChoice_StrValue); ok { + return x.StrValue + } + return "" +} + +func (x *QaQuestion_AnswerChoice) GetNumValue() float64 { + if x, ok := x.GetValue().(*QaQuestion_AnswerChoice_NumValue); ok { + return x.NumValue + } + return 0 +} + +func (x *QaQuestion_AnswerChoice) GetBoolValue() bool { + if x, ok := x.GetValue().(*QaQuestion_AnswerChoice_BoolValue); ok { + return x.BoolValue + } + return false +} + +func (x *QaQuestion_AnswerChoice) GetNaValue() bool { + if x, ok := x.GetValue().(*QaQuestion_AnswerChoice_NaValue); ok { + return x.NaValue + } + return false +} + +func (x *QaQuestion_AnswerChoice) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *QaQuestion_AnswerChoice) GetScore() float64 { + if x != nil && x.Score != nil { + return *x.Score + } + return 0 +} + +type isQaQuestion_AnswerChoice_Value interface { + isQaQuestion_AnswerChoice_Value() +} + +type QaQuestion_AnswerChoice_StrValue struct { + // String value. + StrValue string `protobuf:"bytes,2,opt,name=str_value,json=strValue,proto3,oneof"` +} + +type QaQuestion_AnswerChoice_NumValue struct { + // Numerical value. + NumValue float64 `protobuf:"fixed64,3,opt,name=num_value,json=numValue,proto3,oneof"` +} + +type QaQuestion_AnswerChoice_BoolValue struct { + // Boolean value. + BoolValue bool `protobuf:"varint,4,opt,name=bool_value,json=boolValue,proto3,oneof"` +} + +type QaQuestion_AnswerChoice_NaValue struct { + // A value of "Not Applicable (N/A)". If provided, this field may only + // be set to `true`. If a question receives this answer, it will be + // excluded from any score calculations. + NaValue bool `protobuf:"varint,5,opt,name=na_value,json=naValue,proto3,oneof"` +} + +func (*QaQuestion_AnswerChoice_StrValue) isQaQuestion_AnswerChoice_Value() {} + +func (*QaQuestion_AnswerChoice_NumValue) isQaQuestion_AnswerChoice_Value() {} + +func (*QaQuestion_AnswerChoice_BoolValue) isQaQuestion_AnswerChoice_Value() {} + +func (*QaQuestion_AnswerChoice_NaValue) isQaQuestion_AnswerChoice_Value() {} + +// A wrapper representing metrics calculated against a test-set on a LLM that +// was fine tuned for this question. +type QaQuestion_Metrics struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. Accuracy of the model. Measures the percentage of correct + // answers the model gave on the test set. + Accuracy float64 `protobuf:"fixed64,1,opt,name=accuracy,proto3" json:"accuracy,omitempty"` +} + +func (x *QaQuestion_Metrics) Reset() { + *x = QaQuestion_Metrics{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[83] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QaQuestion_Metrics) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QaQuestion_Metrics) ProtoMessage() {} + +func (x *QaQuestion_Metrics) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[83] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QaQuestion_Metrics.ProtoReflect.Descriptor instead. +func (*QaQuestion_Metrics) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{48, 1} +} + +func (x *QaQuestion_Metrics) GetAccuracy() float64 { + if x != nil { + return x.Accuracy + } + return 0 +} + +// Metadata about the tuning operation for the question. Will only be set if a +// scorecard containing this question has been tuned. +type QaQuestion_TuningMetadata struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Total number of valid labels provided for the question at the time of + // tuining. + TotalValidLabelCount int64 `protobuf:"varint,1,opt,name=total_valid_label_count,json=totalValidLabelCount,proto3" json:"total_valid_label_count,omitempty"` + // A list of any applicable data validation warnings about the question's + // feedback labels. + DatasetValidationWarnings []DatasetValidationWarning `protobuf:"varint,2,rep,packed,name=dataset_validation_warnings,json=datasetValidationWarnings,proto3,enum=google.cloud.contactcenterinsights.v1.DatasetValidationWarning" json:"dataset_validation_warnings,omitempty"` + // Error status of the tuning operation for the question. Will only be set + // if the tuning operation failed. + TuningError string `protobuf:"bytes,3,opt,name=tuning_error,json=tuningError,proto3" json:"tuning_error,omitempty"` +} + +func (x *QaQuestion_TuningMetadata) Reset() { + *x = QaQuestion_TuningMetadata{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[84] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QaQuestion_TuningMetadata) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QaQuestion_TuningMetadata) ProtoMessage() {} + +func (x *QaQuestion_TuningMetadata) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[84] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QaQuestion_TuningMetadata.ProtoReflect.Descriptor instead. +func (*QaQuestion_TuningMetadata) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{48, 2} +} + +func (x *QaQuestion_TuningMetadata) GetTotalValidLabelCount() int64 { + if x != nil { + return x.TotalValidLabelCount + } + return 0 +} + +func (x *QaQuestion_TuningMetadata) GetDatasetValidationWarnings() []DatasetValidationWarning { + if x != nil { + return x.DatasetValidationWarnings + } + return nil +} + +func (x *QaQuestion_TuningMetadata) GetTuningError() string { + if x != nil { + return x.TuningError + } + return "" +} + +// Message for holding the value of a +// [QaAnswer][google.cloud.contactcenterinsights.v1.QaAnswer]. +// [QaQuestion.AnswerChoice][google.cloud.contactcenterinsights.v1.QaQuestion.AnswerChoice] +// defines the possible answer values for a question. +type QaAnswer_AnswerValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The answer value may be one of a few different types. + // + // Types that are assignable to Value: + // + // *QaAnswer_AnswerValue_StrValue + // *QaAnswer_AnswerValue_NumValue + // *QaAnswer_AnswerValue_BoolValue + // *QaAnswer_AnswerValue_NaValue + Value isQaAnswer_AnswerValue_Value `protobuf_oneof:"value"` + // A short string used as an identifier. Matches the value used in + // QaQuestion.AnswerChoice.key. + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + // Output only. Numerical score of the answer. + Score *float64 `protobuf:"fixed64,6,opt,name=score,proto3,oneof" json:"score,omitempty"` + // Output only. The maximum potential score of the question. + PotentialScore *float64 `protobuf:"fixed64,7,opt,name=potential_score,json=potentialScore,proto3,oneof" json:"potential_score,omitempty"` + // Output only. Normalized score of the questions. Calculated as score / + // potential_score. + NormalizedScore *float64 `protobuf:"fixed64,8,opt,name=normalized_score,json=normalizedScore,proto3,oneof" json:"normalized_score,omitempty"` +} + +func (x *QaAnswer_AnswerValue) Reset() { + *x = QaAnswer_AnswerValue{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[85] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QaAnswer_AnswerValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QaAnswer_AnswerValue) ProtoMessage() {} + +func (x *QaAnswer_AnswerValue) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[85] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QaAnswer_AnswerValue.ProtoReflect.Descriptor instead. +func (*QaAnswer_AnswerValue) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{51, 0} +} + +func (m *QaAnswer_AnswerValue) GetValue() isQaAnswer_AnswerValue_Value { + if m != nil { + return m.Value + } + return nil +} + +func (x *QaAnswer_AnswerValue) GetStrValue() string { + if x, ok := x.GetValue().(*QaAnswer_AnswerValue_StrValue); ok { + return x.StrValue + } + return "" +} + +func (x *QaAnswer_AnswerValue) GetNumValue() float64 { + if x, ok := x.GetValue().(*QaAnswer_AnswerValue_NumValue); ok { + return x.NumValue + } + return 0 +} + +func (x *QaAnswer_AnswerValue) GetBoolValue() bool { + if x, ok := x.GetValue().(*QaAnswer_AnswerValue_BoolValue); ok { + return x.BoolValue + } + return false +} + +func (x *QaAnswer_AnswerValue) GetNaValue() bool { + if x, ok := x.GetValue().(*QaAnswer_AnswerValue_NaValue); ok { + return x.NaValue + } + return false +} + +func (x *QaAnswer_AnswerValue) GetKey() string { + if x != nil { + return x.Key + } + return "" +} + +func (x *QaAnswer_AnswerValue) GetScore() float64 { + if x != nil && x.Score != nil { + return *x.Score + } + return 0 +} + +func (x *QaAnswer_AnswerValue) GetPotentialScore() float64 { + if x != nil && x.PotentialScore != nil { + return *x.PotentialScore + } + return 0 +} + +func (x *QaAnswer_AnswerValue) GetNormalizedScore() float64 { + if x != nil && x.NormalizedScore != nil { + return *x.NormalizedScore + } + return 0 +} + +type isQaAnswer_AnswerValue_Value interface { + isQaAnswer_AnswerValue_Value() +} + +type QaAnswer_AnswerValue_StrValue struct { + // String value. + StrValue string `protobuf:"bytes,2,opt,name=str_value,json=strValue,proto3,oneof"` +} + +type QaAnswer_AnswerValue_NumValue struct { + // Numerical value. + NumValue float64 `protobuf:"fixed64,3,opt,name=num_value,json=numValue,proto3,oneof"` +} + +type QaAnswer_AnswerValue_BoolValue struct { + // Boolean value. + BoolValue bool `protobuf:"varint,4,opt,name=bool_value,json=boolValue,proto3,oneof"` +} + +type QaAnswer_AnswerValue_NaValue struct { + // A value of "Not Applicable (N/A)". Should only ever be `true`. + NaValue bool `protobuf:"varint,5,opt,name=na_value,json=naValue,proto3,oneof"` +} + +func (*QaAnswer_AnswerValue_StrValue) isQaAnswer_AnswerValue_Value() {} + +func (*QaAnswer_AnswerValue_NumValue) isQaAnswer_AnswerValue_Value() {} + +func (*QaAnswer_AnswerValue_BoolValue) isQaAnswer_AnswerValue_Value() {} + +func (*QaAnswer_AnswerValue_NaValue) isQaAnswer_AnswerValue_Value() {} + +// A question may have multiple answers from varying sources, one of which +// becomes the "main" answer above. AnswerSource represents each individual +// answer. +type QaAnswer_AnswerSource struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // What created the answer. + SourceType QaAnswer_AnswerSource_SourceType `protobuf:"varint,1,opt,name=source_type,json=sourceType,proto3,enum=google.cloud.contactcenterinsights.v1.QaAnswer_AnswerSource_SourceType" json:"source_type,omitempty"` + // The answer value from this source. + AnswerValue *QaAnswer_AnswerValue `protobuf:"bytes,2,opt,name=answer_value,json=answerValue,proto3" json:"answer_value,omitempty"` +} + +func (x *QaAnswer_AnswerSource) Reset() { + *x = QaAnswer_AnswerSource{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[86] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QaAnswer_AnswerSource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QaAnswer_AnswerSource) ProtoMessage() {} + +func (x *QaAnswer_AnswerSource) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[86] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QaAnswer_AnswerSource.ProtoReflect.Descriptor instead. +func (*QaAnswer_AnswerSource) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{51, 1} +} + +func (x *QaAnswer_AnswerSource) GetSourceType() QaAnswer_AnswerSource_SourceType { + if x != nil { + return x.SourceType + } + return QaAnswer_AnswerSource_SOURCE_TYPE_UNSPECIFIED +} + +func (x *QaAnswer_AnswerSource) GetAnswerValue() *QaAnswer_AnswerValue { + if x != nil { + return x.AnswerValue + } + return nil +} + +// Tags and their corresponding results. +type QaScorecardResult_QaTagResult struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The tag the score applies to. + Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` + // The score the tag applies to. + Score *float64 `protobuf:"fixed64,2,opt,name=score,proto3,oneof" json:"score,omitempty"` + // The potential score the tag applies to. + PotentialScore *float64 `protobuf:"fixed64,3,opt,name=potential_score,json=potentialScore,proto3,oneof" json:"potential_score,omitempty"` + // The normalized score the tag applies to. + NormalizedScore *float64 `protobuf:"fixed64,4,opt,name=normalized_score,json=normalizedScore,proto3,oneof" json:"normalized_score,omitempty"` +} + +func (x *QaScorecardResult_QaTagResult) Reset() { + *x = QaScorecardResult_QaTagResult{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[87] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QaScorecardResult_QaTagResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QaScorecardResult_QaTagResult) ProtoMessage() {} + +func (x *QaScorecardResult_QaTagResult) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[87] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QaScorecardResult_QaTagResult.ProtoReflect.Descriptor instead. +func (*QaScorecardResult_QaTagResult) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{52, 0} +} + +func (x *QaScorecardResult_QaTagResult) GetTag() string { + if x != nil { + return x.Tag + } + return "" +} + +func (x *QaScorecardResult_QaTagResult) GetScore() float64 { + if x != nil && x.Score != nil { + return *x.Score + } + return 0 +} + +func (x *QaScorecardResult_QaTagResult) GetPotentialScore() float64 { + if x != nil && x.PotentialScore != nil { + return *x.PotentialScore + } + return 0 +} + +func (x *QaScorecardResult_QaTagResult) GetNormalizedScore() float64 { + if x != nil && x.NormalizedScore != nil { + return *x.NormalizedScore + } + return 0 +} + +// A scorecard result may have multiple sets of scores from varying sources, +// one of which becomes the "main" answer above. A ScoreSource represents +// each individual set of scores. +type QaScorecardResult_ScoreSource struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // What created the score. + SourceType QaScorecardResult_ScoreSource_SourceType `protobuf:"varint,1,opt,name=source_type,json=sourceType,proto3,enum=google.cloud.contactcenterinsights.v1.QaScorecardResult_ScoreSource_SourceType" json:"source_type,omitempty"` + // The overall numerical score of the result. + Score *float64 `protobuf:"fixed64,2,opt,name=score,proto3,oneof" json:"score,omitempty"` + // The maximum potential overall score of the scorecard. Any questions + // answered using `na_value` are excluded from this calculation. + PotentialScore *float64 `protobuf:"fixed64,3,opt,name=potential_score,json=potentialScore,proto3,oneof" json:"potential_score,omitempty"` + // The normalized score, which is the score divided by the potential score. + NormalizedScore *float64 `protobuf:"fixed64,4,opt,name=normalized_score,json=normalizedScore,proto3,oneof" json:"normalized_score,omitempty"` + // Collection of tags and their scores. + QaTagResults []*QaScorecardResult_QaTagResult `protobuf:"bytes,5,rep,name=qa_tag_results,json=qaTagResults,proto3" json:"qa_tag_results,omitempty"` +} + +func (x *QaScorecardResult_ScoreSource) Reset() { + *x = QaScorecardResult_ScoreSource{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[88] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *QaScorecardResult_ScoreSource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QaScorecardResult_ScoreSource) ProtoMessage() {} + +func (x *QaScorecardResult_ScoreSource) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[88] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QaScorecardResult_ScoreSource.ProtoReflect.Descriptor instead. +func (*QaScorecardResult_ScoreSource) Descriptor() ([]byte, []int) { + return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP(), []int{52, 1} +} + +func (x *QaScorecardResult_ScoreSource) GetSourceType() QaScorecardResult_ScoreSource_SourceType { + if x != nil { + return x.SourceType + } + return QaScorecardResult_ScoreSource_SOURCE_TYPE_UNSPECIFIED +} + +func (x *QaScorecardResult_ScoreSource) GetScore() float64 { + if x != nil && x.Score != nil { + return *x.Score + } + return 0 } -func (*AnnotatorSelector_SummarizationConfig_SummarizationModel_) isAnnotatorSelector_SummarizationConfig_ModelSource() { +func (x *QaScorecardResult_ScoreSource) GetPotentialScore() float64 { + if x != nil && x.PotentialScore != nil { + return *x.PotentialScore + } + return 0 +} + +func (x *QaScorecardResult_ScoreSource) GetNormalizedScore() float64 { + if x != nil && x.NormalizedScore != nil { + return *x.NormalizedScore + } + return 0 +} + +func (x *QaScorecardResult_ScoreSource) GetQaTagResults() []*QaScorecardResult_QaTagResult { + if x != nil { + return x.QaTagResults + } + return nil } var File_google_cloud_contactcenterinsights_v1_resources_proto protoreflect.FileDescriptor @@ -5741,7 +7590,7 @@ var file_google_cloud_contactcenterinsights_v1_resources_proto_rawDesc = []byte{ 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe4, 0x1c, 0x0a, 0x0c, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x83, 0x1d, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x67, 0x0a, 0x0d, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, @@ -5962,962 +7811,1167 @@ var file_google_cloud_contactcenterinsights_v1_resources_proto_rawDesc = []byte{ 0x0a, 0x06, 0x4d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x45, 0x44, 0x49, 0x55, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x48, 0x4f, 0x4e, 0x45, 0x5f, 0x43, 0x41, 0x4c, 0x4c, 0x10, 0x01, - 0x12, 0x08, 0x0a, 0x04, 0x43, 0x48, 0x41, 0x54, 0x10, 0x02, 0x3a, 0x7c, 0xea, 0x41, 0x79, 0x0a, - 0x31, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, - 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x44, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x42, 0x0a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x42, 0x0c, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x87, 0x04, 0x0a, 0x08, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, - 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x05, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, - 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x63, - 0x0a, 0x0f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x12, 0x67, 0x0a, 0x12, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, - 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, - 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x11, 0x61, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3a, 0x8d, 0x01, 0xea, - 0x41, 0x89, 0x01, 0x0a, 0x2d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x12, 0x58, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, - 0x73, 0x2f, 0x7b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x7d, 0x22, 0xdd, 0x01, 0x0a, - 0x16, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x51, 0x0a, 0x0a, 0x67, 0x63, 0x73, 0x5f, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, - 0x09, 0x67, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x66, 0x0a, 0x11, 0x64, 0x69, - 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, - 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, - 0x52, 0x10, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x54, 0x0a, 0x09, - 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x75, 0x64, - 0x69, 0x6f, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x75, - 0x64, 0x69, 0x6f, 0x55, 0x72, 0x69, 0x12, 0x2a, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x05, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, - 0x72, 0x69, 0x22, 0x6d, 0x0a, 0x10, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3c, 0x0a, 0x17, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, - 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x16, 0x64, 0x69, - 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x75, 0x72, - 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x55, 0x72, - 0x69, 0x22, 0xb4, 0x0a, 0x0a, 0x0e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0x82, 0x01, 0x0a, 0x16, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, - 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x43, 0x61, 0x6c, - 0x6c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x48, 0x00, 0x52, 0x14, 0x63, 0x61, 0x6c, 0x6c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x1a, 0xd9, 0x08, 0x0a, 0x14, 0x43, 0x61, 0x6c, 0x6c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, - 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x57, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, + 0x12, 0x08, 0x0a, 0x04, 0x43, 0x48, 0x41, 0x54, 0x10, 0x02, 0x3a, 0x9a, 0x01, 0xea, 0x41, 0x96, + 0x01, 0x0a, 0x31, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2a, 0x0d, 0x63, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x32, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x42, 0x0c, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x9b, 0x04, 0x0a, 0x08, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x12, 0x17, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x05, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x63, 0x0a, + 0x0f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x0e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x67, 0x0a, 0x12, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x5f, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x41, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x74, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x58, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x43, 0x61, 0x6c, 0x6c, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x61, 0x0a, 0x0a, 0x73, 0x65, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x53, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x0a, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x59, 0x0a, 0x07, 0x73, - 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x73, - 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x71, 0x0a, 0x07, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x57, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x11, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x6f, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x3a, 0xa1, 0x01, 0xea, 0x41, + 0x9d, 0x01, 0x0a, 0x2d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x12, 0x58, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x65, 0x73, + 0x2f, 0x7b, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x7d, 0x2a, 0x08, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x65, 0x73, 0x32, 0x08, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x22, + 0xdd, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x51, 0x0a, 0x0a, 0x67, 0x63, + 0x73, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x48, 0x00, 0x52, 0x09, 0x67, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x66, 0x0a, + 0x11, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x48, 0x00, 0x52, 0x10, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, + 0x54, 0x0a, 0x09, 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, + 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x55, 0x72, 0x69, 0x12, 0x2a, 0x0a, 0x0e, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x55, 0x72, 0x69, 0x22, 0x6d, 0x0a, 0x10, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, + 0x6c, 0x6f, 0x77, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3c, 0x0a, 0x17, 0x64, 0x69, 0x61, + 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x16, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x75, 0x64, 0x69, 0x6f, + 0x5f, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x75, 0x64, 0x69, + 0x6f, 0x55, 0x72, 0x69, 0x22, 0xa0, 0x0b, 0x0a, 0x0e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x82, 0x01, 0x0a, 0x16, 0x63, 0x61, 0x6c, 0x6c, + 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, + 0x43, 0x61, 0x6c, 0x6c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x14, 0x63, 0x61, 0x6c, 0x6c, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x35, 0x0a, 0x08, + 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x1a, 0xc5, 0x09, 0x0a, 0x14, 0x43, 0x61, 0x6c, 0x6c, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x57, 0x0a, 0x0b, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x41, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x74, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x58, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x07, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x87, 0x01, 0x0a, 0x0f, 0x70, 0x68, - 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x5e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x41, - 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x0e, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x65, 0x72, 0x73, 0x12, 0x65, 0x0a, 0x12, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x61, 0x74, 0x61, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x61, 0x0a, 0x0a, 0x73, + 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x10, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1a, 0x6a, 0x0a, 0x0d, 0x45, 0x6e, - 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x69, 0x0a, 0x0c, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x79, 0x0a, 0x13, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4c, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0a, 0x0a, 0x08, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb9, 0x01, 0x0a, 0x10, 0x49, 0x73, 0x73, - 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x55, 0x0a, - 0x0b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x34, 0xfa, 0x41, 0x31, 0x0a, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, - 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x4e, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, - 0x75, 0x65, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x69, 0x73, - 0x73, 0x75, 0x65, 0x73, 0x22, 0x9a, 0x01, 0x0a, 0x1a, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x53, 0x65, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, - 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x54, 0x61, 0x67, 0x12, 0x5b, 0x0a, 0x0e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, - 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x0d, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x22, 0x8f, 0x01, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x44, - 0x0a, 0x10, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x44, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x5f, - 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x11, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, - 0x61, 0x67, 0x65, 0x22, 0x65, 0x0a, 0x0f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x41, 0x73, 0x73, 0x69, - 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x73, 0x75, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x73, 0x73, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x73, 0x63, 0x6f, - 0x72, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0b, 0x64, - 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xae, 0x08, 0x0a, 0x0e, 0x43, - 0x61, 0x6c, 0x6c, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x66, 0x0a, - 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, - 0x61, 0x48, 0x00, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x5d, 0x0a, 0x0e, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x6e, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x57, 0x0a, 0x0c, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, - 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, - 0x52, 0x0b, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4e, 0x0a, - 0x09, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x6f, 0x6c, 0x64, 0x44, 0x61, 0x74, - 0x61, 0x48, 0x00, 0x52, 0x08, 0x68, 0x6f, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x6a, 0x0a, - 0x13, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, - 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, - 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x11, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, 0x65, - 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x64, 0x0a, 0x11, 0x69, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0f, - 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x64, 0x0a, 0x11, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, - 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, - 0x74, 0x61, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x44, 0x61, 0x74, 0x61, 0x12, 0x61, 0x0a, 0x10, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x53, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x0a, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x59, + 0x0a, 0x07, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0e, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, - 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x61, 0x67, 0x12, 0x75, 0x0a, 0x19, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x52, 0x17, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, - 0x12, 0x71, 0x0a, 0x17, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, - 0x6e, 0x64, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, - 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x52, 0x15, 0x61, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x42, 0x6f, 0x75, 0x6e, 0x64, - 0x61, 0x72, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x75, 0x0a, 0x12, 0x41, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, - 0x79, 0x12, 0x1f, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x13, 0x0a, - 0x11, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, - 0x72, 0x79, 0x22, 0xbe, 0x04, 0x0a, 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x21, 0x0a, - 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x46, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x57, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, + 0x52, 0x07, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x71, 0x0a, 0x07, 0x69, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x57, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x61, 0x6c, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x08, 0x73, 0x61, 0x6c, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x52, 0x0a, - 0x09, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, - 0x74, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc2, - 0x01, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, - 0x06, 0x50, 0x45, 0x52, 0x53, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x4c, 0x4f, 0x43, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x52, 0x47, 0x41, 0x4e, - 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x56, 0x45, - 0x4e, 0x54, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x4f, 0x46, 0x5f, - 0x41, 0x52, 0x54, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x4f, 0x4e, 0x53, 0x55, 0x4d, 0x45, - 0x52, 0x5f, 0x47, 0x4f, 0x4f, 0x44, 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05, 0x4f, 0x54, 0x48, 0x45, - 0x52, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x48, 0x4f, 0x4e, 0x45, 0x5f, 0x4e, 0x55, 0x4d, - 0x42, 0x45, 0x52, 0x10, 0x09, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, - 0x10, 0x0a, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x41, 0x54, 0x45, 0x10, 0x0b, 0x12, 0x0a, 0x0a, 0x06, - 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x0c, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x52, 0x49, 0x43, - 0x45, 0x10, 0x0d, 0x22, 0x3b, 0x0a, 0x06, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, - 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0x5b, 0x0a, 0x0f, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x68, 0x72, - 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x35, 0x0a, - 0x10, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0x0d, 0x0a, 0x0b, 0x53, 0x69, 0x6c, 0x65, - 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0x0a, 0x0a, 0x08, 0x48, 0x6f, 0x6c, 0x64, 0x44, - 0x61, 0x74, 0x61, 0x22, 0xb0, 0x02, 0x0a, 0x11, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, 0x65, - 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x5f, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x55, 0x6e, 0x69, 0x71, 0x75, - 0x65, 0x49, 0x64, 0x12, 0x58, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, - 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x6e, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x52, 0x0a, - 0x09, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, - 0x74, 0x22, 0x43, 0x0a, 0x0b, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x45, 0x4e, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, - 0x0a, 0x06, 0x50, 0x52, 0x4f, 0x50, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4f, - 0x4d, 0x4d, 0x4f, 0x4e, 0x10, 0x02, 0x22, 0x3b, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, - 0x65, 0x49, 0x64, 0x22, 0x43, 0x0a, 0x0d, 0x53, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x61, 0x67, 0x6e, 0x69, 0x74, 0x75, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x6d, 0x61, 0x67, 0x6e, 0x69, 0x74, 0x75, - 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x73, 0x0a, 0x0e, 0x49, 0x73, 0x73, 0x75, - 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 0x12, 0x61, 0x0a, 0x10, 0x69, 0x73, - 0x73, 0x75, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, - 0x75, 0x65, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x69, 0x73, - 0x73, 0x75, 0x65, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x95, 0x09, - 0x0a, 0x0a, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x17, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, - 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x07, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x87, 0x01, 0x0a, + 0x0f, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x5e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x43, 0x61, + 0x6c, 0x6c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0x65, 0x0a, 0x12, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x10, 0x69, 0x73, 0x73, + 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x6a, 0x0a, + 0x14, 0x71, 0x61, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x12, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, + 0x72, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x1a, 0x6a, 0x0a, 0x0d, 0x45, 0x6e, 0x74, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x69, 0x0a, 0x0c, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, + 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x1a, 0x79, 0x0a, 0x13, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4c, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb9, 0x01, 0x0a, 0x10, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x55, 0x0a, 0x0b, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x34, 0xfa, 0x41, 0x31, 0x0a, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, + 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x12, 0x4e, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x69, 0x73, 0x73, + 0x75, 0x65, 0x73, 0x22, 0xa4, 0x04, 0x0a, 0x0d, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x65, 0x0a, + 0x0f, 0x71, 0x61, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, + 0x61, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x2e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x71, 0x61, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, + 0x10, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x65, 0x64, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0b, - 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, - 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x6d, 0x0a, 0x11, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, - 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x6a, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, - 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, - 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x42, 0x06, 0xe0, 0x41, 0x03, 0xe0, - 0x41, 0x05, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x12, 0x5a, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x3a, 0xbd, 0x01, 0xea, + 0x41, 0xb9, 0x01, 0x0a, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, + 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x64, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, + 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, + 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x66, 0x65, + 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x66, 0x65, + 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x7d, 0x2a, 0x0e, 0x66, + 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x32, 0x0d, 0x66, + 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x0c, 0x0a, 0x0a, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x1a, 0x43, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x53, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x61, 0x67, 0x12, 0x5b, 0x0a, 0x0e, 0x73, 0x65, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x22, 0x8f, 0x01, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x53, 0x69, 0x6c, + 0x65, 0x6e, 0x63, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x5f, + 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x73, 0x69, 0x6c, 0x65, 0x6e, + 0x63, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x12, 0x73, 0x69, + 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x50, + 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x22, 0x65, 0x0a, 0x0f, 0x49, 0x73, 0x73, + 0x75, 0x65, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x73, 0x73, + 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x05, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x22, 0xae, 0x08, 0x0a, 0x0e, 0x43, 0x61, 0x6c, 0x6c, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x66, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x5d, 0x0a, 0x0e, 0x73, + 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x65, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x57, 0x0a, 0x0c, 0x73, 0x69, + 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x4e, 0x0a, 0x09, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x48, + 0x6f, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x08, 0x68, 0x6f, 0x6c, 0x64, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x6a, 0x0a, 0x13, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x65, + 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, + 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x11, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x64, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, + 0x74, 0x61, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x44, 0x61, 0x74, 0x61, 0x12, 0x64, 0x0a, 0x11, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x68, 0x72, 0x61, + 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 0x12, 0x61, 0x0a, 0x10, 0x69, + 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, - 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, - 0x0d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x43, 0x6f, - 0x64, 0x65, 0x1a, 0xc8, 0x01, 0x0a, 0x0f, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x56, 0x0a, 0x06, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x73, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0e, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1f, + 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x61, 0x67, 0x12, + 0x75, 0x0a, 0x19, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x52, 0x17, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x12, 0x71, 0x0a, 0x17, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, + 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, + 0x72, 0x79, 0x52, 0x15, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, + 0x64, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x22, 0x75, 0x0a, 0x12, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x64, 0x5f, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x09, 0x77, + 0x6f, 0x72, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x42, 0x13, 0x0a, 0x11, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x22, 0xbe, 0x04, 0x0a, 0x06, 0x45, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x57, + 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x61, 0x6c, 0x69, 0x65, + 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x73, 0x61, 0x6c, 0x69, 0x65, + 0x6e, 0x63, 0x65, 0x12, 0x52, 0x0a, 0x09, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x64, 0x69, - 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x12, 0x45, - 0x0a, 0x1c, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x1a, 0x74, 0x72, 0x61, 0x69, 0x6e, - 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x6a, 0x0a, - 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, - 0x0a, 0x55, 0x4e, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, - 0x09, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, - 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, - 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x44, - 0x45, 0x4c, 0x45, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x22, 0x41, 0x0a, 0x09, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x31, 0x10, 0x01, 0x12, - 0x0b, 0x0a, 0x07, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x32, 0x10, 0x02, 0x3a, 0x77, 0xea, 0x41, - 0x74, 0x0a, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x12, 0x41, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x69, 0x73, 0x73, 0x75, - 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x7d, 0x22, 0xae, 0x03, 0x0a, 0x05, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, - 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x05, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, - 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, - 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x30, 0x0a, 0x11, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x75, 0x74, 0x74, 0x65, 0x72, 0x61, - 0x6e, 0x63, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, - 0x10, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x55, 0x74, 0x74, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x64, 0x65, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, - 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x3a, 0x81, 0x01, 0xea, 0x41, 0x7e, 0x0a, 0x2a, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x73, 0x65, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc2, 0x01, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, + 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x45, 0x52, 0x53, 0x4f, 0x4e, 0x10, 0x01, 0x12, + 0x0c, 0x0a, 0x08, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x10, 0x0a, + 0x0c, 0x4f, 0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, + 0x09, 0x0a, 0x05, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x57, 0x4f, + 0x52, 0x4b, 0x5f, 0x4f, 0x46, 0x5f, 0x41, 0x52, 0x54, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x43, + 0x4f, 0x4e, 0x53, 0x55, 0x4d, 0x45, 0x52, 0x5f, 0x47, 0x4f, 0x4f, 0x44, 0x10, 0x06, 0x12, 0x09, + 0x0a, 0x05, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x48, 0x4f, + 0x4e, 0x45, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x09, 0x12, 0x0b, 0x0a, 0x07, 0x41, + 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x0a, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x41, 0x54, 0x45, + 0x10, 0x0b, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x0c, 0x12, 0x09, + 0x0a, 0x05, 0x50, 0x52, 0x49, 0x43, 0x45, 0x10, 0x0d, 0x22, 0x3b, 0x0a, 0x06, 0x49, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x5b, 0x0a, 0x0f, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x68, 0x72, + 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, + 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0x35, 0x0a, 0x10, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, + 0x77, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0x0d, + 0x0a, 0x0b, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0x0a, 0x0a, + 0x08, 0x48, 0x6f, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x22, 0xb0, 0x02, 0x0a, 0x11, 0x45, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x28, 0x0a, 0x10, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x64, 0x12, 0x58, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x2e, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x52, 0x0a, 0x09, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, + 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x73, 0x65, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x43, 0x0a, 0x0b, 0x4d, 0x65, 0x6e, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x45, 0x4e, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x52, 0x4f, 0x50, 0x45, 0x52, 0x10, 0x01, + 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x10, 0x02, 0x22, 0x3b, 0x0a, 0x0f, + 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x28, 0x0a, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x64, 0x22, 0x43, 0x0a, 0x0d, 0x53, 0x65, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x61, + 0x67, 0x6e, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x6d, + 0x61, 0x67, 0x6e, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x73, + 0x0a, 0x0e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x61, 0x0a, 0x10, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x12, 0x50, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x69, 0x73, - 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x69, 0x73, 0x73, 0x75, 0x65, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x7d, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x2f, 0x7b, - 0x69, 0x73, 0x73, 0x75, 0x65, 0x7d, 0x22, 0xa0, 0x04, 0x0a, 0x14, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, - 0x40, 0x0a, 0x1c, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1a, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x64, 0x43, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x48, 0x0a, 0x20, 0x75, 0x6e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1e, 0x75, 0x6e, 0x63, - 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x6c, 0x0a, 0x0b, 0x69, - 0x73, 0x73, 0x75, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x4b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x49, 0x73, - 0x73, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x69, - 0x73, 0x73, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x1a, 0x85, 0x01, 0x0a, 0x0a, 0x49, 0x73, - 0x73, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x73, 0x75, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x73, 0x73, 0x75, 0x65, 0x12, 0x3e, - 0x0a, 0x1b, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x19, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, - 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x0f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x22, 0x95, 0x09, 0x0a, 0x0a, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, + 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x40, + 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x6d, 0x0a, 0x11, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x6a, 0x0a, 0x0e, 0x74, + 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x42, 0x06, 0xe0, 0x41, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, + 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x5a, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, + 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x6e, 0x67, + 0x75, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x1a, 0xc8, 0x01, 0x0a, 0x0f, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x56, 0x0a, 0x06, + 0x6d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x6d, 0x65, + 0x64, 0x69, 0x75, 0x6d, 0x12, 0x45, 0x0a, 0x1c, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, + 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x1a, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x22, 0x6a, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x55, 0x4e, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x45, + 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x49, 0x4e, 0x47, + 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x45, 0x44, 0x10, 0x03, + 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x49, 0x4e, 0x47, 0x10, + 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x22, + 0x41, 0x0a, 0x09, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, + 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x56, 0x31, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x32, + 0x10, 0x02, 0x3a, 0x77, 0xea, 0x41, 0x74, 0x0a, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, + 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x41, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x7d, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x69, + 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x7d, 0x22, 0xae, 0x03, 0x0a, 0x05, + 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, + 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x1a, 0x85, 0x01, 0x0a, 0x0f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x5c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x11, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, + 0x75, 0x74, 0x74, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x10, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x55, 0x74, 0x74, + 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x44, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x81, 0x01, 0xea, 0x41, 0x7e, 0x0a, 0x2a, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x50, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x7d, 0x2f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, + 0x7b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x7d, 0x2f, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x7d, 0x22, 0xa0, 0x04, 0x0a, + 0x14, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x40, 0x0a, 0x1c, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, + 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1a, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x7a, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x20, 0x75, 0x6e, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x1e, 0x75, 0x6e, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x65, 0x64, 0x43, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x6c, 0x0a, 0x0b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa4, 0x07, 0x0a, 0x0d, 0x50, 0x68, - 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x27, 0x0a, 0x0b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x05, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x72, 0x65, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x67, 0x12, 0x51, 0x0a, 0x14, 0x72, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x12, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, - 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x5f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x46, 0x2e, + 0x61, 0x74, 0x73, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x0a, 0x69, 0x73, 0x73, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x1a, + 0x85, 0x01, 0x0a, 0x0a, 0x49, 0x73, 0x73, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x69, 0x73, 0x73, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, + 0x73, 0x73, 0x75, 0x65, 0x12, 0x3e, 0x0a, 0x1b, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x65, 0x64, 0x5f, + 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x85, 0x01, 0x0a, 0x0f, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x5c, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0xa4, 0x07, 0x0a, 0x0d, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x05, 0xe0, + 0x41, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1f, + 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x67, 0x12, + 0x51, 0x0a, 0x14, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x12, + 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x5f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x72, 0x61, + 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x74, + 0x0a, 0x18, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, + 0x75, 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x15, 0x70, + 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x12, 0x55, 0x0a, 0x16, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x14, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x62, 0x0a, 0x0a, 0x72, + 0x6f, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x2e, + 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, + 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x22, 0x50, 0x0a, 0x11, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x48, 0x52, 0x41, 0x53, 0x45, + 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, + 0x4c, 0x4c, 0x5f, 0x4f, 0x46, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4e, 0x59, 0x5f, 0x4f, + 0x46, 0x10, 0x02, 0x3a, 0x80, 0x01, 0xea, 0x41, 0x7d, 0x0a, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x47, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x72, 0x7d, 0x22, 0xcd, 0x02, 0x0a, 0x14, 0x50, 0x68, 0x72, 0x61, 0x73, + 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x6d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x54, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x65, 0x72, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, - 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x74, 0x0a, 0x18, 0x70, 0x68, 0x72, 0x61, - 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, + 0x68, 0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, + 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, + 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x64, + 0x0a, 0x12, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, + 0x75, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, - 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x15, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x55, - 0x0a, 0x16, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, - 0x14, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x62, 0x0a, 0x0a, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x52, 0x10, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, + 0x75, 0x6c, 0x65, 0x73, 0x22, 0x60, 0x0a, 0x18, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x2c, 0x0a, 0x28, 0x50, 0x48, 0x52, 0x41, 0x53, 0x45, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, + 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, + 0x0a, 0x06, 0x41, 0x4c, 0x4c, 0x5f, 0x4f, 0x46, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4e, + 0x59, 0x5f, 0x4f, 0x46, 0x10, 0x02, 0x22, 0x9c, 0x01, 0x0a, 0x0f, 0x50, 0x68, 0x72, 0x61, 0x73, + 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x12, + 0x54, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x8a, 0x01, 0x0a, 0x15, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x67, 0x0a, 0x12, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x10, 0x65, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x08, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x22, 0x39, 0x0a, 0x10, 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x73, + 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, + 0x63, 0x61, 0x73, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x22, 0xb0, 0x09, + 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x6e, 0x67, 0x75, + 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x44, 0x0a, 0x10, + 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x74, 0x6c, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x74, 0x6c, 0x12, 0x91, 0x01, 0x0a, 0x1c, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x5f, 0x6e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, - 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x09, - 0x72, 0x6f, 0x6c, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, - 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x50, 0x0a, 0x11, 0x50, - 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x48, 0x52, 0x41, 0x53, 0x45, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, - 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4c, 0x4c, 0x5f, 0x4f, 0x46, 0x10, - 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4e, 0x59, 0x5f, 0x4f, 0x46, 0x10, 0x02, 0x3a, 0x80, 0x01, - 0xea, 0x41, 0x7d, 0x0a, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x47, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, - 0x2f, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x2f, - 0x7b, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x7d, - 0x22, 0xcd, 0x02, 0x0a, 0x14, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x6d, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x54, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x75, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, - 0x41, 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x64, 0x0a, 0x12, 0x70, 0x68, 0x72, 0x61, - 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x72, - 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x10, 0x70, 0x68, - 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x60, - 0x0a, 0x18, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, - 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x28, 0x50, 0x48, - 0x52, 0x41, 0x53, 0x45, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, - 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4c, 0x4c, 0x5f, - 0x4f, 0x46, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4e, 0x59, 0x5f, 0x4f, 0x46, 0x10, 0x02, - 0x22, 0x9c, 0x01, 0x0a, 0x0f, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x75, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, - 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x07, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x12, 0x54, 0x0a, 0x06, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x73, 0x75, + 0x62, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x1a, 0x70, 0x75, 0x62, 0x73, + 0x75, 0x62, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x67, 0x0a, 0x0f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, + 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x0e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x61, 0x0a, 0x10, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, 0x75, 0x6c, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, - 0x8a, 0x01, 0x0a, 0x15, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x52, - 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x67, 0x0a, 0x12, 0x65, 0x78, 0x61, - 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, - 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, - 0x52, 0x10, 0x65, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x42, 0x08, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x39, 0x0a, 0x10, - 0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, - 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x63, 0x61, 0x73, 0x65, 0x53, 0x65, - 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x22, 0xb0, 0x09, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, - 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, - 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, - 0x67, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x63, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x74, 0x6c, 0x12, 0x91, 0x01, 0x0a, - 0x1c, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x4f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x73, 0x75, 0x62, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x1a, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x12, 0x67, 0x0a, 0x0f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x31, 0x2e, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x0f, 0x72, 0x65, 0x64, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x5d, 0x0a, 0x0d, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x61, 0x6e, 0x61, 0x6c, 0x79, - 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x61, 0x0a, 0x10, 0x72, 0x65, 0x64, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x64, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, 0x72, 0x65, 0x64, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5d, 0x0a, 0x0d, - 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, 0x65, 0x65, - 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x73, - 0x70, 0x65, 0x65, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0xa7, 0x02, 0x0a, 0x0e, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x55, - 0x0a, 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x70, - 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, - 0x24, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, - 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x55, 0x0a, 0x27, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, - 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x61, - 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x24, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, - 0x69, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x67, 0x0a, 0x12, - 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x52, 0x11, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0x4d, 0x0a, 0x1f, 0x50, 0x75, 0x62, 0x73, 0x75, 0x62, 0x4e, - 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x64, 0xea, 0x41, 0x61, 0x0a, 0x2d, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x30, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xb9, 0x01, 0x0a, 0x0e, 0x45, - 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x17, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x07, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6b, 0x6d, - 0x73, 0x4b, 0x65, 0x79, 0x3a, 0x70, 0xea, 0x41, 0x6d, 0x0a, 0x33, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x36, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x22, 0x6d, 0x0a, 0x0f, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2f, 0x0a, 0x13, 0x64, 0x65, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x79, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, - 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x22, 0x62, 0x0a, 0x0c, 0x53, 0x70, 0x65, 0x65, 0x63, 0x68, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x52, 0x0a, 0x11, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x5f, - 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x25, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x63, - 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x52, 0x10, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x52, - 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x22, 0xd2, 0x0b, 0x0a, 0x11, 0x52, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x6d, 0x0a, 0x12, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x5f, 0x73, 0x75, 0x67, 0x67, 0x65, - 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x53, 0x75, 0x67, 0x67, 0x65, - 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x11, 0x61, 0x72, 0x74, - 0x69, 0x63, 0x6c, 0x65, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x55, - 0x0a, 0x0a, 0x66, 0x61, 0x71, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, - 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x71, 0x41, 0x6e, - 0x73, 0x77, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x09, 0x66, 0x61, 0x71, 0x41, - 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x0b, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x5f, 0x72, - 0x65, 0x70, 0x6c, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, - 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x6d, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x44, 0x61, 0x74, - 0x61, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, - 0x7d, 0x0a, 0x18, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, - 0x5f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, - 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6d, 0x61, 0x72, 0x74, 0x43, - 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, - 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x16, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x65, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x79, - 0x0a, 0x16, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, + 0x31, 0x2e, 0x53, 0x70, 0x65, 0x65, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x1a, 0xa7, 0x02, 0x0a, 0x0e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x55, 0x0a, 0x27, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, + 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x24, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, + 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x55, 0x0a, 0x27, 0x75, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x63, + 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x24, 0x75, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, + 0x67, 0x65, 0x12, 0x67, 0x0a, 0x12, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x5f, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, - 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, - 0x77, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, - 0x48, 0x00, 0x52, 0x15, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x6e, - 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0xa4, 0x01, 0x0a, 0x25, 0x63, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x11, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x6f, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0x4d, 0x0a, 0x1f, 0x50, + 0x75, 0x62, 0x73, 0x75, 0x62, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x64, 0xea, 0x41, 0x61, 0x0a, + 0x2d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x30, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x22, 0xe5, 0x04, 0x0a, 0x0c, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, + 0x65, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, + 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, + 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x67, 0x0a, 0x12, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x11, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x12, 0x2f, 0x0a, 0x13, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x5f, 0x70, 0x65, 0x72, + 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x61, + 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x3a, 0x9b, 0x01, 0xea, 0x41, 0x97, 0x01, + 0x0a, 0x31, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, + 0x75, 0x6c, 0x65, 0x12, 0x45, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x61, 0x6e, 0x61, + 0x6c, 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x61, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x7d, 0x2a, 0x0d, 0x61, 0x6e, 0x61, 0x6c, + 0x79, 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x32, 0x0c, 0x61, 0x6e, 0x61, 0x6c, 0x79, + 0x73, 0x69, 0x73, 0x52, 0x75, 0x6c, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb9, 0x01, 0x0a, 0x0e, 0x45, 0x6e, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x17, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x07, 0x6b, 0x6d, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x6b, 0x6d, 0x73, 0x4b, + 0x65, 0x79, 0x3a, 0x70, 0xea, 0x41, 0x6d, 0x0a, 0x33, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x36, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, + 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x70, 0x65, 0x63, 0x22, 0x6d, 0x0a, 0x0f, 0x52, 0x65, 0x64, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2f, 0x0a, 0x13, 0x64, 0x65, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, + 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x65, 0x6d, 0x70, 0x6c, + 0x61, 0x74, 0x65, 0x22, 0x62, 0x0a, 0x0c, 0x53, 0x70, 0x65, 0x65, 0x63, 0x68, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x52, 0x0a, 0x11, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x5f, 0x72, 0x65, + 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, + 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x63, 0x6f, 0x67, + 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x52, 0x10, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x52, 0x65, 0x63, + 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x22, 0xd2, 0x0b, 0x0a, 0x11, 0x52, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6d, 0x0a, + 0x12, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x5f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x67, 0x67, 0x65, - 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x23, 0x63, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x60, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, - 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, - 0x6e, 0x64, 0x61, 0x72, 0x79, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x6f, 0x75, 0x6e, - 0x64, 0x61, 0x72, 0x79, 0x12, 0x5c, 0x0a, 0x0c, 0x65, 0x6e, 0x64, 0x5f, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x61, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, - 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, - 0x6e, 0x64, 0x61, 0x72, 0x79, 0x52, 0x0b, 0x65, 0x6e, 0x64, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, - 0x72, 0x79, 0x12, 0x5e, 0x0a, 0x0f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x65, - 0x64, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, - 0x63, 0x6b, 0x52, 0x0e, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, - 0x63, 0x6b, 0x12, 0x61, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, - 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x1a, 0x8e, 0x02, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, - 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x71, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x22, 0x51, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x53, 0x4f, 0x55, 0x52, - 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x10, - 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54, 0x45, 0x44, 0x5f, 0x51, - 0x55, 0x45, 0x52, 0x59, 0x10, 0x02, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xaf, - 0x02, 0x0a, 0x0e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, - 0x6b, 0x12, 0x73, 0x0a, 0x11, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, - 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x46, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, - 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x46, 0x65, 0x65, 0x64, 0x62, - 0x61, 0x63, 0x6b, 0x2e, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x52, 0x10, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, - 0x73, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x65, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x65, 0x64, - 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x09, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x22, 0x70, - 0x0a, 0x10, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x4e, 0x45, 0x53, - 0x53, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x54, 0x5f, 0x43, 0x4f, 0x52, - 0x52, 0x45, 0x43, 0x54, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x41, 0x52, 0x54, 0x49, 0x41, - 0x4c, 0x4c, 0x59, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x10, 0x02, 0x12, 0x11, 0x0a, - 0x0d, 0x46, 0x55, 0x4c, 0x4c, 0x59, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x10, 0x03, - 0x22, 0xca, 0x02, 0x0a, 0x15, 0x41, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x53, 0x75, 0x67, 0x67, - 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, - 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, - 0x72, 0x69, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, - 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x66, 0x0a, - 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x4a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, - 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x53, - 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x72, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc6, 0x02, - 0x0a, 0x0d, 0x46, 0x61, 0x71, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x16, 0x0a, 0x06, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x64, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5e, - 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x11, 0x61, 0x72, 0x74, 0x69, 0x63, + 0x6c, 0x65, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x0a, + 0x66, 0x61, 0x71, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x71, 0x41, 0x6e, 0x73, 0x77, - 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, - 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x92, 0x02, 0x0a, 0x0e, 0x53, 0x6d, 0x61, 0x72, 0x74, - 0x52, 0x65, 0x70, 0x6c, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x70, - 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x12, - 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x63, - 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x64, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x5f, 0x0a, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, + 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x09, 0x66, 0x61, 0x71, 0x41, 0x6e, 0x73, + 0x77, 0x65, 0x72, 0x12, 0x58, 0x0a, 0x0b, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x70, + 0x6c, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x6d, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x44, 0x61, 0x74, 0x61, 0x48, + 0x00, 0x52, 0x0a, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x7d, 0x0a, + 0x18, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x73, + 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6d, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, + 0x70, 0x6f, 0x73, 0x65, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, + 0x74, 0x61, 0x48, 0x00, 0x52, 0x16, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, + 0x73, 0x65, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x79, 0x0a, 0x16, + 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6d, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x44, - 0x61, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x1a, 0x3b, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, + 0x52, 0x15, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0xa4, 0x01, 0x0a, 0x25, 0x63, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x23, 0x63, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, + 0x0a, 0x0d, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x60, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, + 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x61, 0x72, 0x79, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, + 0x72, 0x79, 0x12, 0x5c, 0x0a, 0x0c, 0x65, 0x6e, 0x64, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, + 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x61, 0x72, 0x79, 0x52, 0x0b, 0x65, 0x6e, 0x64, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, + 0x12, 0x5e, 0x0a, 0x0f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x65, 0x64, 0x62, + 0x61, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, + 0x52, 0x0e, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, + 0x12, 0x61, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x49, 0x6e, + 0x70, 0x75, 0x74, 0x1a, 0x8e, 0x02, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x71, + 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x22, 0x51, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x1c, 0x0a, 0x18, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, + 0x0a, 0x0b, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x10, 0x01, 0x12, + 0x13, 0x0a, 0x0f, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54, 0x45, 0x44, 0x5f, 0x51, 0x55, 0x45, + 0x52, 0x59, 0x10, 0x02, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xaf, 0x02, 0x0a, + 0x0e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x12, + 0x73, 0x0a, 0x11, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x6c, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x46, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, + 0x6b, 0x2e, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x52, 0x10, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x65, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x6c, 0x69, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x1c, + 0x0a, 0x09, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x09, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x22, 0x70, 0x0a, 0x10, + 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x4e, 0x45, 0x53, 0x53, 0x5f, + 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x54, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, + 0x43, 0x54, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x41, 0x52, 0x54, 0x49, 0x41, 0x4c, 0x4c, + 0x59, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x46, + 0x55, 0x4c, 0x4c, 0x59, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x10, 0x03, 0x22, 0xca, + 0x02, 0x0a, 0x15, 0x41, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, + 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x66, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x53, 0x75, 0x67, + 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb4, 0x02, 0x0a, 0x1a, - 0x53, 0x6d, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x53, 0x75, 0x67, 0x67, - 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, - 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x6b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc6, 0x02, 0x0a, 0x0d, + 0x46, 0x61, 0x71, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, + 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, + 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5e, 0x0a, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x71, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, + 0x44, 0x61, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0x92, 0x02, 0x0a, 0x0e, 0x53, 0x6d, 0x61, 0x72, 0x74, 0x52, 0x65, + 0x70, 0x6c, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x70, 0x6c, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x29, 0x0a, + 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, + 0x6e, 0x63, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x5f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x6d, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x44, 0x61, 0x74, + 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x1a, 0x3b, 0x0a, 0x0d, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb4, 0x02, 0x0a, 0x1a, 0x53, 0x6d, + 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x67, 0x67, + 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, + 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x01, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x12, 0x6b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6d, + 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x12, 0x21, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x6d, 0x0a, 0x19, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x30, 0x0a, + 0x14, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x69, 0x61, + 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, + 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x22, + 0xb1, 0x04, 0x0a, 0x27, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x67, + 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, + 0x85, 0x01, 0x0a, 0x0d, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x60, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x6d, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x53, 0x75, 0x67, 0x67, - 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x6d, 0x0a, 0x19, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x30, 0x0a, 0x14, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, - 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, - 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, - 0x65, 0x22, 0xb1, 0x04, 0x0a, 0x27, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, - 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, - 0x74, 0x12, 0x85, 0x01, 0x0a, 0x0d, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x60, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x53, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x74, 0x65, 0x78, 0x74, 0x53, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x78, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x5c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x67, 0x67, 0x65, - 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x53, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x74, 0x65, 0x78, - 0x74, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x78, 0x0a, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x5c, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x67, - 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x5f, 0x72, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6e, 0x73, 0x77, - 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x54, 0x65, 0x78, 0x74, 0x53, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xe5, 0x03, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, - 0x74, 0x12, 0x6c, 0x0a, 0x1b, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x5f, - 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x41, 0x27, 0x0a, 0x25, 0x64, 0x69, 0x61, - 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x19, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, - 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x19, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x16, 0x64, 0x69, - 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, - 0x70, 0x61, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x15, - 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, - 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x1b, 0x6f, 0x62, 0x66, 0x75, 0x73, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x6f, 0x62, 0x66, 0x75, - 0x73, 0x63, 0x61, 0x74, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x64, 0x12, 0x57, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, - 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, - 0x6e, 0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x5f, 0x0a, - 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x48, - 0x55, 0x4d, 0x41, 0x4e, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, - 0x41, 0x55, 0x54, 0x4f, 0x4d, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x10, - 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x4e, 0x44, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0x03, 0x12, - 0x0d, 0x0a, 0x09, 0x41, 0x4e, 0x59, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x10, 0x04, 0x42, 0x0d, - 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x22, 0xc2, 0x02, - 0x0a, 0x04, 0x56, 0x69, 0x65, 0x77, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, + 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, + 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x1a, 0x3f, 0x0a, 0x11, 0x54, 0x65, 0x78, 0x74, 0x53, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0xe5, 0x03, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, + 0x6c, 0x0a, 0x1b, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x61, + 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x41, 0x27, 0x0a, 0x25, 0x64, 0x69, 0x61, 0x6c, 0x6f, + 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, + 0x48, 0x00, 0x52, 0x19, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x50, 0x61, + 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, + 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x16, 0x64, 0x69, 0x61, 0x6c, + 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x15, 0x64, 0x69, + 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, + 0x61, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x1b, 0x6f, 0x62, 0x66, 0x75, 0x73, 0x63, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x6f, 0x62, 0x66, 0x75, 0x73, 0x63, + 0x61, 0x74, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x12, 0x57, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, + 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x5f, 0x0a, 0x04, 0x52, + 0x6f, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x48, 0x55, 0x4d, + 0x41, 0x4e, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x55, + 0x54, 0x4f, 0x4d, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, + 0x0c, 0x0a, 0x08, 0x45, 0x4e, 0x44, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0x03, 0x12, 0x0d, 0x0a, + 0x09, 0x41, 0x4e, 0x59, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x10, 0x04, 0x42, 0x0d, 0x0a, 0x0b, + 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x22, 0xc2, 0x02, 0x0a, 0x04, + 0x56, 0x69, 0x65, 0x77, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, + 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x64, 0xea, 0x41, 0x61, 0x0a, + 0x29, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x56, 0x69, 0x65, 0x77, 0x12, 0x34, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x7d, 0x2f, 0x76, 0x69, 0x65, 0x77, 0x73, 0x2f, 0x7b, 0x76, 0x69, 0x65, 0x77, 0x7d, + 0x22, 0xd3, 0x0c, 0x0a, 0x11, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x3c, 0x0a, 0x1a, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x72, 0x75, 0x6e, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x6f, 0x72, 0x12, 0x32, 0x0a, 0x15, 0x72, 0x75, 0x6e, 0x5f, 0x73, 0x69, 0x6c, 0x65, + 0x6e, 0x63, 0x65, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x13, 0x72, 0x75, 0x6e, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x41, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x3f, 0x0a, 0x1c, 0x72, 0x75, 0x6e, 0x5f, + 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x5f, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, + 0x72, 0x75, 0x6e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, + 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x60, 0x0a, 0x0f, 0x70, 0x68, 0x72, + 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x09, 0x42, 0x37, 0xfa, 0x41, 0x34, 0x0a, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x68, + 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x0e, 0x70, 0x68, 0x72, + 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x72, + 0x75, 0x6e, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x72, 0x75, + 0x6e, 0x53, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x75, 0x6e, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x12, 0x72, 0x75, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x41, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x12, 0x72, 0x75, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x41, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x19, 0x72, 0x75, 0x6e, 0x5f, 0x69, + 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x72, 0x75, 0x6e, 0x49, + 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x6f, 0x72, 0x12, 0x57, 0x0a, 0x0c, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x42, 0x34, 0xfa, 0x41, 0x31, 0x0a, 0x2f, 0x63, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x0b, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0x3e, 0x0a, 0x1b, 0x72, + 0x75, 0x6e, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x19, 0x72, 0x75, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x7f, 0x0a, 0x14, 0x73, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x13, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x28, 0x0a, 0x10, + 0x72, 0x75, 0x6e, 0x5f, 0x71, 0x61, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x75, 0x6e, 0x51, 0x61, 0x41, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x5e, 0x0a, 0x09, 0x71, 0x61, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x2e, 0x51, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x71, 0x61, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x8b, 0x03, 0x0a, 0x13, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x67, + 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xfa, 0x41, + 0x2f, 0x0a, 0x2d, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x48, 0x00, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x13, 0x73, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x5f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, + 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x12, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x66, 0x0a, 0x12, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x55, 0x4d, 0x4d, 0x41, 0x52, 0x49, 0x5a, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x41, 0x53, 0x45, 0x4c, + 0x49, 0x4e, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x42, + 0x41, 0x53, 0x45, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x5f, 0x56, 0x32, + 0x5f, 0x30, 0x10, 0x02, 0x42, 0x0e, 0x0a, 0x0c, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x1a, 0x9f, 0x02, 0x0a, 0x08, 0x51, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x78, 0x0a, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x2e, 0x51, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x1a, 0x84, 0x01, 0x0a, 0x0d, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x73, 0x0a, + 0x16, 0x71, 0x61, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x72, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x3d, 0xfa, + 0x41, 0x3a, 0x0a, 0x38, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x71, 0x61, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x5f, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xa0, 0x0a, 0x0a, 0x0a, 0x51, 0x61, 0x51, 0x75, 0x65, + 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, + 0x0a, 0x0c, 0x61, 0x62, 0x62, 0x72, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x62, 0x62, 0x72, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, @@ -6925,136 +8979,379 @@ var file_google_cloud_contactcenterinsights_v1_resources_proto_rawDesc = []byte{ 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x64, 0xea, 0x41, - 0x61, 0x0a, 0x29, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, - 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x56, 0x69, 0x65, 0x77, 0x12, 0x34, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, - 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x76, 0x69, 0x65, 0x77, 0x73, 0x2f, 0x7b, 0x76, 0x69, 0x65, - 0x77, 0x7d, 0x22, 0xa7, 0x09, 0x0a, 0x11, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x3c, 0x0a, 0x1a, 0x72, 0x75, 0x6e, 0x5f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x72, 0x75, - 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x32, 0x0a, 0x15, 0x72, 0x75, 0x6e, 0x5f, 0x73, 0x69, - 0x6c, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x72, 0x75, 0x6e, 0x53, 0x69, 0x6c, 0x65, 0x6e, 0x63, - 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x3f, 0x0a, 0x1c, 0x72, 0x75, - 0x6e, 0x5f, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, - 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x19, 0x72, 0x75, 0x6e, 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x65, 0x72, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x60, 0x0a, 0x0f, 0x70, - 0x68, 0x72, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x09, 0x42, 0x37, 0xfa, 0x41, 0x34, 0x0a, 0x32, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x50, 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x0e, 0x70, - 0x68, 0x72, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0x36, 0x0a, - 0x17, 0x72, 0x75, 0x6e, 0x5f, 0x73, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, - 0x72, 0x75, 0x6e, 0x53, 0x65, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x75, 0x6e, 0x5f, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x12, 0x72, 0x75, 0x6e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x41, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x75, 0x6e, 0x5f, 0x69, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x72, 0x75, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x39, 0x0a, 0x19, 0x72, 0x75, 0x6e, - 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x72, 0x75, - 0x6e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x41, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x6f, 0x72, 0x12, 0x57, 0x0a, 0x0c, 0x69, 0x73, 0x73, 0x75, 0x65, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x42, 0x34, 0xfa, 0x41, 0x31, 0x0a, - 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, - 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x49, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x52, 0x0b, 0x69, 0x73, 0x73, 0x75, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0x3e, 0x0a, - 0x1b, 0x72, 0x75, 0x6e, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x19, 0x72, 0x75, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x7f, 0x0a, - 0x14, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x6f, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x2f, 0x0a, 0x13, 0x61, + 0x6e, 0x73, 0x77, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, + 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x65, 0x0a, 0x0e, + 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x73, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x51, + 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x43, 0x68, + 0x6f, 0x69, 0x63, 0x65, 0x52, 0x0d, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x43, 0x68, 0x6f, 0x69, + 0x63, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x53, 0x0a, + 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, + 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x12, 0x69, 0x0a, 0x0f, 0x74, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x13, 0x73, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x8b, - 0x03, 0x0a, 0x13, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x67, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xfa, 0x41, 0x2f, 0x0a, 0x2d, 0x64, 0x69, 0x61, 0x6c, 0x6f, - 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, - 0x92, 0x01, 0x0a, 0x13, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x5f, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, + 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x74, + 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0xca, 0x01, + 0x0a, 0x0c, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x1d, + 0x0a, 0x09, 0x73, 0x74, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x08, 0x73, 0x74, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, + 0x09, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, + 0x48, 0x00, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0a, + 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1b, 0x0a, + 0x08, 0x6e, 0x61, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, + 0x00, 0x52, 0x07, 0x6e, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x19, 0x0a, 0x05, + 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x05, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x2a, 0x0a, 0x07, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x1f, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x75, 0x72, 0x61, 0x63, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, 0x61, 0x63, + 0x63, 0x75, 0x72, 0x61, 0x63, 0x79, 0x1a, 0xeb, 0x01, 0x0a, 0x0e, 0x54, 0x75, 0x6e, 0x69, 0x6e, + 0x67, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x35, 0x0a, 0x17, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x7f, 0x0a, 0x1b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x73, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, + 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x19, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, + 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x3a, 0xc2, 0x01, 0xea, 0x41, 0xbe, 0x01, 0x0a, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x48, 0x00, - 0x52, 0x12, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x66, 0x0a, 0x12, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x55, - 0x4d, 0x4d, 0x41, 0x52, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x12, 0x0a, 0x0e, 0x42, 0x41, 0x53, 0x45, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x4c, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x41, 0x53, 0x45, 0x4c, 0x49, 0x4e, 0x45, 0x5f, - 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x5f, 0x56, 0x32, 0x5f, 0x30, 0x10, 0x02, 0x42, 0x0e, 0x0a, 0x0c, - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0xe0, 0x05, 0xea, - 0x41, 0x84, 0x01, 0x0a, 0x2d, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x12, 0x53, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, - 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x7d, 0xea, 0x41, 0xd4, 0x01, 0x0a, 0x25, 0x64, 0x69, 0x61, - 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, - 0x6e, 0x74, 0x12, 0x4a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, - 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x7d, 0x12, 0x5f, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x7d, 0xea, - 0x41, 0x64, 0x0a, 0x20, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x63, 0x6f, 0x67, 0x6e, - 0x69, 0x7a, 0x65, 0x72, 0x12, 0x40, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x72, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, + 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, + 0x64, 0x73, 0x2f, 0x7b, 0x71, 0x61, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, + 0x7d, 0x2f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x71, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x71, 0x61, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x7d, + 0x2a, 0x0b, 0x71, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x32, 0x0a, 0x71, + 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x88, 0x03, 0x0a, 0x0b, 0x51, 0x61, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x3a, 0x96, 0x01, 0xea, 0x41, + 0x92, 0x01, 0x0a, 0x30, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x63, 0x61, 0x72, 0x64, 0x12, 0x43, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x72, 0x65, - 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x63, 0x6f, 0x67, - 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x7d, 0x0a, 0x29, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x42, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, - 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2f, 0x61, - 0x70, 0x69, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x70, 0x62, 0x3b, 0x63, 0x6f, 0x6e, + 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x71, 0x61, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x71, 0x61, 0x5f, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x7d, 0x2a, 0x0c, 0x71, 0x61, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x73, 0x32, 0x0b, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x63, 0x61, 0x72, 0x64, 0x22, 0x90, 0x05, 0x0a, 0x13, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x08, 0x73, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x61, 0x6c, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x0c, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x49, 0x64, + 0x73, 0x12, 0x5b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x80, + 0x01, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x0c, 0x0a, 0x08, 0x45, 0x44, 0x49, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x0c, 0x12, 0x0c, 0x0a, + 0x08, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x54, + 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x09, + 0x12, 0x09, 0x0a, 0x05, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x0b, 0x12, 0x0c, 0x0a, 0x08, 0x44, + 0x45, 0x4c, 0x45, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x07, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x52, 0x41, + 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, + 0x0e, 0x3a, 0xc3, 0x01, 0xea, 0x41, 0xbf, 0x01, 0x0a, 0x38, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, + 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x51, + 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x58, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x71, 0x61, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x73, 0x2f, 0x7b, 0x71, 0x61, 0x5f, 0x73, 0x63, 0x6f, + 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0x2a, 0x14, 0x71, 0x61, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x32, 0x13, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, + 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xca, 0x08, 0x0a, 0x08, 0x51, 0x61, 0x41, 0x6e, + 0x73, 0x77, 0x65, 0x72, 0x12, 0x55, 0x0a, 0x0b, 0x71, 0x61, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x34, 0xfa, 0x41, 0x31, 0x0a, 0x2f, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x51, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0a, 0x71, 0x61, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5a, 0x0a, 0x0c, 0x63, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x36, 0xfa, 0x41, 0x33, 0x0a, 0x31, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x5e, 0x0a, 0x0c, + 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x41, 0x6e, 0x73, + 0x77, 0x65, 0x72, 0x2e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x0b, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, + 0x12, 0x63, 0x0a, 0x0e, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x51, 0x61, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x2e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0d, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x1a, 0xdf, 0x02, 0x0a, 0x0b, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x73, 0x74, 0x72, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x73, 0x74, 0x72, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1b, 0x0a, 0x08, 0x6e, 0x61, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x6e, 0x61, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0f, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x48, 0x02, 0x52, 0x0e, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x10, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, + 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x03, 0x52, 0x0f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, + 0x7a, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x12, + 0x0a, 0x10, 0x5f, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x6f, + 0x72, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, + 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0xaa, 0x02, 0x0a, 0x0c, 0x41, 0x6e, 0x73, 0x77, + 0x65, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x68, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x47, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, - 0x74, 0x73, 0x70, 0x62, 0xaa, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x25, 0x47, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x43, 0x6f, 0x6e, 0x74, - 0x61, 0x63, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, - 0x73, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x28, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x43, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x3a, 0x3a, 0x56, 0x31, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x2e, 0x41, + 0x6e, 0x73, 0x77, 0x65, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x5e, 0x0a, 0x0c, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x51, 0x61, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x2e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0x50, 0x0a, 0x0a, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, + 0x10, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54, 0x45, + 0x44, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x5f, 0x45, 0x44, + 0x49, 0x54, 0x10, 0x02, 0x22, 0xac, 0x0d, 0x0a, 0x11, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x71, 0x0a, 0x15, 0x71, 0x61, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x63, + 0x61, 0x72, 0x64, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x3d, 0xfa, 0x41, 0x3a, 0x0a, 0x38, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x51, 0x61, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x13, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x5a, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x36, 0xfa, 0x41, + 0x33, 0x0a, 0x31, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, + 0x4e, 0x0a, 0x0a, 0x71, 0x61, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x41, 0x6e, + 0x73, 0x77, 0x65, 0x72, 0x52, 0x09, 0x71, 0x61, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x73, 0x12, + 0x19, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, + 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x70, 0x6f, + 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x0e, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x6e, 0x6f, 0x72, 0x6d, + 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x01, 0x48, 0x02, 0x52, 0x0f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x0e, 0x71, 0x61, 0x5f, 0x74, + 0x61, 0x67, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x51, 0x61, 0x54, 0x61, 0x67, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0c, 0x71, 0x61, 0x54, 0x61, 0x67, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x12, 0x69, 0x0a, 0x0d, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, + 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x52, 0x0c, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x1a, + 0xcb, 0x01, 0x0a, 0x0b, 0x51, 0x61, 0x54, 0x61, 0x67, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, + 0x67, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, + 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, + 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x0e, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x6e, 0x6f, + 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x01, 0x48, 0x02, 0x52, 0x0f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, + 0x65, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6e, 0x6f, 0x72, + 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0xf8, 0x03, + 0x0a, 0x0b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x70, 0x0a, + 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x4f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x19, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, + 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x70, 0x6f, + 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x01, 0x48, 0x01, 0x52, 0x0e, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x6e, 0x6f, 0x72, 0x6d, + 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x01, 0x48, 0x02, 0x52, 0x0f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x0e, 0x71, 0x61, 0x5f, 0x74, + 0x61, 0x67, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x51, 0x61, 0x54, 0x61, 0x67, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0c, 0x71, 0x61, 0x54, 0x61, 0x67, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x22, 0x5f, 0x0a, 0x0a, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x19, 0x0a, 0x15, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, + 0x54, 0x45, 0x44, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x4e, + 0x43, 0x4c, 0x55, 0x44, 0x45, 0x53, 0x5f, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x5f, 0x45, 0x44, + 0x49, 0x54, 0x53, 0x10, 0x02, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, + 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, + 0x65, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x3a, 0xb5, 0x01, 0xea, 0x41, 0xb1, 0x01, 0x0a, + 0x36, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, + 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x51, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, + 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x50, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, + 0x2f, 0x71, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x73, 0x2f, 0x7b, 0x71, 0x61, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, + 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x7d, 0x2a, 0x12, 0x71, 0x61, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x32, 0x11, 0x71, + 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, + 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x13, + 0x0a, 0x11, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x2a, 0xe9, 0x01, 0x0a, 0x18, 0x44, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, + 0x12, 0x2a, 0x0a, 0x26, 0x44, 0x41, 0x54, 0x41, 0x53, 0x45, 0x54, 0x5f, 0x56, 0x41, 0x4c, 0x49, + 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, + 0x54, 0x4f, 0x4f, 0x5f, 0x4d, 0x41, 0x4e, 0x59, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, + 0x5f, 0x46, 0x45, 0x45, 0x44, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x53, + 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, 0x53, 0x55, 0x46, 0x46, 0x49, 0x43, 0x49, 0x45, + 0x4e, 0x54, 0x5f, 0x46, 0x45, 0x45, 0x44, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x41, 0x42, 0x45, + 0x4c, 0x53, 0x10, 0x02, 0x12, 0x2b, 0x0a, 0x27, 0x49, 0x4e, 0x53, 0x55, 0x46, 0x46, 0x49, 0x43, + 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x46, 0x45, 0x45, 0x44, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4c, 0x41, + 0x42, 0x45, 0x4c, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x41, 0x4e, 0x53, 0x57, 0x45, 0x52, 0x10, + 0x03, 0x12, 0x2c, 0x0a, 0x28, 0x41, 0x4c, 0x4c, 0x5f, 0x46, 0x45, 0x45, 0x44, 0x42, 0x41, 0x43, + 0x4b, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x53, 0x5f, 0x48, 0x41, 0x56, 0x45, 0x5f, 0x54, 0x48, + 0x45, 0x5f, 0x53, 0x41, 0x4d, 0x45, 0x5f, 0x41, 0x4e, 0x53, 0x57, 0x45, 0x52, 0x10, 0x04, 0x42, + 0xe0, 0x05, 0xea, 0x41, 0x84, 0x01, 0x0a, 0x2d, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, + 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x53, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x7d, 0xea, 0x41, 0xd4, 0x01, 0x0a, 0x25, + 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, + 0x69, 0x70, 0x61, 0x6e, 0x74, 0x12, 0x4a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, + 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, + 0x7d, 0x12, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, + 0x61, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, + 0x74, 0x7d, 0xea, 0x41, 0x64, 0x0a, 0x20, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x63, + 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x12, 0x40, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, + 0x2f, 0x72, 0x65, 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x72, 0x65, + 0x63, 0x6f, 0x67, 0x6e, 0x69, 0x7a, 0x65, 0x72, 0x7d, 0x0a, 0x29, 0x63, 0x6f, 0x6d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x74, + 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, + 0x73, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x70, 0x62, 0x3b, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x73, + 0x69, 0x67, 0x68, 0x74, 0x73, 0x70, 0x62, 0xaa, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x43, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x2e, 0x56, 0x31, 0xca, + 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x43, + 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x69, + 0x67, 0x68, 0x74, 0x73, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x28, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, + 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x69, 0x67, 0x68, 0x74, 0x73, 0x3a, 0x3a, + 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -7069,219 +9366,269 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescGZIP() [] return file_google_cloud_contactcenterinsights_v1_resources_proto_rawDescData } -var file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes = make([]protoimpl.EnumInfo, 11) -var file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 73) +var file_google_cloud_contactcenterinsights_v1_resources_proto_enumTypes = make([]protoimpl.EnumInfo, 15) +var file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes = make([]protoimpl.MessageInfo, 89) var file_google_cloud_contactcenterinsights_v1_resources_proto_goTypes = []any{ - (Conversation_Medium)(0), // 0: google.cloud.contactcenterinsights.v1.Conversation.Medium - (Entity_Type)(0), // 1: google.cloud.contactcenterinsights.v1.Entity.Type - (EntityMentionData_MentionType)(0), // 2: google.cloud.contactcenterinsights.v1.EntityMentionData.MentionType - (IssueModel_State)(0), // 3: google.cloud.contactcenterinsights.v1.IssueModel.State - (IssueModel_ModelType)(0), // 4: google.cloud.contactcenterinsights.v1.IssueModel.ModelType - (PhraseMatcher_PhraseMatcherType)(0), // 5: google.cloud.contactcenterinsights.v1.PhraseMatcher.PhraseMatcherType - (PhraseMatchRuleGroup_PhraseMatchRuleGroupType)(0), // 6: google.cloud.contactcenterinsights.v1.PhraseMatchRuleGroup.PhraseMatchRuleGroupType - (RuntimeAnnotation_UserInput_QuerySource)(0), // 7: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.UserInput.QuerySource - (AnswerFeedback_CorrectnessLevel)(0), // 8: google.cloud.contactcenterinsights.v1.AnswerFeedback.CorrectnessLevel - (ConversationParticipant_Role)(0), // 9: google.cloud.contactcenterinsights.v1.ConversationParticipant.Role - (AnnotatorSelector_SummarizationConfig_SummarizationModel)(0), // 10: google.cloud.contactcenterinsights.v1.AnnotatorSelector.SummarizationConfig.SummarizationModel - (*Conversation)(nil), // 11: google.cloud.contactcenterinsights.v1.Conversation - (*Analysis)(nil), // 12: google.cloud.contactcenterinsights.v1.Analysis - (*ConversationDataSource)(nil), // 13: google.cloud.contactcenterinsights.v1.ConversationDataSource - (*GcsSource)(nil), // 14: google.cloud.contactcenterinsights.v1.GcsSource - (*DialogflowSource)(nil), // 15: google.cloud.contactcenterinsights.v1.DialogflowSource - (*AnalysisResult)(nil), // 16: google.cloud.contactcenterinsights.v1.AnalysisResult - (*IssueModelResult)(nil), // 17: google.cloud.contactcenterinsights.v1.IssueModelResult - (*ConversationLevelSentiment)(nil), // 18: google.cloud.contactcenterinsights.v1.ConversationLevelSentiment - (*ConversationLevelSilence)(nil), // 19: google.cloud.contactcenterinsights.v1.ConversationLevelSilence - (*IssueAssignment)(nil), // 20: google.cloud.contactcenterinsights.v1.IssueAssignment - (*CallAnnotation)(nil), // 21: google.cloud.contactcenterinsights.v1.CallAnnotation - (*AnnotationBoundary)(nil), // 22: google.cloud.contactcenterinsights.v1.AnnotationBoundary - (*Entity)(nil), // 23: google.cloud.contactcenterinsights.v1.Entity - (*Intent)(nil), // 24: google.cloud.contactcenterinsights.v1.Intent - (*PhraseMatchData)(nil), // 25: google.cloud.contactcenterinsights.v1.PhraseMatchData - (*DialogflowIntent)(nil), // 26: google.cloud.contactcenterinsights.v1.DialogflowIntent - (*InterruptionData)(nil), // 27: google.cloud.contactcenterinsights.v1.InterruptionData - (*SilenceData)(nil), // 28: google.cloud.contactcenterinsights.v1.SilenceData - (*HoldData)(nil), // 29: google.cloud.contactcenterinsights.v1.HoldData - (*EntityMentionData)(nil), // 30: google.cloud.contactcenterinsights.v1.EntityMentionData - (*IntentMatchData)(nil), // 31: google.cloud.contactcenterinsights.v1.IntentMatchData - (*SentimentData)(nil), // 32: google.cloud.contactcenterinsights.v1.SentimentData - (*IssueMatchData)(nil), // 33: google.cloud.contactcenterinsights.v1.IssueMatchData - (*IssueModel)(nil), // 34: google.cloud.contactcenterinsights.v1.IssueModel - (*Issue)(nil), // 35: google.cloud.contactcenterinsights.v1.Issue - (*IssueModelLabelStats)(nil), // 36: google.cloud.contactcenterinsights.v1.IssueModelLabelStats - (*PhraseMatcher)(nil), // 37: google.cloud.contactcenterinsights.v1.PhraseMatcher - (*PhraseMatchRuleGroup)(nil), // 38: google.cloud.contactcenterinsights.v1.PhraseMatchRuleGroup - (*PhraseMatchRule)(nil), // 39: google.cloud.contactcenterinsights.v1.PhraseMatchRule - (*PhraseMatchRuleConfig)(nil), // 40: google.cloud.contactcenterinsights.v1.PhraseMatchRuleConfig - (*ExactMatchConfig)(nil), // 41: google.cloud.contactcenterinsights.v1.ExactMatchConfig - (*Settings)(nil), // 42: google.cloud.contactcenterinsights.v1.Settings - (*EncryptionSpec)(nil), // 43: google.cloud.contactcenterinsights.v1.EncryptionSpec - (*RedactionConfig)(nil), // 44: google.cloud.contactcenterinsights.v1.RedactionConfig - (*SpeechConfig)(nil), // 45: google.cloud.contactcenterinsights.v1.SpeechConfig - (*RuntimeAnnotation)(nil), // 46: google.cloud.contactcenterinsights.v1.RuntimeAnnotation - (*AnswerFeedback)(nil), // 47: google.cloud.contactcenterinsights.v1.AnswerFeedback - (*ArticleSuggestionData)(nil), // 48: google.cloud.contactcenterinsights.v1.ArticleSuggestionData - (*FaqAnswerData)(nil), // 49: google.cloud.contactcenterinsights.v1.FaqAnswerData - (*SmartReplyData)(nil), // 50: google.cloud.contactcenterinsights.v1.SmartReplyData - (*SmartComposeSuggestionData)(nil), // 51: google.cloud.contactcenterinsights.v1.SmartComposeSuggestionData - (*DialogflowInteractionData)(nil), // 52: google.cloud.contactcenterinsights.v1.DialogflowInteractionData - (*ConversationSummarizationSuggestionData)(nil), // 53: google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData - (*ConversationParticipant)(nil), // 54: google.cloud.contactcenterinsights.v1.ConversationParticipant - (*View)(nil), // 55: google.cloud.contactcenterinsights.v1.View - (*AnnotatorSelector)(nil), // 56: google.cloud.contactcenterinsights.v1.AnnotatorSelector - (*Conversation_CallMetadata)(nil), // 57: google.cloud.contactcenterinsights.v1.Conversation.CallMetadata - (*Conversation_QualityMetadata)(nil), // 58: google.cloud.contactcenterinsights.v1.Conversation.QualityMetadata - (*Conversation_Transcript)(nil), // 59: google.cloud.contactcenterinsights.v1.Conversation.Transcript - nil, // 60: google.cloud.contactcenterinsights.v1.Conversation.LabelsEntry - nil, // 61: google.cloud.contactcenterinsights.v1.Conversation.DialogflowIntentsEntry - (*Conversation_QualityMetadata_AgentInfo)(nil), // 62: google.cloud.contactcenterinsights.v1.Conversation.QualityMetadata.AgentInfo - (*Conversation_Transcript_TranscriptSegment)(nil), // 63: google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment - (*Conversation_Transcript_TranscriptSegment_WordInfo)(nil), // 64: google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.WordInfo - (*Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata)(nil), // 65: google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.DialogflowSegmentMetadata - (*AnalysisResult_CallAnalysisMetadata)(nil), // 66: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata - nil, // 67: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.EntitiesEntry - nil, // 68: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.IntentsEntry - nil, // 69: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.PhraseMatchersEntry - nil, // 70: google.cloud.contactcenterinsights.v1.Entity.MetadataEntry - (*IssueModel_InputDataConfig)(nil), // 71: google.cloud.contactcenterinsights.v1.IssueModel.InputDataConfig - (*IssueModelLabelStats_IssueStats)(nil), // 72: google.cloud.contactcenterinsights.v1.IssueModelLabelStats.IssueStats - nil, // 73: google.cloud.contactcenterinsights.v1.IssueModelLabelStats.IssueStatsEntry - (*Settings_AnalysisConfig)(nil), // 74: google.cloud.contactcenterinsights.v1.Settings.AnalysisConfig - nil, // 75: google.cloud.contactcenterinsights.v1.Settings.PubsubNotificationSettingsEntry - (*RuntimeAnnotation_UserInput)(nil), // 76: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.UserInput - nil, // 77: google.cloud.contactcenterinsights.v1.ArticleSuggestionData.MetadataEntry - nil, // 78: google.cloud.contactcenterinsights.v1.FaqAnswerData.MetadataEntry - nil, // 79: google.cloud.contactcenterinsights.v1.SmartReplyData.MetadataEntry - nil, // 80: google.cloud.contactcenterinsights.v1.SmartComposeSuggestionData.MetadataEntry - nil, // 81: google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData.TextSectionsEntry - nil, // 82: google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData.MetadataEntry - (*AnnotatorSelector_SummarizationConfig)(nil), // 83: google.cloud.contactcenterinsights.v1.AnnotatorSelector.SummarizationConfig - (*timestamppb.Timestamp)(nil), // 84: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 85: google.protobuf.Duration + (DatasetValidationWarning)(0), // 0: google.cloud.contactcenterinsights.v1.DatasetValidationWarning + (Conversation_Medium)(0), // 1: google.cloud.contactcenterinsights.v1.Conversation.Medium + (Entity_Type)(0), // 2: google.cloud.contactcenterinsights.v1.Entity.Type + (EntityMentionData_MentionType)(0), // 3: google.cloud.contactcenterinsights.v1.EntityMentionData.MentionType + (IssueModel_State)(0), // 4: google.cloud.contactcenterinsights.v1.IssueModel.State + (IssueModel_ModelType)(0), // 5: google.cloud.contactcenterinsights.v1.IssueModel.ModelType + (PhraseMatcher_PhraseMatcherType)(0), // 6: google.cloud.contactcenterinsights.v1.PhraseMatcher.PhraseMatcherType + (PhraseMatchRuleGroup_PhraseMatchRuleGroupType)(0), // 7: google.cloud.contactcenterinsights.v1.PhraseMatchRuleGroup.PhraseMatchRuleGroupType + (RuntimeAnnotation_UserInput_QuerySource)(0), // 8: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.UserInput.QuerySource + (AnswerFeedback_CorrectnessLevel)(0), // 9: google.cloud.contactcenterinsights.v1.AnswerFeedback.CorrectnessLevel + (ConversationParticipant_Role)(0), // 10: google.cloud.contactcenterinsights.v1.ConversationParticipant.Role + (AnnotatorSelector_SummarizationConfig_SummarizationModel)(0), // 11: google.cloud.contactcenterinsights.v1.AnnotatorSelector.SummarizationConfig.SummarizationModel + (QaScorecardRevision_State)(0), // 12: google.cloud.contactcenterinsights.v1.QaScorecardRevision.State + (QaAnswer_AnswerSource_SourceType)(0), // 13: google.cloud.contactcenterinsights.v1.QaAnswer.AnswerSource.SourceType + (QaScorecardResult_ScoreSource_SourceType)(0), // 14: google.cloud.contactcenterinsights.v1.QaScorecardResult.ScoreSource.SourceType + (*Conversation)(nil), // 15: google.cloud.contactcenterinsights.v1.Conversation + (*Analysis)(nil), // 16: google.cloud.contactcenterinsights.v1.Analysis + (*ConversationDataSource)(nil), // 17: google.cloud.contactcenterinsights.v1.ConversationDataSource + (*GcsSource)(nil), // 18: google.cloud.contactcenterinsights.v1.GcsSource + (*DialogflowSource)(nil), // 19: google.cloud.contactcenterinsights.v1.DialogflowSource + (*AnalysisResult)(nil), // 20: google.cloud.contactcenterinsights.v1.AnalysisResult + (*IssueModelResult)(nil), // 21: google.cloud.contactcenterinsights.v1.IssueModelResult + (*FeedbackLabel)(nil), // 22: google.cloud.contactcenterinsights.v1.FeedbackLabel + (*ConversationLevelSentiment)(nil), // 23: google.cloud.contactcenterinsights.v1.ConversationLevelSentiment + (*ConversationLevelSilence)(nil), // 24: google.cloud.contactcenterinsights.v1.ConversationLevelSilence + (*IssueAssignment)(nil), // 25: google.cloud.contactcenterinsights.v1.IssueAssignment + (*CallAnnotation)(nil), // 26: google.cloud.contactcenterinsights.v1.CallAnnotation + (*AnnotationBoundary)(nil), // 27: google.cloud.contactcenterinsights.v1.AnnotationBoundary + (*Entity)(nil), // 28: google.cloud.contactcenterinsights.v1.Entity + (*Intent)(nil), // 29: google.cloud.contactcenterinsights.v1.Intent + (*PhraseMatchData)(nil), // 30: google.cloud.contactcenterinsights.v1.PhraseMatchData + (*DialogflowIntent)(nil), // 31: google.cloud.contactcenterinsights.v1.DialogflowIntent + (*InterruptionData)(nil), // 32: google.cloud.contactcenterinsights.v1.InterruptionData + (*SilenceData)(nil), // 33: google.cloud.contactcenterinsights.v1.SilenceData + (*HoldData)(nil), // 34: google.cloud.contactcenterinsights.v1.HoldData + (*EntityMentionData)(nil), // 35: google.cloud.contactcenterinsights.v1.EntityMentionData + (*IntentMatchData)(nil), // 36: google.cloud.contactcenterinsights.v1.IntentMatchData + (*SentimentData)(nil), // 37: google.cloud.contactcenterinsights.v1.SentimentData + (*IssueMatchData)(nil), // 38: google.cloud.contactcenterinsights.v1.IssueMatchData + (*IssueModel)(nil), // 39: google.cloud.contactcenterinsights.v1.IssueModel + (*Issue)(nil), // 40: google.cloud.contactcenterinsights.v1.Issue + (*IssueModelLabelStats)(nil), // 41: google.cloud.contactcenterinsights.v1.IssueModelLabelStats + (*PhraseMatcher)(nil), // 42: google.cloud.contactcenterinsights.v1.PhraseMatcher + (*PhraseMatchRuleGroup)(nil), // 43: google.cloud.contactcenterinsights.v1.PhraseMatchRuleGroup + (*PhraseMatchRule)(nil), // 44: google.cloud.contactcenterinsights.v1.PhraseMatchRule + (*PhraseMatchRuleConfig)(nil), // 45: google.cloud.contactcenterinsights.v1.PhraseMatchRuleConfig + (*ExactMatchConfig)(nil), // 46: google.cloud.contactcenterinsights.v1.ExactMatchConfig + (*Settings)(nil), // 47: google.cloud.contactcenterinsights.v1.Settings + (*AnalysisRule)(nil), // 48: google.cloud.contactcenterinsights.v1.AnalysisRule + (*EncryptionSpec)(nil), // 49: google.cloud.contactcenterinsights.v1.EncryptionSpec + (*RedactionConfig)(nil), // 50: google.cloud.contactcenterinsights.v1.RedactionConfig + (*SpeechConfig)(nil), // 51: google.cloud.contactcenterinsights.v1.SpeechConfig + (*RuntimeAnnotation)(nil), // 52: google.cloud.contactcenterinsights.v1.RuntimeAnnotation + (*AnswerFeedback)(nil), // 53: google.cloud.contactcenterinsights.v1.AnswerFeedback + (*ArticleSuggestionData)(nil), // 54: google.cloud.contactcenterinsights.v1.ArticleSuggestionData + (*FaqAnswerData)(nil), // 55: google.cloud.contactcenterinsights.v1.FaqAnswerData + (*SmartReplyData)(nil), // 56: google.cloud.contactcenterinsights.v1.SmartReplyData + (*SmartComposeSuggestionData)(nil), // 57: google.cloud.contactcenterinsights.v1.SmartComposeSuggestionData + (*DialogflowInteractionData)(nil), // 58: google.cloud.contactcenterinsights.v1.DialogflowInteractionData + (*ConversationSummarizationSuggestionData)(nil), // 59: google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData + (*ConversationParticipant)(nil), // 60: google.cloud.contactcenterinsights.v1.ConversationParticipant + (*View)(nil), // 61: google.cloud.contactcenterinsights.v1.View + (*AnnotatorSelector)(nil), // 62: google.cloud.contactcenterinsights.v1.AnnotatorSelector + (*QaQuestion)(nil), // 63: google.cloud.contactcenterinsights.v1.QaQuestion + (*QaScorecard)(nil), // 64: google.cloud.contactcenterinsights.v1.QaScorecard + (*QaScorecardRevision)(nil), // 65: google.cloud.contactcenterinsights.v1.QaScorecardRevision + (*QaAnswer)(nil), // 66: google.cloud.contactcenterinsights.v1.QaAnswer + (*QaScorecardResult)(nil), // 67: google.cloud.contactcenterinsights.v1.QaScorecardResult + (*Conversation_CallMetadata)(nil), // 68: google.cloud.contactcenterinsights.v1.Conversation.CallMetadata + (*Conversation_QualityMetadata)(nil), // 69: google.cloud.contactcenterinsights.v1.Conversation.QualityMetadata + (*Conversation_Transcript)(nil), // 70: google.cloud.contactcenterinsights.v1.Conversation.Transcript + nil, // 71: google.cloud.contactcenterinsights.v1.Conversation.LabelsEntry + nil, // 72: google.cloud.contactcenterinsights.v1.Conversation.DialogflowIntentsEntry + (*Conversation_QualityMetadata_AgentInfo)(nil), // 73: google.cloud.contactcenterinsights.v1.Conversation.QualityMetadata.AgentInfo + (*Conversation_Transcript_TranscriptSegment)(nil), // 74: google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment + (*Conversation_Transcript_TranscriptSegment_WordInfo)(nil), // 75: google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.WordInfo + (*Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata)(nil), // 76: google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.DialogflowSegmentMetadata + (*AnalysisResult_CallAnalysisMetadata)(nil), // 77: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata + nil, // 78: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.EntitiesEntry + nil, // 79: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.IntentsEntry + nil, // 80: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.PhraseMatchersEntry + nil, // 81: google.cloud.contactcenterinsights.v1.Entity.MetadataEntry + (*IssueModel_InputDataConfig)(nil), // 82: google.cloud.contactcenterinsights.v1.IssueModel.InputDataConfig + (*IssueModelLabelStats_IssueStats)(nil), // 83: google.cloud.contactcenterinsights.v1.IssueModelLabelStats.IssueStats + nil, // 84: google.cloud.contactcenterinsights.v1.IssueModelLabelStats.IssueStatsEntry + (*Settings_AnalysisConfig)(nil), // 85: google.cloud.contactcenterinsights.v1.Settings.AnalysisConfig + nil, // 86: google.cloud.contactcenterinsights.v1.Settings.PubsubNotificationSettingsEntry + (*RuntimeAnnotation_UserInput)(nil), // 87: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.UserInput + nil, // 88: google.cloud.contactcenterinsights.v1.ArticleSuggestionData.MetadataEntry + nil, // 89: google.cloud.contactcenterinsights.v1.FaqAnswerData.MetadataEntry + nil, // 90: google.cloud.contactcenterinsights.v1.SmartReplyData.MetadataEntry + nil, // 91: google.cloud.contactcenterinsights.v1.SmartComposeSuggestionData.MetadataEntry + nil, // 92: google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData.TextSectionsEntry + nil, // 93: google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData.MetadataEntry + (*AnnotatorSelector_SummarizationConfig)(nil), // 94: google.cloud.contactcenterinsights.v1.AnnotatorSelector.SummarizationConfig + (*AnnotatorSelector_QaConfig)(nil), // 95: google.cloud.contactcenterinsights.v1.AnnotatorSelector.QaConfig + (*AnnotatorSelector_QaConfig_ScorecardList)(nil), // 96: google.cloud.contactcenterinsights.v1.AnnotatorSelector.QaConfig.ScorecardList + (*QaQuestion_AnswerChoice)(nil), // 97: google.cloud.contactcenterinsights.v1.QaQuestion.AnswerChoice + (*QaQuestion_Metrics)(nil), // 98: google.cloud.contactcenterinsights.v1.QaQuestion.Metrics + (*QaQuestion_TuningMetadata)(nil), // 99: google.cloud.contactcenterinsights.v1.QaQuestion.TuningMetadata + (*QaAnswer_AnswerValue)(nil), // 100: google.cloud.contactcenterinsights.v1.QaAnswer.AnswerValue + (*QaAnswer_AnswerSource)(nil), // 101: google.cloud.contactcenterinsights.v1.QaAnswer.AnswerSource + (*QaScorecardResult_QaTagResult)(nil), // 102: google.cloud.contactcenterinsights.v1.QaScorecardResult.QaTagResult + (*QaScorecardResult_ScoreSource)(nil), // 103: google.cloud.contactcenterinsights.v1.QaScorecardResult.ScoreSource + (*timestamppb.Timestamp)(nil), // 104: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 105: google.protobuf.Duration } var file_google_cloud_contactcenterinsights_v1_resources_proto_depIdxs = []int32{ - 57, // 0: google.cloud.contactcenterinsights.v1.Conversation.call_metadata:type_name -> google.cloud.contactcenterinsights.v1.Conversation.CallMetadata - 84, // 1: google.cloud.contactcenterinsights.v1.Conversation.expire_time:type_name -> google.protobuf.Timestamp - 85, // 2: google.cloud.contactcenterinsights.v1.Conversation.ttl:type_name -> google.protobuf.Duration - 13, // 3: google.cloud.contactcenterinsights.v1.Conversation.data_source:type_name -> google.cloud.contactcenterinsights.v1.ConversationDataSource - 84, // 4: google.cloud.contactcenterinsights.v1.Conversation.create_time:type_name -> google.protobuf.Timestamp - 84, // 5: google.cloud.contactcenterinsights.v1.Conversation.update_time:type_name -> google.protobuf.Timestamp - 84, // 6: google.cloud.contactcenterinsights.v1.Conversation.start_time:type_name -> google.protobuf.Timestamp - 60, // 7: google.cloud.contactcenterinsights.v1.Conversation.labels:type_name -> google.cloud.contactcenterinsights.v1.Conversation.LabelsEntry - 58, // 8: google.cloud.contactcenterinsights.v1.Conversation.quality_metadata:type_name -> google.cloud.contactcenterinsights.v1.Conversation.QualityMetadata - 59, // 9: google.cloud.contactcenterinsights.v1.Conversation.transcript:type_name -> google.cloud.contactcenterinsights.v1.Conversation.Transcript - 0, // 10: google.cloud.contactcenterinsights.v1.Conversation.medium:type_name -> google.cloud.contactcenterinsights.v1.Conversation.Medium - 85, // 11: google.cloud.contactcenterinsights.v1.Conversation.duration:type_name -> google.protobuf.Duration - 12, // 12: google.cloud.contactcenterinsights.v1.Conversation.latest_analysis:type_name -> google.cloud.contactcenterinsights.v1.Analysis - 53, // 13: google.cloud.contactcenterinsights.v1.Conversation.latest_summary:type_name -> google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData - 46, // 14: google.cloud.contactcenterinsights.v1.Conversation.runtime_annotations:type_name -> google.cloud.contactcenterinsights.v1.RuntimeAnnotation - 61, // 15: google.cloud.contactcenterinsights.v1.Conversation.dialogflow_intents:type_name -> google.cloud.contactcenterinsights.v1.Conversation.DialogflowIntentsEntry - 84, // 16: google.cloud.contactcenterinsights.v1.Analysis.request_time:type_name -> google.protobuf.Timestamp - 84, // 17: google.cloud.contactcenterinsights.v1.Analysis.create_time:type_name -> google.protobuf.Timestamp - 16, // 18: google.cloud.contactcenterinsights.v1.Analysis.analysis_result:type_name -> google.cloud.contactcenterinsights.v1.AnalysisResult - 56, // 19: google.cloud.contactcenterinsights.v1.Analysis.annotator_selector:type_name -> google.cloud.contactcenterinsights.v1.AnnotatorSelector - 14, // 20: google.cloud.contactcenterinsights.v1.ConversationDataSource.gcs_source:type_name -> google.cloud.contactcenterinsights.v1.GcsSource - 15, // 21: google.cloud.contactcenterinsights.v1.ConversationDataSource.dialogflow_source:type_name -> google.cloud.contactcenterinsights.v1.DialogflowSource - 66, // 22: google.cloud.contactcenterinsights.v1.AnalysisResult.call_analysis_metadata:type_name -> google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata - 84, // 23: google.cloud.contactcenterinsights.v1.AnalysisResult.end_time:type_name -> google.protobuf.Timestamp - 20, // 24: google.cloud.contactcenterinsights.v1.IssueModelResult.issues:type_name -> google.cloud.contactcenterinsights.v1.IssueAssignment - 32, // 25: google.cloud.contactcenterinsights.v1.ConversationLevelSentiment.sentiment_data:type_name -> google.cloud.contactcenterinsights.v1.SentimentData - 85, // 26: google.cloud.contactcenterinsights.v1.ConversationLevelSilence.silence_duration:type_name -> google.protobuf.Duration - 27, // 27: google.cloud.contactcenterinsights.v1.CallAnnotation.interruption_data:type_name -> google.cloud.contactcenterinsights.v1.InterruptionData - 32, // 28: google.cloud.contactcenterinsights.v1.CallAnnotation.sentiment_data:type_name -> google.cloud.contactcenterinsights.v1.SentimentData - 28, // 29: google.cloud.contactcenterinsights.v1.CallAnnotation.silence_data:type_name -> google.cloud.contactcenterinsights.v1.SilenceData - 29, // 30: google.cloud.contactcenterinsights.v1.CallAnnotation.hold_data:type_name -> google.cloud.contactcenterinsights.v1.HoldData - 30, // 31: google.cloud.contactcenterinsights.v1.CallAnnotation.entity_mention_data:type_name -> google.cloud.contactcenterinsights.v1.EntityMentionData - 31, // 32: google.cloud.contactcenterinsights.v1.CallAnnotation.intent_match_data:type_name -> google.cloud.contactcenterinsights.v1.IntentMatchData - 25, // 33: google.cloud.contactcenterinsights.v1.CallAnnotation.phrase_match_data:type_name -> google.cloud.contactcenterinsights.v1.PhraseMatchData - 33, // 34: google.cloud.contactcenterinsights.v1.CallAnnotation.issue_match_data:type_name -> google.cloud.contactcenterinsights.v1.IssueMatchData - 22, // 35: google.cloud.contactcenterinsights.v1.CallAnnotation.annotation_start_boundary:type_name -> google.cloud.contactcenterinsights.v1.AnnotationBoundary - 22, // 36: google.cloud.contactcenterinsights.v1.CallAnnotation.annotation_end_boundary:type_name -> google.cloud.contactcenterinsights.v1.AnnotationBoundary - 1, // 37: google.cloud.contactcenterinsights.v1.Entity.type:type_name -> google.cloud.contactcenterinsights.v1.Entity.Type - 70, // 38: google.cloud.contactcenterinsights.v1.Entity.metadata:type_name -> google.cloud.contactcenterinsights.v1.Entity.MetadataEntry - 32, // 39: google.cloud.contactcenterinsights.v1.Entity.sentiment:type_name -> google.cloud.contactcenterinsights.v1.SentimentData - 2, // 40: google.cloud.contactcenterinsights.v1.EntityMentionData.type:type_name -> google.cloud.contactcenterinsights.v1.EntityMentionData.MentionType - 32, // 41: google.cloud.contactcenterinsights.v1.EntityMentionData.sentiment:type_name -> google.cloud.contactcenterinsights.v1.SentimentData - 20, // 42: google.cloud.contactcenterinsights.v1.IssueMatchData.issue_assignment:type_name -> google.cloud.contactcenterinsights.v1.IssueAssignment - 84, // 43: google.cloud.contactcenterinsights.v1.IssueModel.create_time:type_name -> google.protobuf.Timestamp - 84, // 44: google.cloud.contactcenterinsights.v1.IssueModel.update_time:type_name -> google.protobuf.Timestamp - 3, // 45: google.cloud.contactcenterinsights.v1.IssueModel.state:type_name -> google.cloud.contactcenterinsights.v1.IssueModel.State - 71, // 46: google.cloud.contactcenterinsights.v1.IssueModel.input_data_config:type_name -> google.cloud.contactcenterinsights.v1.IssueModel.InputDataConfig - 36, // 47: google.cloud.contactcenterinsights.v1.IssueModel.training_stats:type_name -> google.cloud.contactcenterinsights.v1.IssueModelLabelStats - 4, // 48: google.cloud.contactcenterinsights.v1.IssueModel.model_type:type_name -> google.cloud.contactcenterinsights.v1.IssueModel.ModelType - 84, // 49: google.cloud.contactcenterinsights.v1.Issue.create_time:type_name -> google.protobuf.Timestamp - 84, // 50: google.cloud.contactcenterinsights.v1.Issue.update_time:type_name -> google.protobuf.Timestamp - 73, // 51: google.cloud.contactcenterinsights.v1.IssueModelLabelStats.issue_stats:type_name -> google.cloud.contactcenterinsights.v1.IssueModelLabelStats.IssueStatsEntry - 84, // 52: google.cloud.contactcenterinsights.v1.PhraseMatcher.revision_create_time:type_name -> google.protobuf.Timestamp - 5, // 53: google.cloud.contactcenterinsights.v1.PhraseMatcher.type:type_name -> google.cloud.contactcenterinsights.v1.PhraseMatcher.PhraseMatcherType - 38, // 54: google.cloud.contactcenterinsights.v1.PhraseMatcher.phrase_match_rule_groups:type_name -> google.cloud.contactcenterinsights.v1.PhraseMatchRuleGroup - 84, // 55: google.cloud.contactcenterinsights.v1.PhraseMatcher.activation_update_time:type_name -> google.protobuf.Timestamp - 9, // 56: google.cloud.contactcenterinsights.v1.PhraseMatcher.role_match:type_name -> google.cloud.contactcenterinsights.v1.ConversationParticipant.Role - 84, // 57: google.cloud.contactcenterinsights.v1.PhraseMatcher.update_time:type_name -> google.protobuf.Timestamp - 6, // 58: google.cloud.contactcenterinsights.v1.PhraseMatchRuleGroup.type:type_name -> google.cloud.contactcenterinsights.v1.PhraseMatchRuleGroup.PhraseMatchRuleGroupType - 39, // 59: google.cloud.contactcenterinsights.v1.PhraseMatchRuleGroup.phrase_match_rules:type_name -> google.cloud.contactcenterinsights.v1.PhraseMatchRule - 40, // 60: google.cloud.contactcenterinsights.v1.PhraseMatchRule.config:type_name -> google.cloud.contactcenterinsights.v1.PhraseMatchRuleConfig - 41, // 61: google.cloud.contactcenterinsights.v1.PhraseMatchRuleConfig.exact_match_config:type_name -> google.cloud.contactcenterinsights.v1.ExactMatchConfig - 84, // 62: google.cloud.contactcenterinsights.v1.Settings.create_time:type_name -> google.protobuf.Timestamp - 84, // 63: google.cloud.contactcenterinsights.v1.Settings.update_time:type_name -> google.protobuf.Timestamp - 85, // 64: google.cloud.contactcenterinsights.v1.Settings.conversation_ttl:type_name -> google.protobuf.Duration - 75, // 65: google.cloud.contactcenterinsights.v1.Settings.pubsub_notification_settings:type_name -> google.cloud.contactcenterinsights.v1.Settings.PubsubNotificationSettingsEntry - 74, // 66: google.cloud.contactcenterinsights.v1.Settings.analysis_config:type_name -> google.cloud.contactcenterinsights.v1.Settings.AnalysisConfig - 44, // 67: google.cloud.contactcenterinsights.v1.Settings.redaction_config:type_name -> google.cloud.contactcenterinsights.v1.RedactionConfig - 45, // 68: google.cloud.contactcenterinsights.v1.Settings.speech_config:type_name -> google.cloud.contactcenterinsights.v1.SpeechConfig - 48, // 69: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.article_suggestion:type_name -> google.cloud.contactcenterinsights.v1.ArticleSuggestionData - 49, // 70: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.faq_answer:type_name -> google.cloud.contactcenterinsights.v1.FaqAnswerData - 50, // 71: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.smart_reply:type_name -> google.cloud.contactcenterinsights.v1.SmartReplyData - 51, // 72: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.smart_compose_suggestion:type_name -> google.cloud.contactcenterinsights.v1.SmartComposeSuggestionData - 52, // 73: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.dialogflow_interaction:type_name -> google.cloud.contactcenterinsights.v1.DialogflowInteractionData - 53, // 74: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.conversation_summarization_suggestion:type_name -> google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData - 84, // 75: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.create_time:type_name -> google.protobuf.Timestamp - 22, // 76: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.start_boundary:type_name -> google.cloud.contactcenterinsights.v1.AnnotationBoundary - 22, // 77: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.end_boundary:type_name -> google.cloud.contactcenterinsights.v1.AnnotationBoundary - 47, // 78: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.answer_feedback:type_name -> google.cloud.contactcenterinsights.v1.AnswerFeedback - 76, // 79: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.user_input:type_name -> google.cloud.contactcenterinsights.v1.RuntimeAnnotation.UserInput - 8, // 80: google.cloud.contactcenterinsights.v1.AnswerFeedback.correctness_level:type_name -> google.cloud.contactcenterinsights.v1.AnswerFeedback.CorrectnessLevel - 77, // 81: google.cloud.contactcenterinsights.v1.ArticleSuggestionData.metadata:type_name -> google.cloud.contactcenterinsights.v1.ArticleSuggestionData.MetadataEntry - 78, // 82: google.cloud.contactcenterinsights.v1.FaqAnswerData.metadata:type_name -> google.cloud.contactcenterinsights.v1.FaqAnswerData.MetadataEntry - 79, // 83: google.cloud.contactcenterinsights.v1.SmartReplyData.metadata:type_name -> google.cloud.contactcenterinsights.v1.SmartReplyData.MetadataEntry - 80, // 84: google.cloud.contactcenterinsights.v1.SmartComposeSuggestionData.metadata:type_name -> google.cloud.contactcenterinsights.v1.SmartComposeSuggestionData.MetadataEntry - 81, // 85: google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData.text_sections:type_name -> google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData.TextSectionsEntry - 82, // 86: google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData.metadata:type_name -> google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData.MetadataEntry - 9, // 87: google.cloud.contactcenterinsights.v1.ConversationParticipant.role:type_name -> google.cloud.contactcenterinsights.v1.ConversationParticipant.Role - 84, // 88: google.cloud.contactcenterinsights.v1.View.create_time:type_name -> google.protobuf.Timestamp - 84, // 89: google.cloud.contactcenterinsights.v1.View.update_time:type_name -> google.protobuf.Timestamp - 83, // 90: google.cloud.contactcenterinsights.v1.AnnotatorSelector.summarization_config:type_name -> google.cloud.contactcenterinsights.v1.AnnotatorSelector.SummarizationConfig - 85, // 91: google.cloud.contactcenterinsights.v1.Conversation.QualityMetadata.wait_duration:type_name -> google.protobuf.Duration - 62, // 92: google.cloud.contactcenterinsights.v1.Conversation.QualityMetadata.agent_info:type_name -> google.cloud.contactcenterinsights.v1.Conversation.QualityMetadata.AgentInfo - 63, // 93: google.cloud.contactcenterinsights.v1.Conversation.Transcript.transcript_segments:type_name -> google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment - 26, // 94: google.cloud.contactcenterinsights.v1.Conversation.DialogflowIntentsEntry.value:type_name -> google.cloud.contactcenterinsights.v1.DialogflowIntent - 84, // 95: google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.message_time:type_name -> google.protobuf.Timestamp - 64, // 96: google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.words:type_name -> google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.WordInfo - 54, // 97: google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.segment_participant:type_name -> google.cloud.contactcenterinsights.v1.ConversationParticipant - 65, // 98: google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.dialogflow_segment_metadata:type_name -> google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.DialogflowSegmentMetadata - 32, // 99: google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.sentiment:type_name -> google.cloud.contactcenterinsights.v1.SentimentData - 85, // 100: google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.WordInfo.start_offset:type_name -> google.protobuf.Duration - 85, // 101: google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.WordInfo.end_offset:type_name -> google.protobuf.Duration - 21, // 102: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.annotations:type_name -> google.cloud.contactcenterinsights.v1.CallAnnotation - 67, // 103: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.entities:type_name -> google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.EntitiesEntry - 18, // 104: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.sentiments:type_name -> google.cloud.contactcenterinsights.v1.ConversationLevelSentiment - 19, // 105: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.silence:type_name -> google.cloud.contactcenterinsights.v1.ConversationLevelSilence - 68, // 106: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.intents:type_name -> google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.IntentsEntry - 69, // 107: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.phrase_matchers:type_name -> google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.PhraseMatchersEntry - 17, // 108: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.issue_model_result:type_name -> google.cloud.contactcenterinsights.v1.IssueModelResult - 23, // 109: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.EntitiesEntry.value:type_name -> google.cloud.contactcenterinsights.v1.Entity - 24, // 110: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.IntentsEntry.value:type_name -> google.cloud.contactcenterinsights.v1.Intent - 25, // 111: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.PhraseMatchersEntry.value:type_name -> google.cloud.contactcenterinsights.v1.PhraseMatchData - 0, // 112: google.cloud.contactcenterinsights.v1.IssueModel.InputDataConfig.medium:type_name -> google.cloud.contactcenterinsights.v1.Conversation.Medium - 72, // 113: google.cloud.contactcenterinsights.v1.IssueModelLabelStats.IssueStatsEntry.value:type_name -> google.cloud.contactcenterinsights.v1.IssueModelLabelStats.IssueStats - 56, // 114: google.cloud.contactcenterinsights.v1.Settings.AnalysisConfig.annotator_selector:type_name -> google.cloud.contactcenterinsights.v1.AnnotatorSelector - 7, // 115: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.UserInput.query_source:type_name -> google.cloud.contactcenterinsights.v1.RuntimeAnnotation.UserInput.QuerySource - 10, // 116: google.cloud.contactcenterinsights.v1.AnnotatorSelector.SummarizationConfig.summarization_model:type_name -> google.cloud.contactcenterinsights.v1.AnnotatorSelector.SummarizationConfig.SummarizationModel - 117, // [117:117] is the sub-list for method output_type - 117, // [117:117] is the sub-list for method input_type - 117, // [117:117] is the sub-list for extension type_name - 117, // [117:117] is the sub-list for extension extendee - 0, // [0:117] is the sub-list for field type_name + 68, // 0: google.cloud.contactcenterinsights.v1.Conversation.call_metadata:type_name -> google.cloud.contactcenterinsights.v1.Conversation.CallMetadata + 104, // 1: google.cloud.contactcenterinsights.v1.Conversation.expire_time:type_name -> google.protobuf.Timestamp + 105, // 2: google.cloud.contactcenterinsights.v1.Conversation.ttl:type_name -> google.protobuf.Duration + 17, // 3: google.cloud.contactcenterinsights.v1.Conversation.data_source:type_name -> google.cloud.contactcenterinsights.v1.ConversationDataSource + 104, // 4: google.cloud.contactcenterinsights.v1.Conversation.create_time:type_name -> google.protobuf.Timestamp + 104, // 5: google.cloud.contactcenterinsights.v1.Conversation.update_time:type_name -> google.protobuf.Timestamp + 104, // 6: google.cloud.contactcenterinsights.v1.Conversation.start_time:type_name -> google.protobuf.Timestamp + 71, // 7: google.cloud.contactcenterinsights.v1.Conversation.labels:type_name -> google.cloud.contactcenterinsights.v1.Conversation.LabelsEntry + 69, // 8: google.cloud.contactcenterinsights.v1.Conversation.quality_metadata:type_name -> google.cloud.contactcenterinsights.v1.Conversation.QualityMetadata + 70, // 9: google.cloud.contactcenterinsights.v1.Conversation.transcript:type_name -> google.cloud.contactcenterinsights.v1.Conversation.Transcript + 1, // 10: google.cloud.contactcenterinsights.v1.Conversation.medium:type_name -> google.cloud.contactcenterinsights.v1.Conversation.Medium + 105, // 11: google.cloud.contactcenterinsights.v1.Conversation.duration:type_name -> google.protobuf.Duration + 16, // 12: google.cloud.contactcenterinsights.v1.Conversation.latest_analysis:type_name -> google.cloud.contactcenterinsights.v1.Analysis + 59, // 13: google.cloud.contactcenterinsights.v1.Conversation.latest_summary:type_name -> google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData + 52, // 14: google.cloud.contactcenterinsights.v1.Conversation.runtime_annotations:type_name -> google.cloud.contactcenterinsights.v1.RuntimeAnnotation + 72, // 15: google.cloud.contactcenterinsights.v1.Conversation.dialogflow_intents:type_name -> google.cloud.contactcenterinsights.v1.Conversation.DialogflowIntentsEntry + 104, // 16: google.cloud.contactcenterinsights.v1.Analysis.request_time:type_name -> google.protobuf.Timestamp + 104, // 17: google.cloud.contactcenterinsights.v1.Analysis.create_time:type_name -> google.protobuf.Timestamp + 20, // 18: google.cloud.contactcenterinsights.v1.Analysis.analysis_result:type_name -> google.cloud.contactcenterinsights.v1.AnalysisResult + 62, // 19: google.cloud.contactcenterinsights.v1.Analysis.annotator_selector:type_name -> google.cloud.contactcenterinsights.v1.AnnotatorSelector + 18, // 20: google.cloud.contactcenterinsights.v1.ConversationDataSource.gcs_source:type_name -> google.cloud.contactcenterinsights.v1.GcsSource + 19, // 21: google.cloud.contactcenterinsights.v1.ConversationDataSource.dialogflow_source:type_name -> google.cloud.contactcenterinsights.v1.DialogflowSource + 77, // 22: google.cloud.contactcenterinsights.v1.AnalysisResult.call_analysis_metadata:type_name -> google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata + 104, // 23: google.cloud.contactcenterinsights.v1.AnalysisResult.end_time:type_name -> google.protobuf.Timestamp + 25, // 24: google.cloud.contactcenterinsights.v1.IssueModelResult.issues:type_name -> google.cloud.contactcenterinsights.v1.IssueAssignment + 100, // 25: google.cloud.contactcenterinsights.v1.FeedbackLabel.qa_answer_label:type_name -> google.cloud.contactcenterinsights.v1.QaAnswer.AnswerValue + 104, // 26: google.cloud.contactcenterinsights.v1.FeedbackLabel.create_time:type_name -> google.protobuf.Timestamp + 104, // 27: google.cloud.contactcenterinsights.v1.FeedbackLabel.update_time:type_name -> google.protobuf.Timestamp + 37, // 28: google.cloud.contactcenterinsights.v1.ConversationLevelSentiment.sentiment_data:type_name -> google.cloud.contactcenterinsights.v1.SentimentData + 105, // 29: google.cloud.contactcenterinsights.v1.ConversationLevelSilence.silence_duration:type_name -> google.protobuf.Duration + 32, // 30: google.cloud.contactcenterinsights.v1.CallAnnotation.interruption_data:type_name -> google.cloud.contactcenterinsights.v1.InterruptionData + 37, // 31: google.cloud.contactcenterinsights.v1.CallAnnotation.sentiment_data:type_name -> google.cloud.contactcenterinsights.v1.SentimentData + 33, // 32: google.cloud.contactcenterinsights.v1.CallAnnotation.silence_data:type_name -> google.cloud.contactcenterinsights.v1.SilenceData + 34, // 33: google.cloud.contactcenterinsights.v1.CallAnnotation.hold_data:type_name -> google.cloud.contactcenterinsights.v1.HoldData + 35, // 34: google.cloud.contactcenterinsights.v1.CallAnnotation.entity_mention_data:type_name -> google.cloud.contactcenterinsights.v1.EntityMentionData + 36, // 35: google.cloud.contactcenterinsights.v1.CallAnnotation.intent_match_data:type_name -> google.cloud.contactcenterinsights.v1.IntentMatchData + 30, // 36: google.cloud.contactcenterinsights.v1.CallAnnotation.phrase_match_data:type_name -> google.cloud.contactcenterinsights.v1.PhraseMatchData + 38, // 37: google.cloud.contactcenterinsights.v1.CallAnnotation.issue_match_data:type_name -> google.cloud.contactcenterinsights.v1.IssueMatchData + 27, // 38: google.cloud.contactcenterinsights.v1.CallAnnotation.annotation_start_boundary:type_name -> google.cloud.contactcenterinsights.v1.AnnotationBoundary + 27, // 39: google.cloud.contactcenterinsights.v1.CallAnnotation.annotation_end_boundary:type_name -> google.cloud.contactcenterinsights.v1.AnnotationBoundary + 2, // 40: google.cloud.contactcenterinsights.v1.Entity.type:type_name -> google.cloud.contactcenterinsights.v1.Entity.Type + 81, // 41: google.cloud.contactcenterinsights.v1.Entity.metadata:type_name -> google.cloud.contactcenterinsights.v1.Entity.MetadataEntry + 37, // 42: google.cloud.contactcenterinsights.v1.Entity.sentiment:type_name -> google.cloud.contactcenterinsights.v1.SentimentData + 3, // 43: google.cloud.contactcenterinsights.v1.EntityMentionData.type:type_name -> google.cloud.contactcenterinsights.v1.EntityMentionData.MentionType + 37, // 44: google.cloud.contactcenterinsights.v1.EntityMentionData.sentiment:type_name -> google.cloud.contactcenterinsights.v1.SentimentData + 25, // 45: google.cloud.contactcenterinsights.v1.IssueMatchData.issue_assignment:type_name -> google.cloud.contactcenterinsights.v1.IssueAssignment + 104, // 46: google.cloud.contactcenterinsights.v1.IssueModel.create_time:type_name -> google.protobuf.Timestamp + 104, // 47: google.cloud.contactcenterinsights.v1.IssueModel.update_time:type_name -> google.protobuf.Timestamp + 4, // 48: google.cloud.contactcenterinsights.v1.IssueModel.state:type_name -> google.cloud.contactcenterinsights.v1.IssueModel.State + 82, // 49: google.cloud.contactcenterinsights.v1.IssueModel.input_data_config:type_name -> google.cloud.contactcenterinsights.v1.IssueModel.InputDataConfig + 41, // 50: google.cloud.contactcenterinsights.v1.IssueModel.training_stats:type_name -> google.cloud.contactcenterinsights.v1.IssueModelLabelStats + 5, // 51: google.cloud.contactcenterinsights.v1.IssueModel.model_type:type_name -> google.cloud.contactcenterinsights.v1.IssueModel.ModelType + 104, // 52: google.cloud.contactcenterinsights.v1.Issue.create_time:type_name -> google.protobuf.Timestamp + 104, // 53: google.cloud.contactcenterinsights.v1.Issue.update_time:type_name -> google.protobuf.Timestamp + 84, // 54: google.cloud.contactcenterinsights.v1.IssueModelLabelStats.issue_stats:type_name -> google.cloud.contactcenterinsights.v1.IssueModelLabelStats.IssueStatsEntry + 104, // 55: google.cloud.contactcenterinsights.v1.PhraseMatcher.revision_create_time:type_name -> google.protobuf.Timestamp + 6, // 56: google.cloud.contactcenterinsights.v1.PhraseMatcher.type:type_name -> google.cloud.contactcenterinsights.v1.PhraseMatcher.PhraseMatcherType + 43, // 57: google.cloud.contactcenterinsights.v1.PhraseMatcher.phrase_match_rule_groups:type_name -> google.cloud.contactcenterinsights.v1.PhraseMatchRuleGroup + 104, // 58: google.cloud.contactcenterinsights.v1.PhraseMatcher.activation_update_time:type_name -> google.protobuf.Timestamp + 10, // 59: google.cloud.contactcenterinsights.v1.PhraseMatcher.role_match:type_name -> google.cloud.contactcenterinsights.v1.ConversationParticipant.Role + 104, // 60: google.cloud.contactcenterinsights.v1.PhraseMatcher.update_time:type_name -> google.protobuf.Timestamp + 7, // 61: google.cloud.contactcenterinsights.v1.PhraseMatchRuleGroup.type:type_name -> google.cloud.contactcenterinsights.v1.PhraseMatchRuleGroup.PhraseMatchRuleGroupType + 44, // 62: google.cloud.contactcenterinsights.v1.PhraseMatchRuleGroup.phrase_match_rules:type_name -> google.cloud.contactcenterinsights.v1.PhraseMatchRule + 45, // 63: google.cloud.contactcenterinsights.v1.PhraseMatchRule.config:type_name -> google.cloud.contactcenterinsights.v1.PhraseMatchRuleConfig + 46, // 64: google.cloud.contactcenterinsights.v1.PhraseMatchRuleConfig.exact_match_config:type_name -> google.cloud.contactcenterinsights.v1.ExactMatchConfig + 104, // 65: google.cloud.contactcenterinsights.v1.Settings.create_time:type_name -> google.protobuf.Timestamp + 104, // 66: google.cloud.contactcenterinsights.v1.Settings.update_time:type_name -> google.protobuf.Timestamp + 105, // 67: google.cloud.contactcenterinsights.v1.Settings.conversation_ttl:type_name -> google.protobuf.Duration + 86, // 68: google.cloud.contactcenterinsights.v1.Settings.pubsub_notification_settings:type_name -> google.cloud.contactcenterinsights.v1.Settings.PubsubNotificationSettingsEntry + 85, // 69: google.cloud.contactcenterinsights.v1.Settings.analysis_config:type_name -> google.cloud.contactcenterinsights.v1.Settings.AnalysisConfig + 50, // 70: google.cloud.contactcenterinsights.v1.Settings.redaction_config:type_name -> google.cloud.contactcenterinsights.v1.RedactionConfig + 51, // 71: google.cloud.contactcenterinsights.v1.Settings.speech_config:type_name -> google.cloud.contactcenterinsights.v1.SpeechConfig + 104, // 72: google.cloud.contactcenterinsights.v1.AnalysisRule.create_time:type_name -> google.protobuf.Timestamp + 104, // 73: google.cloud.contactcenterinsights.v1.AnalysisRule.update_time:type_name -> google.protobuf.Timestamp + 62, // 74: google.cloud.contactcenterinsights.v1.AnalysisRule.annotator_selector:type_name -> google.cloud.contactcenterinsights.v1.AnnotatorSelector + 54, // 75: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.article_suggestion:type_name -> google.cloud.contactcenterinsights.v1.ArticleSuggestionData + 55, // 76: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.faq_answer:type_name -> google.cloud.contactcenterinsights.v1.FaqAnswerData + 56, // 77: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.smart_reply:type_name -> google.cloud.contactcenterinsights.v1.SmartReplyData + 57, // 78: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.smart_compose_suggestion:type_name -> google.cloud.contactcenterinsights.v1.SmartComposeSuggestionData + 58, // 79: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.dialogflow_interaction:type_name -> google.cloud.contactcenterinsights.v1.DialogflowInteractionData + 59, // 80: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.conversation_summarization_suggestion:type_name -> google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData + 104, // 81: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.create_time:type_name -> google.protobuf.Timestamp + 27, // 82: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.start_boundary:type_name -> google.cloud.contactcenterinsights.v1.AnnotationBoundary + 27, // 83: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.end_boundary:type_name -> google.cloud.contactcenterinsights.v1.AnnotationBoundary + 53, // 84: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.answer_feedback:type_name -> google.cloud.contactcenterinsights.v1.AnswerFeedback + 87, // 85: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.user_input:type_name -> google.cloud.contactcenterinsights.v1.RuntimeAnnotation.UserInput + 9, // 86: google.cloud.contactcenterinsights.v1.AnswerFeedback.correctness_level:type_name -> google.cloud.contactcenterinsights.v1.AnswerFeedback.CorrectnessLevel + 88, // 87: google.cloud.contactcenterinsights.v1.ArticleSuggestionData.metadata:type_name -> google.cloud.contactcenterinsights.v1.ArticleSuggestionData.MetadataEntry + 89, // 88: google.cloud.contactcenterinsights.v1.FaqAnswerData.metadata:type_name -> google.cloud.contactcenterinsights.v1.FaqAnswerData.MetadataEntry + 90, // 89: google.cloud.contactcenterinsights.v1.SmartReplyData.metadata:type_name -> google.cloud.contactcenterinsights.v1.SmartReplyData.MetadataEntry + 91, // 90: google.cloud.contactcenterinsights.v1.SmartComposeSuggestionData.metadata:type_name -> google.cloud.contactcenterinsights.v1.SmartComposeSuggestionData.MetadataEntry + 92, // 91: google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData.text_sections:type_name -> google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData.TextSectionsEntry + 93, // 92: google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData.metadata:type_name -> google.cloud.contactcenterinsights.v1.ConversationSummarizationSuggestionData.MetadataEntry + 10, // 93: google.cloud.contactcenterinsights.v1.ConversationParticipant.role:type_name -> google.cloud.contactcenterinsights.v1.ConversationParticipant.Role + 104, // 94: google.cloud.contactcenterinsights.v1.View.create_time:type_name -> google.protobuf.Timestamp + 104, // 95: google.cloud.contactcenterinsights.v1.View.update_time:type_name -> google.protobuf.Timestamp + 94, // 96: google.cloud.contactcenterinsights.v1.AnnotatorSelector.summarization_config:type_name -> google.cloud.contactcenterinsights.v1.AnnotatorSelector.SummarizationConfig + 95, // 97: google.cloud.contactcenterinsights.v1.AnnotatorSelector.qa_config:type_name -> google.cloud.contactcenterinsights.v1.AnnotatorSelector.QaConfig + 104, // 98: google.cloud.contactcenterinsights.v1.QaQuestion.create_time:type_name -> google.protobuf.Timestamp + 104, // 99: google.cloud.contactcenterinsights.v1.QaQuestion.update_time:type_name -> google.protobuf.Timestamp + 97, // 100: google.cloud.contactcenterinsights.v1.QaQuestion.answer_choices:type_name -> google.cloud.contactcenterinsights.v1.QaQuestion.AnswerChoice + 98, // 101: google.cloud.contactcenterinsights.v1.QaQuestion.metrics:type_name -> google.cloud.contactcenterinsights.v1.QaQuestion.Metrics + 99, // 102: google.cloud.contactcenterinsights.v1.QaQuestion.tuning_metadata:type_name -> google.cloud.contactcenterinsights.v1.QaQuestion.TuningMetadata + 104, // 103: google.cloud.contactcenterinsights.v1.QaScorecard.create_time:type_name -> google.protobuf.Timestamp + 104, // 104: google.cloud.contactcenterinsights.v1.QaScorecard.update_time:type_name -> google.protobuf.Timestamp + 64, // 105: google.cloud.contactcenterinsights.v1.QaScorecardRevision.snapshot:type_name -> google.cloud.contactcenterinsights.v1.QaScorecard + 104, // 106: google.cloud.contactcenterinsights.v1.QaScorecardRevision.create_time:type_name -> google.protobuf.Timestamp + 12, // 107: google.cloud.contactcenterinsights.v1.QaScorecardRevision.state:type_name -> google.cloud.contactcenterinsights.v1.QaScorecardRevision.State + 100, // 108: google.cloud.contactcenterinsights.v1.QaAnswer.answer_value:type_name -> google.cloud.contactcenterinsights.v1.QaAnswer.AnswerValue + 101, // 109: google.cloud.contactcenterinsights.v1.QaAnswer.answer_sources:type_name -> google.cloud.contactcenterinsights.v1.QaAnswer.AnswerSource + 104, // 110: google.cloud.contactcenterinsights.v1.QaScorecardResult.create_time:type_name -> google.protobuf.Timestamp + 66, // 111: google.cloud.contactcenterinsights.v1.QaScorecardResult.qa_answers:type_name -> google.cloud.contactcenterinsights.v1.QaAnswer + 102, // 112: google.cloud.contactcenterinsights.v1.QaScorecardResult.qa_tag_results:type_name -> google.cloud.contactcenterinsights.v1.QaScorecardResult.QaTagResult + 103, // 113: google.cloud.contactcenterinsights.v1.QaScorecardResult.score_sources:type_name -> google.cloud.contactcenterinsights.v1.QaScorecardResult.ScoreSource + 105, // 114: google.cloud.contactcenterinsights.v1.Conversation.QualityMetadata.wait_duration:type_name -> google.protobuf.Duration + 73, // 115: google.cloud.contactcenterinsights.v1.Conversation.QualityMetadata.agent_info:type_name -> google.cloud.contactcenterinsights.v1.Conversation.QualityMetadata.AgentInfo + 74, // 116: google.cloud.contactcenterinsights.v1.Conversation.Transcript.transcript_segments:type_name -> google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment + 31, // 117: google.cloud.contactcenterinsights.v1.Conversation.DialogflowIntentsEntry.value:type_name -> google.cloud.contactcenterinsights.v1.DialogflowIntent + 104, // 118: google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.message_time:type_name -> google.protobuf.Timestamp + 75, // 119: google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.words:type_name -> google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.WordInfo + 60, // 120: google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.segment_participant:type_name -> google.cloud.contactcenterinsights.v1.ConversationParticipant + 76, // 121: google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.dialogflow_segment_metadata:type_name -> google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.DialogflowSegmentMetadata + 37, // 122: google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.sentiment:type_name -> google.cloud.contactcenterinsights.v1.SentimentData + 105, // 123: google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.WordInfo.start_offset:type_name -> google.protobuf.Duration + 105, // 124: google.cloud.contactcenterinsights.v1.Conversation.Transcript.TranscriptSegment.WordInfo.end_offset:type_name -> google.protobuf.Duration + 26, // 125: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.annotations:type_name -> google.cloud.contactcenterinsights.v1.CallAnnotation + 78, // 126: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.entities:type_name -> google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.EntitiesEntry + 23, // 127: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.sentiments:type_name -> google.cloud.contactcenterinsights.v1.ConversationLevelSentiment + 24, // 128: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.silence:type_name -> google.cloud.contactcenterinsights.v1.ConversationLevelSilence + 79, // 129: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.intents:type_name -> google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.IntentsEntry + 80, // 130: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.phrase_matchers:type_name -> google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.PhraseMatchersEntry + 21, // 131: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.issue_model_result:type_name -> google.cloud.contactcenterinsights.v1.IssueModelResult + 67, // 132: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.qa_scorecard_results:type_name -> google.cloud.contactcenterinsights.v1.QaScorecardResult + 28, // 133: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.EntitiesEntry.value:type_name -> google.cloud.contactcenterinsights.v1.Entity + 29, // 134: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.IntentsEntry.value:type_name -> google.cloud.contactcenterinsights.v1.Intent + 30, // 135: google.cloud.contactcenterinsights.v1.AnalysisResult.CallAnalysisMetadata.PhraseMatchersEntry.value:type_name -> google.cloud.contactcenterinsights.v1.PhraseMatchData + 1, // 136: google.cloud.contactcenterinsights.v1.IssueModel.InputDataConfig.medium:type_name -> google.cloud.contactcenterinsights.v1.Conversation.Medium + 83, // 137: google.cloud.contactcenterinsights.v1.IssueModelLabelStats.IssueStatsEntry.value:type_name -> google.cloud.contactcenterinsights.v1.IssueModelLabelStats.IssueStats + 62, // 138: google.cloud.contactcenterinsights.v1.Settings.AnalysisConfig.annotator_selector:type_name -> google.cloud.contactcenterinsights.v1.AnnotatorSelector + 8, // 139: google.cloud.contactcenterinsights.v1.RuntimeAnnotation.UserInput.query_source:type_name -> google.cloud.contactcenterinsights.v1.RuntimeAnnotation.UserInput.QuerySource + 11, // 140: google.cloud.contactcenterinsights.v1.AnnotatorSelector.SummarizationConfig.summarization_model:type_name -> google.cloud.contactcenterinsights.v1.AnnotatorSelector.SummarizationConfig.SummarizationModel + 96, // 141: google.cloud.contactcenterinsights.v1.AnnotatorSelector.QaConfig.scorecard_list:type_name -> google.cloud.contactcenterinsights.v1.AnnotatorSelector.QaConfig.ScorecardList + 0, // 142: google.cloud.contactcenterinsights.v1.QaQuestion.TuningMetadata.dataset_validation_warnings:type_name -> google.cloud.contactcenterinsights.v1.DatasetValidationWarning + 13, // 143: google.cloud.contactcenterinsights.v1.QaAnswer.AnswerSource.source_type:type_name -> google.cloud.contactcenterinsights.v1.QaAnswer.AnswerSource.SourceType + 100, // 144: google.cloud.contactcenterinsights.v1.QaAnswer.AnswerSource.answer_value:type_name -> google.cloud.contactcenterinsights.v1.QaAnswer.AnswerValue + 14, // 145: google.cloud.contactcenterinsights.v1.QaScorecardResult.ScoreSource.source_type:type_name -> google.cloud.contactcenterinsights.v1.QaScorecardResult.ScoreSource.SourceType + 102, // 146: google.cloud.contactcenterinsights.v1.QaScorecardResult.ScoreSource.qa_tag_results:type_name -> google.cloud.contactcenterinsights.v1.QaScorecardResult.QaTagResult + 147, // [147:147] is the sub-list for method output_type + 147, // [147:147] is the sub-list for method input_type + 147, // [147:147] is the sub-list for extension type_name + 147, // [147:147] is the sub-list for extension extendee + 0, // [0:147] is the sub-list for field type_name } func init() { file_google_cloud_contactcenterinsights_v1_resources_proto_init() } @@ -7302,8 +9649,152 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Analysis); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*Analysis); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*ConversationDataSource); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*GcsSource); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*DialogflowSource); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*AnalysisResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*IssueModelResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[7].Exporter = func(v any, i int) any { + switch v := v.(*FeedbackLabel); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[8].Exporter = func(v any, i int) any { + switch v := v.(*ConversationLevelSentiment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[9].Exporter = func(v any, i int) any { + switch v := v.(*ConversationLevelSilence); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[10].Exporter = func(v any, i int) any { + switch v := v.(*IssueAssignment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[11].Exporter = func(v any, i int) any { + switch v := v.(*CallAnnotation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[12].Exporter = func(v any, i int) any { + switch v := v.(*AnnotationBoundary); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[13].Exporter = func(v any, i int) any { + switch v := v.(*Entity); i { case 0: return &v.state case 1: @@ -7314,8 +9805,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ConversationDataSource); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[14].Exporter = func(v any, i int) any { + switch v := v.(*Intent); i { case 0: return &v.state case 1: @@ -7326,8 +9817,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*GcsSource); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[15].Exporter = func(v any, i int) any { + switch v := v.(*PhraseMatchData); i { case 0: return &v.state case 1: @@ -7338,8 +9829,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*DialogflowSource); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[16].Exporter = func(v any, i int) any { + switch v := v.(*DialogflowIntent); i { case 0: return &v.state case 1: @@ -7350,8 +9841,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*AnalysisResult); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[17].Exporter = func(v any, i int) any { + switch v := v.(*InterruptionData); i { case 0: return &v.state case 1: @@ -7362,8 +9853,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*IssueModelResult); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[18].Exporter = func(v any, i int) any { + switch v := v.(*SilenceData); i { case 0: return &v.state case 1: @@ -7374,8 +9865,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*ConversationLevelSentiment); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[19].Exporter = func(v any, i int) any { + switch v := v.(*HoldData); i { case 0: return &v.state case 1: @@ -7386,8 +9877,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*ConversationLevelSilence); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[20].Exporter = func(v any, i int) any { + switch v := v.(*EntityMentionData); i { case 0: return &v.state case 1: @@ -7398,8 +9889,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*IssueAssignment); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[21].Exporter = func(v any, i int) any { + switch v := v.(*IntentMatchData); i { case 0: return &v.state case 1: @@ -7410,8 +9901,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*CallAnnotation); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[22].Exporter = func(v any, i int) any { + switch v := v.(*SentimentData); i { case 0: return &v.state case 1: @@ -7422,8 +9913,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*AnnotationBoundary); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[23].Exporter = func(v any, i int) any { + switch v := v.(*IssueMatchData); i { case 0: return &v.state case 1: @@ -7434,8 +9925,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*Entity); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[24].Exporter = func(v any, i int) any { + switch v := v.(*IssueModel); i { case 0: return &v.state case 1: @@ -7446,8 +9937,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*Intent); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[25].Exporter = func(v any, i int) any { + switch v := v.(*Issue); i { case 0: return &v.state case 1: @@ -7458,8 +9949,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*PhraseMatchData); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[26].Exporter = func(v any, i int) any { + switch v := v.(*IssueModelLabelStats); i { case 0: return &v.state case 1: @@ -7470,8 +9961,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*DialogflowIntent); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[27].Exporter = func(v any, i int) any { + switch v := v.(*PhraseMatcher); i { case 0: return &v.state case 1: @@ -7482,8 +9973,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*InterruptionData); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[28].Exporter = func(v any, i int) any { + switch v := v.(*PhraseMatchRuleGroup); i { case 0: return &v.state case 1: @@ -7494,8 +9985,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*SilenceData); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[29].Exporter = func(v any, i int) any { + switch v := v.(*PhraseMatchRule); i { case 0: return &v.state case 1: @@ -7506,8 +9997,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*HoldData); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[30].Exporter = func(v any, i int) any { + switch v := v.(*PhraseMatchRuleConfig); i { case 0: return &v.state case 1: @@ -7518,8 +10009,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*EntityMentionData); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[31].Exporter = func(v any, i int) any { + switch v := v.(*ExactMatchConfig); i { case 0: return &v.state case 1: @@ -7530,8 +10021,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*IntentMatchData); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[32].Exporter = func(v any, i int) any { + switch v := v.(*Settings); i { case 0: return &v.state case 1: @@ -7542,8 +10033,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*SentimentData); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[33].Exporter = func(v any, i int) any { + switch v := v.(*AnalysisRule); i { case 0: return &v.state case 1: @@ -7554,8 +10045,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*IssueMatchData); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[34].Exporter = func(v any, i int) any { + switch v := v.(*EncryptionSpec); i { case 0: return &v.state case 1: @@ -7566,8 +10057,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*IssueModel); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[35].Exporter = func(v any, i int) any { + switch v := v.(*RedactionConfig); i { case 0: return &v.state case 1: @@ -7578,8 +10069,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*Issue); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[36].Exporter = func(v any, i int) any { + switch v := v.(*SpeechConfig); i { case 0: return &v.state case 1: @@ -7590,8 +10081,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[25].Exporter = func(v any, i int) any { - switch v := v.(*IssueModelLabelStats); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[37].Exporter = func(v any, i int) any { + switch v := v.(*RuntimeAnnotation); i { case 0: return &v.state case 1: @@ -7602,8 +10093,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[26].Exporter = func(v any, i int) any { - switch v := v.(*PhraseMatcher); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[38].Exporter = func(v any, i int) any { + switch v := v.(*AnswerFeedback); i { case 0: return &v.state case 1: @@ -7614,8 +10105,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[27].Exporter = func(v any, i int) any { - switch v := v.(*PhraseMatchRuleGroup); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[39].Exporter = func(v any, i int) any { + switch v := v.(*ArticleSuggestionData); i { case 0: return &v.state case 1: @@ -7626,8 +10117,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[28].Exporter = func(v any, i int) any { - switch v := v.(*PhraseMatchRule); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[40].Exporter = func(v any, i int) any { + switch v := v.(*FaqAnswerData); i { case 0: return &v.state case 1: @@ -7638,8 +10129,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[29].Exporter = func(v any, i int) any { - switch v := v.(*PhraseMatchRuleConfig); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[41].Exporter = func(v any, i int) any { + switch v := v.(*SmartReplyData); i { case 0: return &v.state case 1: @@ -7650,8 +10141,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[30].Exporter = func(v any, i int) any { - switch v := v.(*ExactMatchConfig); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[42].Exporter = func(v any, i int) any { + switch v := v.(*SmartComposeSuggestionData); i { case 0: return &v.state case 1: @@ -7662,8 +10153,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[31].Exporter = func(v any, i int) any { - switch v := v.(*Settings); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[43].Exporter = func(v any, i int) any { + switch v := v.(*DialogflowInteractionData); i { case 0: return &v.state case 1: @@ -7674,8 +10165,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[32].Exporter = func(v any, i int) any { - switch v := v.(*EncryptionSpec); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[44].Exporter = func(v any, i int) any { + switch v := v.(*ConversationSummarizationSuggestionData); i { case 0: return &v.state case 1: @@ -7686,8 +10177,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[33].Exporter = func(v any, i int) any { - switch v := v.(*RedactionConfig); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[45].Exporter = func(v any, i int) any { + switch v := v.(*ConversationParticipant); i { case 0: return &v.state case 1: @@ -7698,8 +10189,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[34].Exporter = func(v any, i int) any { - switch v := v.(*SpeechConfig); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[46].Exporter = func(v any, i int) any { + switch v := v.(*View); i { case 0: return &v.state case 1: @@ -7710,8 +10201,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[35].Exporter = func(v any, i int) any { - switch v := v.(*RuntimeAnnotation); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[47].Exporter = func(v any, i int) any { + switch v := v.(*AnnotatorSelector); i { case 0: return &v.state case 1: @@ -7722,8 +10213,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[36].Exporter = func(v any, i int) any { - switch v := v.(*AnswerFeedback); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[48].Exporter = func(v any, i int) any { + switch v := v.(*QaQuestion); i { case 0: return &v.state case 1: @@ -7734,8 +10225,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[37].Exporter = func(v any, i int) any { - switch v := v.(*ArticleSuggestionData); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[49].Exporter = func(v any, i int) any { + switch v := v.(*QaScorecard); i { case 0: return &v.state case 1: @@ -7746,8 +10237,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[38].Exporter = func(v any, i int) any { - switch v := v.(*FaqAnswerData); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[50].Exporter = func(v any, i int) any { + switch v := v.(*QaScorecardRevision); i { case 0: return &v.state case 1: @@ -7758,8 +10249,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[39].Exporter = func(v any, i int) any { - switch v := v.(*SmartReplyData); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[51].Exporter = func(v any, i int) any { + switch v := v.(*QaAnswer); i { case 0: return &v.state case 1: @@ -7770,8 +10261,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[40].Exporter = func(v any, i int) any { - switch v := v.(*SmartComposeSuggestionData); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[52].Exporter = func(v any, i int) any { + switch v := v.(*QaScorecardResult); i { case 0: return &v.state case 1: @@ -7782,8 +10273,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[41].Exporter = func(v any, i int) any { - switch v := v.(*DialogflowInteractionData); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[53].Exporter = func(v any, i int) any { + switch v := v.(*Conversation_CallMetadata); i { case 0: return &v.state case 1: @@ -7794,8 +10285,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[42].Exporter = func(v any, i int) any { - switch v := v.(*ConversationSummarizationSuggestionData); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[54].Exporter = func(v any, i int) any { + switch v := v.(*Conversation_QualityMetadata); i { case 0: return &v.state case 1: @@ -7806,8 +10297,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[43].Exporter = func(v any, i int) any { - switch v := v.(*ConversationParticipant); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[55].Exporter = func(v any, i int) any { + switch v := v.(*Conversation_Transcript); i { case 0: return &v.state case 1: @@ -7818,8 +10309,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[44].Exporter = func(v any, i int) any { - switch v := v.(*View); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[58].Exporter = func(v any, i int) any { + switch v := v.(*Conversation_QualityMetadata_AgentInfo); i { case 0: return &v.state case 1: @@ -7830,8 +10321,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[45].Exporter = func(v any, i int) any { - switch v := v.(*AnnotatorSelector); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[59].Exporter = func(v any, i int) any { + switch v := v.(*Conversation_Transcript_TranscriptSegment); i { case 0: return &v.state case 1: @@ -7842,8 +10333,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[46].Exporter = func(v any, i int) any { - switch v := v.(*Conversation_CallMetadata); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[60].Exporter = func(v any, i int) any { + switch v := v.(*Conversation_Transcript_TranscriptSegment_WordInfo); i { case 0: return &v.state case 1: @@ -7854,8 +10345,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[47].Exporter = func(v any, i int) any { - switch v := v.(*Conversation_QualityMetadata); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[61].Exporter = func(v any, i int) any { + switch v := v.(*Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata); i { case 0: return &v.state case 1: @@ -7866,8 +10357,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[48].Exporter = func(v any, i int) any { - switch v := v.(*Conversation_Transcript); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[62].Exporter = func(v any, i int) any { + switch v := v.(*AnalysisResult_CallAnalysisMetadata); i { case 0: return &v.state case 1: @@ -7878,8 +10369,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[51].Exporter = func(v any, i int) any { - switch v := v.(*Conversation_QualityMetadata_AgentInfo); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[67].Exporter = func(v any, i int) any { + switch v := v.(*IssueModel_InputDataConfig); i { case 0: return &v.state case 1: @@ -7890,8 +10381,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[52].Exporter = func(v any, i int) any { - switch v := v.(*Conversation_Transcript_TranscriptSegment); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[68].Exporter = func(v any, i int) any { + switch v := v.(*IssueModelLabelStats_IssueStats); i { case 0: return &v.state case 1: @@ -7902,8 +10393,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[53].Exporter = func(v any, i int) any { - switch v := v.(*Conversation_Transcript_TranscriptSegment_WordInfo); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[70].Exporter = func(v any, i int) any { + switch v := v.(*Settings_AnalysisConfig); i { case 0: return &v.state case 1: @@ -7914,8 +10405,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[54].Exporter = func(v any, i int) any { - switch v := v.(*Conversation_Transcript_TranscriptSegment_DialogflowSegmentMetadata); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[72].Exporter = func(v any, i int) any { + switch v := v.(*RuntimeAnnotation_UserInput); i { case 0: return &v.state case 1: @@ -7926,8 +10417,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[55].Exporter = func(v any, i int) any { - switch v := v.(*AnalysisResult_CallAnalysisMetadata); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[79].Exporter = func(v any, i int) any { + switch v := v.(*AnnotatorSelector_SummarizationConfig); i { case 0: return &v.state case 1: @@ -7938,8 +10429,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[60].Exporter = func(v any, i int) any { - switch v := v.(*IssueModel_InputDataConfig); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[80].Exporter = func(v any, i int) any { + switch v := v.(*AnnotatorSelector_QaConfig); i { case 0: return &v.state case 1: @@ -7950,8 +10441,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[61].Exporter = func(v any, i int) any { - switch v := v.(*IssueModelLabelStats_IssueStats); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[81].Exporter = func(v any, i int) any { + switch v := v.(*AnnotatorSelector_QaConfig_ScorecardList); i { case 0: return &v.state case 1: @@ -7962,8 +10453,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[63].Exporter = func(v any, i int) any { - switch v := v.(*Settings_AnalysisConfig); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[82].Exporter = func(v any, i int) any { + switch v := v.(*QaQuestion_AnswerChoice); i { case 0: return &v.state case 1: @@ -7974,8 +10465,8 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[65].Exporter = func(v any, i int) any { - switch v := v.(*RuntimeAnnotation_UserInput); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[83].Exporter = func(v any, i int) any { + switch v := v.(*QaQuestion_Metrics); i { case 0: return &v.state case 1: @@ -7986,8 +10477,56 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { return nil } } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[72].Exporter = func(v any, i int) any { - switch v := v.(*AnnotatorSelector_SummarizationConfig); i { + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[84].Exporter = func(v any, i int) any { + switch v := v.(*QaQuestion_TuningMetadata); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[85].Exporter = func(v any, i int) any { + switch v := v.(*QaAnswer_AnswerValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[86].Exporter = func(v any, i int) any { + switch v := v.(*QaAnswer_AnswerSource); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[87].Exporter = func(v any, i int) any { + switch v := v.(*QaScorecardResult_QaTagResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[88].Exporter = func(v any, i int) any { + switch v := v.(*QaScorecardResult_ScoreSource); i { case 0: return &v.state case 1: @@ -8011,7 +10550,11 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[5].OneofWrappers = []any{ (*AnalysisResult_CallAnalysisMetadata_)(nil), } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[10].OneofWrappers = []any{ + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[7].OneofWrappers = []any{ + (*FeedbackLabel_Label)(nil), + (*FeedbackLabel_QaAnswerLabel)(nil), + } + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[11].OneofWrappers = []any{ (*CallAnnotation_InterruptionData)(nil), (*CallAnnotation_SentimentData)(nil), (*CallAnnotation_SilenceData)(nil), @@ -8021,13 +10564,14 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { (*CallAnnotation_PhraseMatchData)(nil), (*CallAnnotation_IssueMatchData)(nil), } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[11].OneofWrappers = []any{ + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[12].OneofWrappers = []any{ (*AnnotationBoundary_WordIndex)(nil), } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[29].OneofWrappers = []any{ + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[30].OneofWrappers = []any{ (*PhraseMatchRuleConfig_ExactMatchConfig)(nil), } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[35].OneofWrappers = []any{ + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[33].OneofWrappers = []any{} + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[37].OneofWrappers = []any{ (*RuntimeAnnotation_ArticleSuggestion)(nil), (*RuntimeAnnotation_FaqAnswer)(nil), (*RuntimeAnnotation_SmartReply)(nil), @@ -8035,21 +10579,39 @@ func file_google_cloud_contactcenterinsights_v1_resources_proto_init() { (*RuntimeAnnotation_DialogflowInteraction)(nil), (*RuntimeAnnotation_ConversationSummarizationSuggestion)(nil), } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[43].OneofWrappers = []any{ + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[45].OneofWrappers = []any{ (*ConversationParticipant_DialogflowParticipantName)(nil), (*ConversationParticipant_UserId)(nil), } - file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[72].OneofWrappers = []any{ + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[52].OneofWrappers = []any{} + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[79].OneofWrappers = []any{ (*AnnotatorSelector_SummarizationConfig_ConversationProfile)(nil), (*AnnotatorSelector_SummarizationConfig_SummarizationModel_)(nil), } + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[80].OneofWrappers = []any{ + (*AnnotatorSelector_QaConfig_ScorecardList_)(nil), + } + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[82].OneofWrappers = []any{ + (*QaQuestion_AnswerChoice_StrValue)(nil), + (*QaQuestion_AnswerChoice_NumValue)(nil), + (*QaQuestion_AnswerChoice_BoolValue)(nil), + (*QaQuestion_AnswerChoice_NaValue)(nil), + } + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[85].OneofWrappers = []any{ + (*QaAnswer_AnswerValue_StrValue)(nil), + (*QaAnswer_AnswerValue_NumValue)(nil), + (*QaAnswer_AnswerValue_BoolValue)(nil), + (*QaAnswer_AnswerValue_NaValue)(nil), + } + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[87].OneofWrappers = []any{} + file_google_cloud_contactcenterinsights_v1_resources_proto_msgTypes[88].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_contactcenterinsights_v1_resources_proto_rawDesc, - NumEnums: 11, - NumMessages: 73, + NumEnums: 15, + NumMessages: 89, NumExtensions: 0, NumServices: 0, }, diff --git a/contactcenterinsights/apiv1/gapic_metadata.json b/contactcenterinsights/apiv1/gapic_metadata.json index e26436c41dfc..cf9dc3524668 100644 --- a/contactcenterinsights/apiv1/gapic_metadata.json +++ b/contactcenterinsights/apiv1/gapic_metadata.json @@ -20,6 +20,16 @@ "BulkDeleteConversations" ] }, + "BulkDownloadFeedbackLabels": { + "methods": [ + "BulkDownloadFeedbackLabels" + ] + }, + "BulkUploadFeedbackLabels": { + "methods": [ + "BulkUploadFeedbackLabels" + ] + }, "CalculateIssueModelStats": { "methods": [ "CalculateIssueModelStats" @@ -40,11 +50,21 @@ "CreateAnalysis" ] }, + "CreateAnalysisRule": { + "methods": [ + "CreateAnalysisRule" + ] + }, "CreateConversation": { "methods": [ "CreateConversation" ] }, + "CreateFeedbackLabel": { + "methods": [ + "CreateFeedbackLabel" + ] + }, "CreateIssueModel": { "methods": [ "CreateIssueModel" @@ -55,6 +75,21 @@ "CreatePhraseMatcher" ] }, + "CreateQaQuestion": { + "methods": [ + "CreateQaQuestion" + ] + }, + "CreateQaScorecard": { + "methods": [ + "CreateQaScorecard" + ] + }, + "CreateQaScorecardRevision": { + "methods": [ + "CreateQaScorecardRevision" + ] + }, "CreateView": { "methods": [ "CreateView" @@ -65,11 +100,21 @@ "DeleteAnalysis" ] }, + "DeleteAnalysisRule": { + "methods": [ + "DeleteAnalysisRule" + ] + }, "DeleteConversation": { "methods": [ "DeleteConversation" ] }, + "DeleteFeedbackLabel": { + "methods": [ + "DeleteFeedbackLabel" + ] + }, "DeleteIssue": { "methods": [ "DeleteIssue" @@ -85,6 +130,21 @@ "DeletePhraseMatcher" ] }, + "DeleteQaQuestion": { + "methods": [ + "DeleteQaQuestion" + ] + }, + "DeleteQaScorecard": { + "methods": [ + "DeleteQaScorecard" + ] + }, + "DeleteQaScorecardRevision": { + "methods": [ + "DeleteQaScorecardRevision" + ] + }, "DeleteView": { "methods": [ "DeleteView" @@ -95,6 +155,11 @@ "DeployIssueModel" ] }, + "DeployQaScorecardRevision": { + "methods": [ + "DeployQaScorecardRevision" + ] + }, "ExportInsightsData": { "methods": [ "ExportInsightsData" @@ -110,6 +175,11 @@ "GetAnalysis" ] }, + "GetAnalysisRule": { + "methods": [ + "GetAnalysisRule" + ] + }, "GetConversation": { "methods": [ "GetConversation" @@ -120,6 +190,11 @@ "GetEncryptionSpec" ] }, + "GetFeedbackLabel": { + "methods": [ + "GetFeedbackLabel" + ] + }, "GetIssue": { "methods": [ "GetIssue" @@ -140,6 +215,21 @@ "GetPhraseMatcher" ] }, + "GetQaQuestion": { + "methods": [ + "GetQaQuestion" + ] + }, + "GetQaScorecard": { + "methods": [ + "GetQaScorecard" + ] + }, + "GetQaScorecardRevision": { + "methods": [ + "GetQaScorecardRevision" + ] + }, "GetSettings": { "methods": [ "GetSettings" @@ -165,16 +255,31 @@ "InitializeEncryptionSpec" ] }, + "ListAllFeedbackLabels": { + "methods": [ + "ListAllFeedbackLabels" + ] + }, "ListAnalyses": { "methods": [ "ListAnalyses" ] }, + "ListAnalysisRules": { + "methods": [ + "ListAnalysisRules" + ] + }, "ListConversations": { "methods": [ "ListConversations" ] }, + "ListFeedbackLabels": { + "methods": [ + "ListFeedbackLabels" + ] + }, "ListIssueModels": { "methods": [ "ListIssueModels" @@ -195,21 +300,61 @@ "ListPhraseMatchers" ] }, + "ListQaQuestions": { + "methods": [ + "ListQaQuestions" + ] + }, + "ListQaScorecardRevisions": { + "methods": [ + "ListQaScorecardRevisions" + ] + }, + "ListQaScorecards": { + "methods": [ + "ListQaScorecards" + ] + }, "ListViews": { "methods": [ "ListViews" ] }, + "QueryMetrics": { + "methods": [ + "QueryMetrics" + ] + }, + "TuneQaScorecardRevision": { + "methods": [ + "TuneQaScorecardRevision" + ] + }, "UndeployIssueModel": { "methods": [ "UndeployIssueModel" ] }, + "UndeployQaScorecardRevision": { + "methods": [ + "UndeployQaScorecardRevision" + ] + }, + "UpdateAnalysisRule": { + "methods": [ + "UpdateAnalysisRule" + ] + }, "UpdateConversation": { "methods": [ "UpdateConversation" ] }, + "UpdateFeedbackLabel": { + "methods": [ + "UpdateFeedbackLabel" + ] + }, "UpdateIssue": { "methods": [ "UpdateIssue" @@ -225,6 +370,16 @@ "UpdatePhraseMatcher" ] }, + "UpdateQaQuestion": { + "methods": [ + "UpdateQaQuestion" + ] + }, + "UpdateQaScorecard": { + "methods": [ + "UpdateQaScorecard" + ] + }, "UpdateSettings": { "methods": [ "UpdateSettings" @@ -255,6 +410,16 @@ "BulkDeleteConversations" ] }, + "BulkDownloadFeedbackLabels": { + "methods": [ + "BulkDownloadFeedbackLabels" + ] + }, + "BulkUploadFeedbackLabels": { + "methods": [ + "BulkUploadFeedbackLabels" + ] + }, "CalculateIssueModelStats": { "methods": [ "CalculateIssueModelStats" @@ -275,11 +440,21 @@ "CreateAnalysis" ] }, + "CreateAnalysisRule": { + "methods": [ + "CreateAnalysisRule" + ] + }, "CreateConversation": { "methods": [ "CreateConversation" ] }, + "CreateFeedbackLabel": { + "methods": [ + "CreateFeedbackLabel" + ] + }, "CreateIssueModel": { "methods": [ "CreateIssueModel" @@ -290,6 +465,21 @@ "CreatePhraseMatcher" ] }, + "CreateQaQuestion": { + "methods": [ + "CreateQaQuestion" + ] + }, + "CreateQaScorecard": { + "methods": [ + "CreateQaScorecard" + ] + }, + "CreateQaScorecardRevision": { + "methods": [ + "CreateQaScorecardRevision" + ] + }, "CreateView": { "methods": [ "CreateView" @@ -300,11 +490,21 @@ "DeleteAnalysis" ] }, + "DeleteAnalysisRule": { + "methods": [ + "DeleteAnalysisRule" + ] + }, "DeleteConversation": { "methods": [ "DeleteConversation" ] }, + "DeleteFeedbackLabel": { + "methods": [ + "DeleteFeedbackLabel" + ] + }, "DeleteIssue": { "methods": [ "DeleteIssue" @@ -320,6 +520,21 @@ "DeletePhraseMatcher" ] }, + "DeleteQaQuestion": { + "methods": [ + "DeleteQaQuestion" + ] + }, + "DeleteQaScorecard": { + "methods": [ + "DeleteQaScorecard" + ] + }, + "DeleteQaScorecardRevision": { + "methods": [ + "DeleteQaScorecardRevision" + ] + }, "DeleteView": { "methods": [ "DeleteView" @@ -330,6 +545,11 @@ "DeployIssueModel" ] }, + "DeployQaScorecardRevision": { + "methods": [ + "DeployQaScorecardRevision" + ] + }, "ExportInsightsData": { "methods": [ "ExportInsightsData" @@ -345,6 +565,11 @@ "GetAnalysis" ] }, + "GetAnalysisRule": { + "methods": [ + "GetAnalysisRule" + ] + }, "GetConversation": { "methods": [ "GetConversation" @@ -355,6 +580,11 @@ "GetEncryptionSpec" ] }, + "GetFeedbackLabel": { + "methods": [ + "GetFeedbackLabel" + ] + }, "GetIssue": { "methods": [ "GetIssue" @@ -375,6 +605,21 @@ "GetPhraseMatcher" ] }, + "GetQaQuestion": { + "methods": [ + "GetQaQuestion" + ] + }, + "GetQaScorecard": { + "methods": [ + "GetQaScorecard" + ] + }, + "GetQaScorecardRevision": { + "methods": [ + "GetQaScorecardRevision" + ] + }, "GetSettings": { "methods": [ "GetSettings" @@ -400,16 +645,31 @@ "InitializeEncryptionSpec" ] }, + "ListAllFeedbackLabels": { + "methods": [ + "ListAllFeedbackLabels" + ] + }, "ListAnalyses": { "methods": [ "ListAnalyses" ] }, + "ListAnalysisRules": { + "methods": [ + "ListAnalysisRules" + ] + }, "ListConversations": { "methods": [ "ListConversations" ] }, + "ListFeedbackLabels": { + "methods": [ + "ListFeedbackLabels" + ] + }, "ListIssueModels": { "methods": [ "ListIssueModels" @@ -430,21 +690,61 @@ "ListPhraseMatchers" ] }, + "ListQaQuestions": { + "methods": [ + "ListQaQuestions" + ] + }, + "ListQaScorecardRevisions": { + "methods": [ + "ListQaScorecardRevisions" + ] + }, + "ListQaScorecards": { + "methods": [ + "ListQaScorecards" + ] + }, "ListViews": { "methods": [ "ListViews" ] }, + "QueryMetrics": { + "methods": [ + "QueryMetrics" + ] + }, + "TuneQaScorecardRevision": { + "methods": [ + "TuneQaScorecardRevision" + ] + }, "UndeployIssueModel": { "methods": [ "UndeployIssueModel" ] }, + "UndeployQaScorecardRevision": { + "methods": [ + "UndeployQaScorecardRevision" + ] + }, + "UpdateAnalysisRule": { + "methods": [ + "UpdateAnalysisRule" + ] + }, "UpdateConversation": { "methods": [ "UpdateConversation" ] }, + "UpdateFeedbackLabel": { + "methods": [ + "UpdateFeedbackLabel" + ] + }, "UpdateIssue": { "methods": [ "UpdateIssue" @@ -460,6 +760,16 @@ "UpdatePhraseMatcher" ] }, + "UpdateQaQuestion": { + "methods": [ + "UpdateQaQuestion" + ] + }, + "UpdateQaScorecard": { + "methods": [ + "UpdateQaScorecard" + ] + }, "UpdateSettings": { "methods": [ "UpdateSettings" diff --git a/dataplex/apiv1/auxiliary.go b/dataplex/apiv1/auxiliary.go index 337f6cfe8d29..8b5cdfd65e44 100755 --- a/dataplex/apiv1/auxiliary.go +++ b/dataplex/apiv1/auxiliary.go @@ -638,6 +638,67 @@ func (op *CreateLakeOperation) Name() string { return op.lro.Name() } +// CreateMetadataJobOperation manages a long-running operation from CreateMetadataJob. +type CreateMetadataJobOperation struct { + lro *longrunning.Operation +} + +// Wait blocks until the long-running operation is completed, returning the response and any errors encountered. +// +// See documentation of Poll for error-handling information. +func (op *CreateMetadataJobOperation) Wait(ctx context.Context, opts ...gax.CallOption) (*dataplexpb.MetadataJob, error) { + var resp dataplexpb.MetadataJob + if err := op.lro.WaitWithInterval(ctx, &resp, time.Minute, opts...); err != nil { + return nil, err + } + return &resp, nil +} + +// Poll fetches the latest state of the long-running operation. +// +// Poll also fetches the latest metadata, which can be retrieved by Metadata. +// +// If Poll fails, the error is returned and op is unmodified. If Poll succeeds and +// the operation has completed with failure, the error is returned and op.Done will return true. +// If Poll succeeds and the operation has completed successfully, +// op.Done will return true, and the response of the operation is returned. +// If Poll succeeds and the operation has not completed, the returned response and error are both nil. +func (op *CreateMetadataJobOperation) Poll(ctx context.Context, opts ...gax.CallOption) (*dataplexpb.MetadataJob, error) { + var resp dataplexpb.MetadataJob + if err := op.lro.Poll(ctx, &resp, opts...); err != nil { + return nil, err + } + if !op.Done() { + return nil, nil + } + return &resp, nil +} + +// Metadata returns metadata associated with the long-running operation. +// Metadata itself does not contact the server, but Poll does. +// To get the latest metadata, call this method after a successful call to Poll. +// If the metadata is not available, the returned metadata and error are both nil. +func (op *CreateMetadataJobOperation) Metadata() (*dataplexpb.OperationMetadata, error) { + var meta dataplexpb.OperationMetadata + if err := op.lro.Metadata(&meta); err == longrunning.ErrNoMetadata { + return nil, nil + } else if err != nil { + return nil, err + } + return &meta, nil +} + +// Done reports whether the long-running operation has completed. +func (op *CreateMetadataJobOperation) Done() bool { + return op.lro.Done() +} + +// Name returns the name of the long-running operation. +// The name is assigned by the server and is unique within the service from which the operation is created. +func (op *CreateMetadataJobOperation) Name() string { + return op.lro.Name() +} + // CreateTaskOperation manages a long-running operation from CreateTask. type CreateTaskOperation struct { lro *longrunning.Operation @@ -2891,6 +2952,53 @@ func (it *LocationIterator) takeBuf() interface{} { return b } +// MetadataJobIterator manages a stream of *dataplexpb.MetadataJob. +type MetadataJobIterator struct { + items []*dataplexpb.MetadataJob + pageInfo *iterator.PageInfo + nextFunc func() error + + // Response is the raw response for the current page. + // It must be cast to the RPC response type. + // Calling Next() or InternalFetch() updates this value. + Response interface{} + + // InternalFetch is for use by the Google Cloud Libraries only. + // It is not part of the stable interface of this package. + // + // InternalFetch returns results from a single call to the underlying RPC. + // The number of results is no greater than pageSize. + // If there are no more results, nextPageToken is empty and err is nil. + InternalFetch func(pageSize int, pageToken string) (results []*dataplexpb.MetadataJob, nextPageToken string, err error) +} + +// PageInfo supports pagination. See the [google.golang.org/api/iterator] package for details. +func (it *MetadataJobIterator) PageInfo() *iterator.PageInfo { + return it.pageInfo +} + +// Next returns the next result. Its second return value is iterator.Done if there are no more +// results. Once Next returns Done, all subsequent calls will return Done. +func (it *MetadataJobIterator) Next() (*dataplexpb.MetadataJob, error) { + var item *dataplexpb.MetadataJob + if err := it.nextFunc(); err != nil { + return item, err + } + item = it.items[0] + it.items = it.items[1:] + return item, nil +} + +func (it *MetadataJobIterator) bufLen() int { + return len(it.items) +} + +func (it *MetadataJobIterator) takeBuf() interface{} { + b := it.items + it.items = nil + return b +} + // OperationIterator manages a stream of *longrunningpb.Operation. type OperationIterator struct { items []*longrunningpb.Operation diff --git a/dataplex/apiv1/auxiliary_go123.go b/dataplex/apiv1/auxiliary_go123.go index e16f40aafe6b..a4834e98c782 100755 --- a/dataplex/apiv1/auxiliary_go123.go +++ b/dataplex/apiv1/auxiliary_go123.go @@ -129,6 +129,12 @@ func (it *LocationIterator) All() iter.Seq2[*locationpb.Location, error] { return iterator.RangeAdapter(it.Next) } +// All returns an iterator. If an error is returned by the iterator, the +// iterator will stop after that iteration. +func (it *MetadataJobIterator) All() iter.Seq2[*dataplexpb.MetadataJob, error] { + return iterator.RangeAdapter(it.Next) +} + // All returns an iterator. If an error is returned by the iterator, the // iterator will stop after that iteration. func (it *OperationIterator) All() iter.Seq2[*longrunningpb.Operation, error] { diff --git a/dataplex/apiv1/catalog_client.go b/dataplex/apiv1/catalog_client.go index d3351c2b8e2b..c4cba46c880a 100755 --- a/dataplex/apiv1/catalog_client.go +++ b/dataplex/apiv1/catalog_client.go @@ -42,34 +42,38 @@ var newCatalogClientHook clientHook // CatalogCallOptions contains the retry settings for each method of CatalogClient. type CatalogCallOptions struct { - CreateEntryType []gax.CallOption - UpdateEntryType []gax.CallOption - DeleteEntryType []gax.CallOption - ListEntryTypes []gax.CallOption - GetEntryType []gax.CallOption - CreateAspectType []gax.CallOption - UpdateAspectType []gax.CallOption - DeleteAspectType []gax.CallOption - ListAspectTypes []gax.CallOption - GetAspectType []gax.CallOption - CreateEntryGroup []gax.CallOption - UpdateEntryGroup []gax.CallOption - DeleteEntryGroup []gax.CallOption - ListEntryGroups []gax.CallOption - GetEntryGroup []gax.CallOption - CreateEntry []gax.CallOption - UpdateEntry []gax.CallOption - DeleteEntry []gax.CallOption - ListEntries []gax.CallOption - GetEntry []gax.CallOption - LookupEntry []gax.CallOption - SearchEntries []gax.CallOption - GetLocation []gax.CallOption - ListLocations []gax.CallOption - CancelOperation []gax.CallOption - DeleteOperation []gax.CallOption - GetOperation []gax.CallOption - ListOperations []gax.CallOption + CreateEntryType []gax.CallOption + UpdateEntryType []gax.CallOption + DeleteEntryType []gax.CallOption + ListEntryTypes []gax.CallOption + GetEntryType []gax.CallOption + CreateAspectType []gax.CallOption + UpdateAspectType []gax.CallOption + DeleteAspectType []gax.CallOption + ListAspectTypes []gax.CallOption + GetAspectType []gax.CallOption + CreateEntryGroup []gax.CallOption + UpdateEntryGroup []gax.CallOption + DeleteEntryGroup []gax.CallOption + ListEntryGroups []gax.CallOption + GetEntryGroup []gax.CallOption + CreateEntry []gax.CallOption + UpdateEntry []gax.CallOption + DeleteEntry []gax.CallOption + ListEntries []gax.CallOption + GetEntry []gax.CallOption + LookupEntry []gax.CallOption + SearchEntries []gax.CallOption + CreateMetadataJob []gax.CallOption + GetMetadataJob []gax.CallOption + ListMetadataJobs []gax.CallOption + CancelMetadataJob []gax.CallOption + GetLocation []gax.CallOption + ListLocations []gax.CallOption + CancelOperation []gax.CallOption + DeleteOperation []gax.CallOption + GetOperation []gax.CallOption + ListOperations []gax.CallOption } func defaultCatalogGRPCClientOptions() []option.ClientOption { @@ -265,12 +269,16 @@ func defaultCatalogCallOptions() *CatalogCallOptions { }) }), }, - GetLocation: []gax.CallOption{}, - ListLocations: []gax.CallOption{}, - CancelOperation: []gax.CallOption{}, - DeleteOperation: []gax.CallOption{}, - GetOperation: []gax.CallOption{}, - ListOperations: []gax.CallOption{}, + CreateMetadataJob: []gax.CallOption{}, + GetMetadataJob: []gax.CallOption{}, + ListMetadataJobs: []gax.CallOption{}, + CancelMetadataJob: []gax.CallOption{}, + GetLocation: []gax.CallOption{}, + ListLocations: []gax.CallOption{}, + CancelOperation: []gax.CallOption{}, + DeleteOperation: []gax.CallOption{}, + GetOperation: []gax.CallOption{}, + ListOperations: []gax.CallOption{}, } } @@ -310,6 +318,11 @@ type internalCatalogClient interface { GetEntry(context.Context, *dataplexpb.GetEntryRequest, ...gax.CallOption) (*dataplexpb.Entry, error) LookupEntry(context.Context, *dataplexpb.LookupEntryRequest, ...gax.CallOption) (*dataplexpb.Entry, error) SearchEntries(context.Context, *dataplexpb.SearchEntriesRequest, ...gax.CallOption) *SearchEntriesResultIterator + CreateMetadataJob(context.Context, *dataplexpb.CreateMetadataJobRequest, ...gax.CallOption) (*CreateMetadataJobOperation, error) + CreateMetadataJobOperation(name string) *CreateMetadataJobOperation + GetMetadataJob(context.Context, *dataplexpb.GetMetadataJobRequest, ...gax.CallOption) (*dataplexpb.MetadataJob, error) + ListMetadataJobs(context.Context, *dataplexpb.ListMetadataJobsRequest, ...gax.CallOption) *MetadataJobIterator + CancelMetadataJob(context.Context, *dataplexpb.CancelMetadataJobRequest, ...gax.CallOption) error GetLocation(context.Context, *locationpb.GetLocationRequest, ...gax.CallOption) (*locationpb.Location, error) ListLocations(context.Context, *locationpb.ListLocationsRequest, ...gax.CallOption) *LocationIterator CancelOperation(context.Context, *longrunningpb.CancelOperationRequest, ...gax.CallOption) error @@ -322,10 +335,10 @@ type internalCatalogClient interface { // Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. // // The primary resources offered by this service are EntryGroups, EntryTypes, -// AspectTypes, Entry and Aspect which collectively allow a data administrator -// to organize, manage, secure and catalog data across their organization -// located across cloud projects in a variety of storage systems including Cloud -// Storage and BigQuery. +// AspectTypes, and Entries. They collectively let data administrators organize, +// manage, secure, and catalog data located across cloud projects in their +// organization in a variety of storage systems, including Cloud Storage and +// BigQuery. type CatalogClient struct { // The internal transport-dependent client. internalClient internalCatalogClient @@ -362,7 +375,7 @@ func (c *CatalogClient) Connection() *grpc.ClientConn { return c.internalClient.Connection() } -// CreateEntryType creates an EntryType +// CreateEntryType creates an EntryType. func (c *CatalogClient) CreateEntryType(ctx context.Context, req *dataplexpb.CreateEntryTypeRequest, opts ...gax.CallOption) (*CreateEntryTypeOperation, error) { return c.internalClient.CreateEntryType(ctx, req, opts...) } @@ -373,7 +386,7 @@ func (c *CatalogClient) CreateEntryTypeOperation(name string) *CreateEntryTypeOp return c.internalClient.CreateEntryTypeOperation(name) } -// UpdateEntryType updates a EntryType resource. +// UpdateEntryType updates an EntryType. func (c *CatalogClient) UpdateEntryType(ctx context.Context, req *dataplexpb.UpdateEntryTypeRequest, opts ...gax.CallOption) (*UpdateEntryTypeOperation, error) { return c.internalClient.UpdateEntryType(ctx, req, opts...) } @@ -384,7 +397,7 @@ func (c *CatalogClient) UpdateEntryTypeOperation(name string) *UpdateEntryTypeOp return c.internalClient.UpdateEntryTypeOperation(name) } -// DeleteEntryType deletes a EntryType resource. +// DeleteEntryType deletes an EntryType. func (c *CatalogClient) DeleteEntryType(ctx context.Context, req *dataplexpb.DeleteEntryTypeRequest, opts ...gax.CallOption) (*DeleteEntryTypeOperation, error) { return c.internalClient.DeleteEntryType(ctx, req, opts...) } @@ -400,12 +413,12 @@ func (c *CatalogClient) ListEntryTypes(ctx context.Context, req *dataplexpb.List return c.internalClient.ListEntryTypes(ctx, req, opts...) } -// GetEntryType retrieves a EntryType resource. +// GetEntryType gets an EntryType. func (c *CatalogClient) GetEntryType(ctx context.Context, req *dataplexpb.GetEntryTypeRequest, opts ...gax.CallOption) (*dataplexpb.EntryType, error) { return c.internalClient.GetEntryType(ctx, req, opts...) } -// CreateAspectType creates an AspectType +// CreateAspectType creates an AspectType. func (c *CatalogClient) CreateAspectType(ctx context.Context, req *dataplexpb.CreateAspectTypeRequest, opts ...gax.CallOption) (*CreateAspectTypeOperation, error) { return c.internalClient.CreateAspectType(ctx, req, opts...) } @@ -416,7 +429,7 @@ func (c *CatalogClient) CreateAspectTypeOperation(name string) *CreateAspectType return c.internalClient.CreateAspectTypeOperation(name) } -// UpdateAspectType updates a AspectType resource. +// UpdateAspectType updates an AspectType. func (c *CatalogClient) UpdateAspectType(ctx context.Context, req *dataplexpb.UpdateAspectTypeRequest, opts ...gax.CallOption) (*UpdateAspectTypeOperation, error) { return c.internalClient.UpdateAspectType(ctx, req, opts...) } @@ -427,7 +440,7 @@ func (c *CatalogClient) UpdateAspectTypeOperation(name string) *UpdateAspectType return c.internalClient.UpdateAspectTypeOperation(name) } -// DeleteAspectType deletes a AspectType resource. +// DeleteAspectType deletes an AspectType. func (c *CatalogClient) DeleteAspectType(ctx context.Context, req *dataplexpb.DeleteAspectTypeRequest, opts ...gax.CallOption) (*DeleteAspectTypeOperation, error) { return c.internalClient.DeleteAspectType(ctx, req, opts...) } @@ -443,12 +456,12 @@ func (c *CatalogClient) ListAspectTypes(ctx context.Context, req *dataplexpb.Lis return c.internalClient.ListAspectTypes(ctx, req, opts...) } -// GetAspectType retrieves a AspectType resource. +// GetAspectType gets an AspectType. func (c *CatalogClient) GetAspectType(ctx context.Context, req *dataplexpb.GetAspectTypeRequest, opts ...gax.CallOption) (*dataplexpb.AspectType, error) { return c.internalClient.GetAspectType(ctx, req, opts...) } -// CreateEntryGroup creates an EntryGroup +// CreateEntryGroup creates an EntryGroup. func (c *CatalogClient) CreateEntryGroup(ctx context.Context, req *dataplexpb.CreateEntryGroupRequest, opts ...gax.CallOption) (*CreateEntryGroupOperation, error) { return c.internalClient.CreateEntryGroup(ctx, req, opts...) } @@ -459,7 +472,7 @@ func (c *CatalogClient) CreateEntryGroupOperation(name string) *CreateEntryGroup return c.internalClient.CreateEntryGroupOperation(name) } -// UpdateEntryGroup updates a EntryGroup resource. +// UpdateEntryGroup updates an EntryGroup. func (c *CatalogClient) UpdateEntryGroup(ctx context.Context, req *dataplexpb.UpdateEntryGroupRequest, opts ...gax.CallOption) (*UpdateEntryGroupOperation, error) { return c.internalClient.UpdateEntryGroup(ctx, req, opts...) } @@ -470,7 +483,7 @@ func (c *CatalogClient) UpdateEntryGroupOperation(name string) *UpdateEntryGroup return c.internalClient.UpdateEntryGroupOperation(name) } -// DeleteEntryGroup deletes a EntryGroup resource. +// DeleteEntryGroup deletes an EntryGroup. func (c *CatalogClient) DeleteEntryGroup(ctx context.Context, req *dataplexpb.DeleteEntryGroupRequest, opts ...gax.CallOption) (*DeleteEntryGroupOperation, error) { return c.internalClient.DeleteEntryGroup(ctx, req, opts...) } @@ -486,7 +499,7 @@ func (c *CatalogClient) ListEntryGroups(ctx context.Context, req *dataplexpb.Lis return c.internalClient.ListEntryGroups(ctx, req, opts...) } -// GetEntryGroup retrieves a EntryGroup resource. +// GetEntryGroup gets an EntryGroup. func (c *CatalogClient) GetEntryGroup(ctx context.Context, req *dataplexpb.GetEntryGroupRequest, opts ...gax.CallOption) (*dataplexpb.EntryGroup, error) { return c.internalClient.GetEntryGroup(ctx, req, opts...) } @@ -506,26 +519,68 @@ func (c *CatalogClient) DeleteEntry(ctx context.Context, req *dataplexpb.DeleteE return c.internalClient.DeleteEntry(ctx, req, opts...) } -// ListEntries lists entries within an entry group. +// ListEntries lists Entries within an EntryGroup. func (c *CatalogClient) ListEntries(ctx context.Context, req *dataplexpb.ListEntriesRequest, opts ...gax.CallOption) *EntryIterator { return c.internalClient.ListEntries(ctx, req, opts...) } -// GetEntry gets a single entry. +// GetEntry gets an Entry. +// +// Caution: The BigQuery metadata that is stored in Dataplex Catalog is +// changing. For more information, see Changes to BigQuery metadata stored in +// Dataplex +// Catalog (at https://cloud.google.com/dataplex/docs/biqquery-metadata-changes). func (c *CatalogClient) GetEntry(ctx context.Context, req *dataplexpb.GetEntryRequest, opts ...gax.CallOption) (*dataplexpb.Entry, error) { return c.internalClient.GetEntry(ctx, req, opts...) } -// LookupEntry looks up a single entry. +// LookupEntry looks up a single Entry by name using the permission on the source system. +// +// Caution: The BigQuery metadata that is stored in Dataplex Catalog is +// changing. For more information, see Changes to BigQuery metadata stored in +// Dataplex +// Catalog (at https://cloud.google.com/dataplex/docs/biqquery-metadata-changes). func (c *CatalogClient) LookupEntry(ctx context.Context, req *dataplexpb.LookupEntryRequest, opts ...gax.CallOption) (*dataplexpb.Entry, error) { return c.internalClient.LookupEntry(ctx, req, opts...) } -// SearchEntries searches for entries matching given query and scope. +// SearchEntries searches for Entries matching the given query and scope. func (c *CatalogClient) SearchEntries(ctx context.Context, req *dataplexpb.SearchEntriesRequest, opts ...gax.CallOption) *SearchEntriesResultIterator { return c.internalClient.SearchEntries(ctx, req, opts...) } +// CreateMetadataJob creates a metadata job. For example, use a metadata job to import Dataplex +// Catalog entries and aspects from a third-party system into Dataplex. +func (c *CatalogClient) CreateMetadataJob(ctx context.Context, req *dataplexpb.CreateMetadataJobRequest, opts ...gax.CallOption) (*CreateMetadataJobOperation, error) { + return c.internalClient.CreateMetadataJob(ctx, req, opts...) +} + +// CreateMetadataJobOperation returns a new CreateMetadataJobOperation from a given name. +// The name must be that of a previously created CreateMetadataJobOperation, possibly from a different process. +func (c *CatalogClient) CreateMetadataJobOperation(name string) *CreateMetadataJobOperation { + return c.internalClient.CreateMetadataJobOperation(name) +} + +// GetMetadataJob gets a metadata job. +func (c *CatalogClient) GetMetadataJob(ctx context.Context, req *dataplexpb.GetMetadataJobRequest, opts ...gax.CallOption) (*dataplexpb.MetadataJob, error) { + return c.internalClient.GetMetadataJob(ctx, req, opts...) +} + +// ListMetadataJobs lists metadata jobs. +func (c *CatalogClient) ListMetadataJobs(ctx context.Context, req *dataplexpb.ListMetadataJobsRequest, opts ...gax.CallOption) *MetadataJobIterator { + return c.internalClient.ListMetadataJobs(ctx, req, opts...) +} + +// CancelMetadataJob cancels a metadata job. +// +// If you cancel a metadata import job that is in progress, the changes in the +// job might be partially applied. We recommend that you reset the state of +// the entry groups in your project by running another metadata job that +// reverts the changes from the canceled job. +func (c *CatalogClient) CancelMetadataJob(ctx context.Context, req *dataplexpb.CancelMetadataJobRequest, opts ...gax.CallOption) error { + return c.internalClient.CancelMetadataJob(ctx, req, opts...) +} + // GetLocation gets information about a location. func (c *CatalogClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { return c.internalClient.GetLocation(ctx, req, opts...) @@ -586,10 +641,10 @@ type catalogGRPCClient struct { // The returned client must be Closed when it is done being used to clean up its underlying connections. // // The primary resources offered by this service are EntryGroups, EntryTypes, -// AspectTypes, Entry and Aspect which collectively allow a data administrator -// to organize, manage, secure and catalog data across their organization -// located across cloud projects in a variety of storage systems including Cloud -// Storage and BigQuery. +// AspectTypes, and Entries. They collectively let data administrators organize, +// manage, secure, and catalog data located across cloud projects in their +// organization in a variety of storage systems, including Cloud Storage and +// BigQuery. func NewCatalogClient(ctx context.Context, opts ...option.ClientOption) (*CatalogClient, error) { clientOpts := defaultCatalogGRPCClientOptions() if newCatalogClientHook != nil { @@ -1210,6 +1265,104 @@ func (c *catalogGRPCClient) SearchEntries(ctx context.Context, req *dataplexpb.S return it } +func (c *catalogGRPCClient) CreateMetadataJob(ctx context.Context, req *dataplexpb.CreateMetadataJobRequest, opts ...gax.CallOption) (*CreateMetadataJobOperation, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CreateMetadataJob[0:len((*c.CallOptions).CreateMetadataJob):len((*c.CallOptions).CreateMetadataJob)], opts...) + var resp *longrunningpb.Operation + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.catalogClient.CreateMetadataJob(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return &CreateMetadataJobOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, resp), + }, nil +} + +func (c *catalogGRPCClient) GetMetadataJob(ctx context.Context, req *dataplexpb.GetMetadataJobRequest, opts ...gax.CallOption) (*dataplexpb.MetadataJob, error) { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).GetMetadataJob[0:len((*c.CallOptions).GetMetadataJob):len((*c.CallOptions).GetMetadataJob)], opts...) + var resp *dataplexpb.MetadataJob + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.catalogClient.GetMetadataJob(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *catalogGRPCClient) ListMetadataJobs(ctx context.Context, req *dataplexpb.ListMetadataJobsRequest, opts ...gax.CallOption) *MetadataJobIterator { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).ListMetadataJobs[0:len((*c.CallOptions).ListMetadataJobs):len((*c.CallOptions).ListMetadataJobs)], opts...) + it := &MetadataJobIterator{} + req = proto.Clone(req).(*dataplexpb.ListMetadataJobsRequest) + it.InternalFetch = func(pageSize int, pageToken string) ([]*dataplexpb.MetadataJob, string, error) { + resp := &dataplexpb.ListMetadataJobsResponse{} + if pageToken != "" { + req.PageToken = pageToken + } + if pageSize > math.MaxInt32 { + req.PageSize = math.MaxInt32 + } else if pageSize != 0 { + req.PageSize = int32(pageSize) + } + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + resp, err = c.catalogClient.ListMetadataJobs(ctx, req, settings.GRPC...) + return err + }, opts...) + if err != nil { + return nil, "", err + } + + it.Response = resp + return resp.GetMetadataJobs(), resp.GetNextPageToken(), nil + } + fetch := func(pageSize int, pageToken string) (string, error) { + items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) + if err != nil { + return "", err + } + it.items = append(it.items, items...) + return nextPageToken, nil + } + + it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) + it.pageInfo.MaxSize = int(req.GetPageSize()) + it.pageInfo.Token = req.GetPageToken() + + return it +} + +func (c *catalogGRPCClient) CancelMetadataJob(ctx context.Context, req *dataplexpb.CancelMetadataJobRequest, opts ...gax.CallOption) error { + hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} + + hds = append(c.xGoogHeaders, hds...) + ctx = gax.InsertMetadataIntoOutgoingContext(ctx, hds...) + opts = append((*c.CallOptions).CancelMetadataJob[0:len((*c.CallOptions).CancelMetadataJob):len((*c.CallOptions).CancelMetadataJob)], opts...) + err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { + var err error + _, err = c.catalogClient.CancelMetadataJob(ctx, req, settings.GRPC...) + return err + }, opts...) + return err +} + func (c *catalogGRPCClient) GetLocation(ctx context.Context, req *locationpb.GetLocationRequest, opts ...gax.CallOption) (*locationpb.Location, error) { hds := []string{"x-goog-request-params", fmt.Sprintf("%s=%v", "name", url.QueryEscape(req.GetName()))} @@ -1390,6 +1543,14 @@ func (c *catalogGRPCClient) CreateEntryTypeOperation(name string) *CreateEntryTy } } +// CreateMetadataJobOperation returns a new CreateMetadataJobOperation from a given name. +// The name must be that of a previously created CreateMetadataJobOperation, possibly from a different process. +func (c *catalogGRPCClient) CreateMetadataJobOperation(name string) *CreateMetadataJobOperation { + return &CreateMetadataJobOperation{ + lro: longrunning.InternalNewOperation(*c.LROClient, &longrunningpb.Operation{Name: name}), + } +} + // DeleteAspectTypeOperation returns a new DeleteAspectTypeOperation from a given name. // The name must be that of a previously created DeleteAspectTypeOperation, possibly from a different process. func (c *catalogGRPCClient) DeleteAspectTypeOperation(name string) *DeleteAspectTypeOperation { diff --git a/dataplex/apiv1/catalog_client_example_go123_test.go b/dataplex/apiv1/catalog_client_example_go123_test.go index 4791af2aa2da..2808a89d0121 100644 --- a/dataplex/apiv1/catalog_client_example_go123_test.go +++ b/dataplex/apiv1/catalog_client_example_go123_test.go @@ -131,6 +131,32 @@ func ExampleCatalogClient_ListEntryTypes_all() { } } +func ExampleCatalogClient_ListMetadataJobs_all() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := dataplex.NewCatalogClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &dataplexpb.ListMetadataJobsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/dataplex/apiv1/dataplexpb#ListMetadataJobsRequest. + } + for resp, err := range c.ListMetadataJobs(ctx, req).All() { + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + } +} + func ExampleCatalogClient_SearchEntries_all() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. diff --git a/dataplex/apiv1/catalog_client_example_test.go b/dataplex/apiv1/catalog_client_example_test.go index 786439bc8176..c248292c4dbd 100644 --- a/dataplex/apiv1/catalog_client_example_test.go +++ b/dataplex/apiv1/catalog_client_example_test.go @@ -43,6 +43,29 @@ func ExampleNewCatalogClient() { _ = c } +func ExampleCatalogClient_CancelMetadataJob() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := dataplex.NewCatalogClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &dataplexpb.CancelMetadataJobRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/dataplex/apiv1/dataplexpb#CancelMetadataJobRequest. + } + err = c.CancelMetadataJob(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + func ExampleCatalogClient_CreateAspectType() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. @@ -158,6 +181,36 @@ func ExampleCatalogClient_CreateEntryType() { _ = resp } +func ExampleCatalogClient_CreateMetadataJob() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := dataplex.NewCatalogClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &dataplexpb.CreateMetadataJobRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/dataplex/apiv1/dataplexpb#CreateMetadataJobRequest. + } + op, err := c.CreateMetadataJob(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + func ExampleCatalogClient_DeleteAspectType() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. @@ -367,6 +420,31 @@ func ExampleCatalogClient_GetEntryType() { _ = resp } +func ExampleCatalogClient_GetMetadataJob() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := dataplex.NewCatalogClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &dataplexpb.GetMetadataJobRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/dataplex/apiv1/dataplexpb#GetMetadataJobRequest. + } + resp, err := c.GetMetadataJob(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + func ExampleCatalogClient_ListAspectTypes() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. @@ -515,6 +593,43 @@ func ExampleCatalogClient_ListEntryTypes() { } } +func ExampleCatalogClient_ListMetadataJobs() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := dataplex.NewCatalogClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &dataplexpb.ListMetadataJobsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/dataplex/apiv1/dataplexpb#ListMetadataJobsRequest. + } + it := c.ListMetadataJobs(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*dataplexpb.ListMetadataJobsResponse) + } +} + func ExampleCatalogClient_LookupEntry() { ctx := context.Background() // This snippet has been automatically generated and should be regarded as a code template only. diff --git a/dataplex/apiv1/dataplexpb/catalog.pb.go b/dataplex/apiv1/dataplexpb/catalog.pb.go index bc4bd7250051..f66db48c0aca 100755 --- a/dataplex/apiv1/dataplexpb/catalog.pb.go +++ b/dataplex/apiv1/dataplexpb/catalog.pb.go @@ -32,7 +32,7 @@ import ( status "google.golang.org/grpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - _ "google.golang.org/protobuf/types/known/emptypb" + emptypb "google.golang.org/protobuf/types/known/emptypb" fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" structpb "google.golang.org/protobuf/types/known/structpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" @@ -57,9 +57,9 @@ const ( // aspects. EntryView_FULL EntryView = 2 // Returns aspects matching custom fields in GetEntryRequest. If the number of - // aspects would exceed 100, the first 100 will be returned. + // aspects exceeds 100, the first 100 will be returned. EntryView_CUSTOM EntryView = 3 - // Returns all aspects. If the number of aspects would exceed 100, the first + // Returns all aspects. If the number of aspects exceeds 100, the first // 100 will be returned. EntryView_ALL EntryView = 4 ) @@ -167,8 +167,252 @@ func (TransferStatus) EnumDescriptor() ([]byte, []int) { return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{1} } -// Aspect Type is a template for creating Aspects, and represents the -// JSON-schema for a given Entry, e.g., BigQuery Table Schema. +// Metadata job type. +type MetadataJob_Type int32 + +const ( + // Unspecified. + MetadataJob_TYPE_UNSPECIFIED MetadataJob_Type = 0 + // Import job. + MetadataJob_IMPORT MetadataJob_Type = 1 +) + +// Enum value maps for MetadataJob_Type. +var ( + MetadataJob_Type_name = map[int32]string{ + 0: "TYPE_UNSPECIFIED", + 1: "IMPORT", + } + MetadataJob_Type_value = map[string]int32{ + "TYPE_UNSPECIFIED": 0, + "IMPORT": 1, + } +) + +func (x MetadataJob_Type) Enum() *MetadataJob_Type { + p := new(MetadataJob_Type) + *p = x + return p +} + +func (x MetadataJob_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MetadataJob_Type) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_dataplex_v1_catalog_proto_enumTypes[2].Descriptor() +} + +func (MetadataJob_Type) Type() protoreflect.EnumType { + return &file_google_cloud_dataplex_v1_catalog_proto_enumTypes[2] +} + +func (x MetadataJob_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MetadataJob_Type.Descriptor instead. +func (MetadataJob_Type) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{41, 0} +} + +// Specifies how the entries and aspects in a metadata job are updated. +type MetadataJob_ImportJobSpec_SyncMode int32 + +const ( + // Sync mode unspecified. + MetadataJob_ImportJobSpec_SYNC_MODE_UNSPECIFIED MetadataJob_ImportJobSpec_SyncMode = 0 + // All resources in the job's scope are modified. If a resource exists in + // Dataplex but isn't included in the metadata import file, the resource + // is deleted when you run the metadata job. Use this mode to perform a + // full sync of the set of entries in the job scope. + MetadataJob_ImportJobSpec_FULL MetadataJob_ImportJobSpec_SyncMode = 1 + // Only the entries and aspects that are explicitly included in the + // metadata import file are modified. Use this mode to modify a subset of + // resources while leaving unreferenced resources unchanged. + MetadataJob_ImportJobSpec_INCREMENTAL MetadataJob_ImportJobSpec_SyncMode = 2 +) + +// Enum value maps for MetadataJob_ImportJobSpec_SyncMode. +var ( + MetadataJob_ImportJobSpec_SyncMode_name = map[int32]string{ + 0: "SYNC_MODE_UNSPECIFIED", + 1: "FULL", + 2: "INCREMENTAL", + } + MetadataJob_ImportJobSpec_SyncMode_value = map[string]int32{ + "SYNC_MODE_UNSPECIFIED": 0, + "FULL": 1, + "INCREMENTAL": 2, + } +) + +func (x MetadataJob_ImportJobSpec_SyncMode) Enum() *MetadataJob_ImportJobSpec_SyncMode { + p := new(MetadataJob_ImportJobSpec_SyncMode) + *p = x + return p +} + +func (x MetadataJob_ImportJobSpec_SyncMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MetadataJob_ImportJobSpec_SyncMode) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_dataplex_v1_catalog_proto_enumTypes[3].Descriptor() +} + +func (MetadataJob_ImportJobSpec_SyncMode) Type() protoreflect.EnumType { + return &file_google_cloud_dataplex_v1_catalog_proto_enumTypes[3] +} + +func (x MetadataJob_ImportJobSpec_SyncMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MetadataJob_ImportJobSpec_SyncMode.Descriptor instead. +func (MetadataJob_ImportJobSpec_SyncMode) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{41, 1, 0} +} + +// The level of logs to write to Cloud Logging for this job. +type MetadataJob_ImportJobSpec_LogLevel int32 + +const ( + // Log level unspecified. + MetadataJob_ImportJobSpec_LOG_LEVEL_UNSPECIFIED MetadataJob_ImportJobSpec_LogLevel = 0 + // Debug-level logging. Captures detailed logs for each import item. Use + // debug-level logging to troubleshoot issues with specific import items. + // For example, use debug-level logging to identify resources that are + // missing from the job scope, entries or aspects that don't conform to + // the associated entry type or aspect type, or other misconfigurations + // with the metadata import file. + // + // Depending on the size of your metadata job and the number of logs that + // are generated, debug-level logging might incur + // [additional costs](https://cloud.google.com/stackdriver/pricing). + MetadataJob_ImportJobSpec_DEBUG MetadataJob_ImportJobSpec_LogLevel = 1 + // Info-level logging. Captures logs at the overall job level. Includes + // aggregate logs about import items, but doesn't specify which import + // item has an error. + MetadataJob_ImportJobSpec_INFO MetadataJob_ImportJobSpec_LogLevel = 2 +) + +// Enum value maps for MetadataJob_ImportJobSpec_LogLevel. +var ( + MetadataJob_ImportJobSpec_LogLevel_name = map[int32]string{ + 0: "LOG_LEVEL_UNSPECIFIED", + 1: "DEBUG", + 2: "INFO", + } + MetadataJob_ImportJobSpec_LogLevel_value = map[string]int32{ + "LOG_LEVEL_UNSPECIFIED": 0, + "DEBUG": 1, + "INFO": 2, + } +) + +func (x MetadataJob_ImportJobSpec_LogLevel) Enum() *MetadataJob_ImportJobSpec_LogLevel { + p := new(MetadataJob_ImportJobSpec_LogLevel) + *p = x + return p +} + +func (x MetadataJob_ImportJobSpec_LogLevel) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MetadataJob_ImportJobSpec_LogLevel) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_dataplex_v1_catalog_proto_enumTypes[4].Descriptor() +} + +func (MetadataJob_ImportJobSpec_LogLevel) Type() protoreflect.EnumType { + return &file_google_cloud_dataplex_v1_catalog_proto_enumTypes[4] +} + +func (x MetadataJob_ImportJobSpec_LogLevel) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MetadataJob_ImportJobSpec_LogLevel.Descriptor instead. +func (MetadataJob_ImportJobSpec_LogLevel) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{41, 1, 1} +} + +// State of a metadata job. +type MetadataJob_Status_State int32 + +const ( + // State unspecified. + MetadataJob_Status_STATE_UNSPECIFIED MetadataJob_Status_State = 0 + // The job is queued. + MetadataJob_Status_QUEUED MetadataJob_Status_State = 1 + // The job is running. + MetadataJob_Status_RUNNING MetadataJob_Status_State = 2 + // The job is being canceled. + MetadataJob_Status_CANCELING MetadataJob_Status_State = 3 + // The job is canceled. + MetadataJob_Status_CANCELED MetadataJob_Status_State = 4 + // The job succeeded. + MetadataJob_Status_SUCCEEDED MetadataJob_Status_State = 5 + // The job failed. + MetadataJob_Status_FAILED MetadataJob_Status_State = 6 + // The job completed with some errors. + MetadataJob_Status_SUCCEEDED_WITH_ERRORS MetadataJob_Status_State = 7 +) + +// Enum value maps for MetadataJob_Status_State. +var ( + MetadataJob_Status_State_name = map[int32]string{ + 0: "STATE_UNSPECIFIED", + 1: "QUEUED", + 2: "RUNNING", + 3: "CANCELING", + 4: "CANCELED", + 5: "SUCCEEDED", + 6: "FAILED", + 7: "SUCCEEDED_WITH_ERRORS", + } + MetadataJob_Status_State_value = map[string]int32{ + "STATE_UNSPECIFIED": 0, + "QUEUED": 1, + "RUNNING": 2, + "CANCELING": 3, + "CANCELED": 4, + "SUCCEEDED": 5, + "FAILED": 6, + "SUCCEEDED_WITH_ERRORS": 7, + } +) + +func (x MetadataJob_Status_State) Enum() *MetadataJob_Status_State { + p := new(MetadataJob_Status_State) + *p = x + return p +} + +func (x MetadataJob_Status_State) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MetadataJob_Status_State) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_dataplex_v1_catalog_proto_enumTypes[5].Descriptor() +} + +func (MetadataJob_Status_State) Type() protoreflect.EnumType { + return &file_google_cloud_dataplex_v1_catalog_proto_enumTypes[5] +} + +func (x MetadataJob_Status_State) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MetadataJob_Status_State.Descriptor instead. +func (MetadataJob_Status_State) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{41, 2, 0} +} + +// AspectType is a template for creating Aspects, and represents the +// JSON-schema for a given Entry, for example, BigQuery Table Schema. type AspectType struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -177,9 +421,9 @@ type AspectType struct { // Output only. The relative resource name of the AspectType, of the form: // projects/{project_number}/locations/{location_id}/aspectTypes/{aspect_type_id}. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Output only. System generated globally unique ID for the AspectType. This - // ID will be different if the AspectType is deleted and re-created with the - // same name. + // Output only. System generated globally unique ID for the AspectType. + // If you delete and recreate the AspectType with the same name, then this ID + // will be different. Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"` // Output only. The time when the AspectType was created. CreateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` @@ -191,11 +435,10 @@ type AspectType struct { DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` // Optional. User-defined labels for the AspectType. Labels map[string]string `protobuf:"bytes,7,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // This checksum is computed by the server based on the value of other - // fields, and may be sent on update and delete requests to ensure the - // client has an up-to-date value before proceeding. + // The service computes this checksum. The client may send it on update and + // delete requests to ensure it has an up-to-date value before proceeding. Etag string `protobuf:"bytes,8,opt,name=etag,proto3" json:"etag,omitempty"` - // Immutable. Authorization defined for this type. + // Immutable. Defines the Authorization for this type. Authorization *AspectType_Authorization `protobuf:"bytes,52,opt,name=authorization,proto3" json:"authorization,omitempty"` // Required. MetadataTemplate of the aspect. MetadataTemplate *AspectType_MetadataTemplate `protobuf:"bytes,53,opt,name=metadata_template,json=metadataTemplate,proto3" json:"metadata_template,omitempty"` @@ -319,12 +562,12 @@ type EntryGroup struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Output only. The relative resource name of the EntryGroup, of the form: - // projects/{project_number}/locations/{location_id}/entryGroups/{entry_group_id}. + // Output only. The relative resource name of the EntryGroup, in the format + // projects/{project_id_or_number}/locations/{location_id}/entryGroups/{entry_group_id}. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Output only. System generated globally unique ID for the EntryGroup. This - // ID will be different if the EntryGroup is deleted and re-created with the - // same name. + // Output only. System generated globally unique ID for the EntryGroup. If you + // delete and recreate the EntryGroup with the same name, this ID will be + // different. Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"` // Output only. The time when the EntryGroup was created. CreateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` @@ -336,9 +579,9 @@ type EntryGroup struct { DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` // Optional. User-defined labels for the EntryGroup. Labels map[string]string `protobuf:"bytes,7,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // This checksum is computed by the server based on the value of other - // fields, and may be sent on update and delete requests to ensure the - // client has an up-to-date value before proceeding. + // This checksum is computed by the service, and might be sent on update and + // delete requests to ensure the client has an up-to-date value before + // proceeding. Etag string `protobuf:"bytes,8,opt,name=etag,proto3" json:"etag,omitempty"` // Output only. Denotes the transfer status of the Entry Group. It is // unspecified for Entry Group created from Dataplex API. @@ -463,11 +706,11 @@ type EntryType struct { DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` // Optional. User-defined labels for the EntryType. Labels map[string]string `protobuf:"bytes,7,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // Optional. This checksum is computed by the server based on the value of - // other fields, and may be sent on update and delete requests to ensure the - // client has an up-to-date value before proceeding. + // Optional. This checksum is computed by the service, and might be sent on + // update and delete requests to ensure the client has an up-to-date value + // before proceeding. Etag string `protobuf:"bytes,8,opt,name=etag,proto3" json:"etag,omitempty"` - // Optional. Indicates the class this Entry Type belongs to, for example, + // Optional. Indicates the classes this Entry Type belongs to, for example, // TABLE, DATABASE, MODEL. TypeAliases []string `protobuf:"bytes,9,rep,name=type_aliases,json=typeAliases,proto3" json:"type_aliases,omitempty"` // Optional. The platform that Entries of this type belongs to. @@ -619,10 +862,10 @@ type Aspect struct { // Output only. The time when the Aspect was last updated. UpdateTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` // Required. The content of the aspect, according to its aspect type schema. - // This will replace `content`. // The maximum size of the field is 120KB (encoded as UTF-8). - Data *structpb.Struct `protobuf:"bytes,8,opt,name=data,proto3" json:"data,omitempty"` - AspectSource *AspectSource `protobuf:"bytes,9,opt,name=aspect_source,json=aspectSource,proto3" json:"aspect_source,omitempty"` + Data *structpb.Struct `protobuf:"bytes,8,opt,name=data,proto3" json:"data,omitempty"` + // Optional. Information related to the source system of the aspect. + AspectSource *AspectSource `protobuf:"bytes,9,opt,name=aspect_source,json=aspectSource,proto3" json:"aspect_source,omitempty"` } func (x *Aspect) Reset() { @@ -699,17 +942,20 @@ func (x *Aspect) GetAspectSource() *AspectSource { return nil } -// AspectSource contains source system related information for the -// aspect. +// Information related to the source system of the aspect. type AspectSource struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The create time of the aspect in the source system. + // The time the aspect was created in the source system. CreateTime *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` - // The update time of the aspect in the source system. + // The time the aspect was last updated in the source system. UpdateTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + // The version of the data format used to produce this data. This field is + // used to indicated when the underlying data format changes (e.g., schema + // modifications, changes to the source URL format definition, etc). + DataVersion string `protobuf:"bytes,12,opt,name=data_version,json=dataVersion,proto3" json:"data_version,omitempty"` } func (x *AspectSource) Reset() { @@ -758,36 +1004,49 @@ func (x *AspectSource) GetUpdateTime() *timestamppb.Timestamp { return nil } -// An entry is a representation of a data asset which can be described by +func (x *AspectSource) GetDataVersion() string { + if x != nil { + return x.DataVersion + } + return "" +} + +// An entry is a representation of a data resource that can be described by // various metadata. type Entry struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Identifier. The relative resource name of the Entry, of the form: - // projects/{project}/locations/{location}/entryGroups/{entry_group}/entries/{entry}. + // Identifier. The relative resource name of the entry, in the format + // `projects/{project_id_or_number}/locations/{location_id}/entryGroups/{entry_group_id}/entries/{entry_id}`. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Required. Immutable. The resource name of the EntryType used to create this - // Entry. + // Required. Immutable. The relative resource name of the entry type that was + // used to create this entry, in the format + // `projects/{project_id_or_number}/locations/{location_id}/entryTypes/{entry_type_id}`. EntryType string `protobuf:"bytes,4,opt,name=entry_type,json=entryType,proto3" json:"entry_type,omitempty"` - // Output only. The time when the Entry was created. + // Output only. The time when the entry was created in Dataplex. CreateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` - // Output only. The time when the Entry was last updated. + // Output only. The time when the entry was last updated in Dataplex. UpdateTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` - // Optional. The Aspects attached to the Entry. - // The format for the key can be one of the following: - // 1. {projectId}.{locationId}.{aspectTypeId} (if the aspect is attached - // directly to the entry) - // 2. {projectId}.{locationId}.{aspectTypeId}@{path} (if the aspect is - // attached to an entry's path) + // Optional. The aspects that are attached to the entry. Depending on how the + // aspect is attached to the entry, the format of the aspect key can be one of + // the following: + // + // * If the aspect is attached directly to the entry: + // `{project_id_or_number}.{location_id}.{aspect_type_id}` + // * If the aspect is attached to an entry's path: + // `{project_id_or_number}.{location_id}.{aspect_type_id}@{path}` Aspects map[string]*Aspect `protobuf:"bytes,9,rep,name=aspects,proto3" json:"aspects,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Optional. Immutable. The resource name of the parent entry. ParentEntry string `protobuf:"bytes,10,opt,name=parent_entry,json=parentEntry,proto3" json:"parent_entry,omitempty"` - // Optional. A name for the entry that can reference it in an external system. + // Optional. A name for the entry that can be referenced by an external + // system. For more information, see [Fully qualified + // names](https://cloud.google.com/data-catalog/docs/fully-qualified-names). // The maximum size of the field is 4000 characters. FullyQualifiedName string `protobuf:"bytes,12,opt,name=fully_qualified_name,json=fullyQualifiedName,proto3" json:"fully_qualified_name,omitempty"` - // Optional. Source system related information for an entry. + // Optional. Information related to the source system of the data resource + // that is represented by the entry. EntrySource *EntrySource `protobuf:"bytes,15,opt,name=entry_source,json=entrySource,proto3" json:"entry_source,omitempty"` } @@ -879,41 +1138,45 @@ func (x *Entry) GetEntrySource() *EntrySource { return nil } -// EntrySource contains source system related information for the -// entry. +// Information related to the source system of the data resource that is +// represented by the entry. type EntrySource struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The name of the resource in the source system. - // The maximum size of the field is 4000 characters. + // Maximum length is 4,000 characters. Resource string `protobuf:"bytes,1,opt,name=resource,proto3" json:"resource,omitempty"` // The name of the source system. - // The maximum size of the field is 64 characters. + // Maximum length is 64 characters. System string `protobuf:"bytes,2,opt,name=system,proto3" json:"system,omitempty"` // The platform containing the source system. - // The maximum size of the field is 64 characters. + // Maximum length is 64 characters. Platform string `protobuf:"bytes,3,opt,name=platform,proto3" json:"platform,omitempty"` - // User friendly display name. - // The maximum size of the field is 500 characters. + // A user-friendly display name. + // Maximum length is 500 characters. DisplayName string `protobuf:"bytes,5,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - // Description of the Entry. - // The maximum size of the field is 2000 characters. + // A description of the data resource. + // Maximum length is 2,000 characters. Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"` // User-defined labels. // The maximum size of keys and values is 128 characters each. Labels map[string]string `protobuf:"bytes,7,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // Immutable. The ancestors of the Entry in the source system. + // Immutable. The entries representing the ancestors of the data resource in + // the source system. Ancestors []*EntrySource_Ancestor `protobuf:"bytes,9,rep,name=ancestors,proto3" json:"ancestors,omitempty"` - // The create time of the resource in the source system. + // The time when the resource was created in the source system. CreateTime *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` - // The update time of the resource in the source system. + // The time when the resource was last updated in the source system. If the + // entry exists in the system and its `EntrySource` has `update_time` + // populated, further updates to the `EntrySource` of the entry must provide + // incremental updates to its `update_time`. UpdateTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` - // Output only. Location of the resource in the source system. Entry will be - // searchable by this location. By default, this should match the location of - // the EntryGroup containing this entry. A different value allows capturing - // source location for data external to GCP. + // Output only. Location of the resource in the source system. You can search + // the entry by this location. By default, this should match the location of + // the entry group containing this entry. A different value allows capturing + // the source location for data external to Google Cloud. Location string `protobuf:"bytes,12,opt,name=location,proto3" json:"location,omitempty"` } @@ -1019,7 +1282,7 @@ func (x *EntrySource) GetLocation() string { return "" } -// Create EntryGroup Request +// Create EntryGroup Request. type CreateEntryGroupRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1031,10 +1294,10 @@ type CreateEntryGroupRequest struct { Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Required. EntryGroup identifier. EntryGroupId string `protobuf:"bytes,2,opt,name=entry_group_id,json=entryGroupId,proto3" json:"entry_group_id,omitempty"` - // Required. EntryGroup Resource + // Required. EntryGroup Resource. EntryGroup *EntryGroup `protobuf:"bytes,3,opt,name=entry_group,json=entryGroup,proto3" json:"entry_group,omitempty"` - // Optional. Only validate the request, but do not perform mutations. - // The default is false. + // Optional. The service validates the request without performing any + // mutations. The default is false. ValidateOnly bool `protobuf:"varint,4,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"` } @@ -1098,18 +1361,18 @@ func (x *CreateEntryGroupRequest) GetValidateOnly() bool { return false } -// Update EntryGroup Request +// Update EntryGroup Request. type UpdateEntryGroupRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. EntryGroup Resource + // Required. EntryGroup Resource. EntryGroup *EntryGroup `protobuf:"bytes,1,opt,name=entry_group,json=entryGroup,proto3" json:"entry_group,omitempty"` // Required. Mask of fields to update. UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` - // Optional. Only validate the request, but do not perform mutations. - // The default is false. + // Optional. The service validates the request, without performing any + // mutations. The default is false. ValidateOnly bool `protobuf:"varint,3,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"` } @@ -1166,7 +1429,7 @@ func (x *UpdateEntryGroupRequest) GetValidateOnly() bool { return false } -// Delele EntryGroup Request +// Delete EntryGroup Request. type DeleteEntryGroupRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1176,7 +1439,8 @@ type DeleteEntryGroupRequest struct { // `projects/{project_number}/locations/{location_id}/entryGroups/{entry_group_id}`. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Optional. If the client provided etag value does not match the current etag - // value, the DeleteEntryGroupRequest method returns an ABORTED error response + // value, the DeleteEntryGroupRequest method returns an ABORTED error + // response. Etag string `protobuf:"bytes,2,opt,name=etag,proto3" json:"etag,omitempty"` } @@ -1234,17 +1498,17 @@ type ListEntryGroupsRequest struct { // Required. The resource name of the entryGroup location, of the form: // `projects/{project_number}/locations/{location_id}` - // where `location_id` refers to a GCP region. + // where `location_id` refers to a Google Cloud region. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Optional. Maximum number of EntryGroups to return. The service may return - // fewer than this value. If unspecified, at most 10 EntryGroups will be - // returned. The maximum value is 1000; values above 1000 will be coerced to - // 1000. + // fewer than this value. If unspecified, the service returns at most 10 + // EntryGroups. The maximum value is 1000; values above 1000 will be coerced + // to 1000. PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Optional. Page token received from a previous `ListEntryGroups` call. // Provide this to retrieve the subsequent page. When paginating, all other - // parameters provided to `ListEntryGroups` must match the call that provided - // the page token. + // parameters you provide to `ListEntryGroups` must match the call that + // provided the page token. PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` // Optional. Filter request. Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` @@ -1319,18 +1583,18 @@ func (x *ListEntryGroupsRequest) GetOrderBy() string { return "" } -// List ListEntryGroups response. +// List entry groups response. type ListEntryGroupsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // ListEntryGroups under the given parent location. + // Entry groups under the given parent location. EntryGroups []*EntryGroup `protobuf:"bytes,1,rep,name=entry_groups,json=entryGroups,proto3" json:"entry_groups,omitempty"` // Token to retrieve the next page of results, or empty if there are no more // results in the list. NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` - // Locations that could not be reached. + // Locations that the service couldn't reach. UnreachableLocations []string `protobuf:"bytes,3,rep,name=unreachable_locations,json=unreachableLocations,proto3" json:"unreachable_locations,omitempty"` } @@ -1437,7 +1701,7 @@ func (x *GetEntryGroupRequest) GetName() string { return "" } -// Create EntryType Request +// Create EntryType Request. type CreateEntryTypeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1445,14 +1709,14 @@ type CreateEntryTypeRequest struct { // Required. The resource name of the EntryType, of the form: // projects/{project_number}/locations/{location_id} - // where `location_id` refers to a GCP region. + // where `location_id` refers to a Google Cloud region. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Required. EntryType identifier. EntryTypeId string `protobuf:"bytes,2,opt,name=entry_type_id,json=entryTypeId,proto3" json:"entry_type_id,omitempty"` - // Required. EntryType Resource + // Required. EntryType Resource. EntryType *EntryType `protobuf:"bytes,3,opt,name=entry_type,json=entryType,proto3" json:"entry_type,omitempty"` - // Optional. Only validate the request, but do not perform mutations. - // The default is false. + // Optional. The service validates the request without performing any + // mutations. The default is false. ValidateOnly bool `protobuf:"varint,4,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"` } @@ -1516,18 +1780,18 @@ func (x *CreateEntryTypeRequest) GetValidateOnly() bool { return false } -// Update EntryType Request +// Update EntryType Request. type UpdateEntryTypeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. EntryType Resource + // Required. EntryType Resource. EntryType *EntryType `protobuf:"bytes,1,opt,name=entry_type,json=entryType,proto3" json:"entry_type,omitempty"` // Required. Mask of fields to update. UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` - // Optional. Only validate the request, but do not perform mutations. - // The default is false. + // Optional. The service validates the request without performing any + // mutations. The default is false. ValidateOnly bool `protobuf:"varint,3,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"` } @@ -1584,7 +1848,7 @@ func (x *UpdateEntryTypeRequest) GetValidateOnly() bool { return false } -// Delele EntryType Request +// Delele EntryType Request. type DeleteEntryTypeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1594,7 +1858,7 @@ type DeleteEntryTypeRequest struct { // `projects/{project_number}/locations/{location_id}/entryTypes/{entry_type_id}`. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Optional. If the client provided etag value does not match the current etag - // value, the DeleteEntryTypeRequest method returns an ABORTED error response + // value, the DeleteEntryTypeRequest method returns an ABORTED error response. Etag string `protobuf:"bytes,2,opt,name=etag,proto3" json:"etag,omitempty"` } @@ -1652,27 +1916,28 @@ type ListEntryTypesRequest struct { // Required. The resource name of the EntryType location, of the form: // `projects/{project_number}/locations/{location_id}` - // where `location_id` refers to a GCP region. + // where `location_id` refers to a Google Cloud region. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Optional. Maximum number of EntryTypes to return. The service may return - // fewer than this value. If unspecified, at most 10 EntryTypes will be - // returned. The maximum value is 1000; values above 1000 will be coerced to + // fewer than this value. If unspecified, the service returns at most 10 + // EntryTypes. The maximum value is 1000; values above 1000 will be coerced to // 1000. PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Optional. Page token received from a previous `ListEntryTypes` call. // Provide this to retrieve the subsequent page. When paginating, all other - // parameters provided to `ListEntryTypes` must match the call that provided - // the page token. + // parameters you provided to `ListEntryTypes` must match the call that + // provided the page token. PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` // Optional. Filter request. Filters are case-sensitive. - // The following formats are supported: + // The service supports the following formats: // - // labels.key1 = "value1" - // labels:key1 - // name = "value" - // These restrictions can be coinjoined with AND, OR and NOT conjunctions. + // * labels.key1 = "value1" + // * labels:key1 + // * name = "value" + // + // These restrictions can be conjoined with AND, OR, and NOT conjunctions. Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` - // Optional. Order by fields (`name` or `create_time`) for the result. + // Optional. Orders the result by `name` or `create_time` fields. // If not specified, the ordering is undefined. OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` } @@ -1744,18 +2009,18 @@ func (x *ListEntryTypesRequest) GetOrderBy() string { return "" } -// List EntryTypes response +// List EntryTypes response. type ListEntryTypesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // ListEntryTypes under the given parent location. + // EntryTypes under the given parent location. EntryTypes []*EntryType `protobuf:"bytes,1,rep,name=entry_types,json=entryTypes,proto3" json:"entry_types,omitempty"` // Token to retrieve the next page of results, or empty if there are no more // results in the list. NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` - // Locations that could not be reached. + // Locations that the service couldn't reach. UnreachableLocations []string `protobuf:"bytes,3,rep,name=unreachable_locations,json=unreachableLocations,proto3" json:"unreachable_locations,omitempty"` } @@ -1812,7 +2077,7 @@ func (x *ListEntryTypesResponse) GetUnreachableLocations() []string { return nil } -// Get EntryType request +// Get EntryType request. type GetEntryTypeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1862,7 +2127,7 @@ func (x *GetEntryTypeRequest) GetName() string { return "" } -// Create AspectType Request +// Create AspectType Request. type CreateAspectTypeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1870,14 +2135,14 @@ type CreateAspectTypeRequest struct { // Required. The resource name of the AspectType, of the form: // projects/{project_number}/locations/{location_id} - // where `location_id` refers to a GCP region. + // where `location_id` refers to a Google Cloud region. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Required. AspectType identifier. AspectTypeId string `protobuf:"bytes,2,opt,name=aspect_type_id,json=aspectTypeId,proto3" json:"aspect_type_id,omitempty"` - // Required. AspectType Resource + // Required. AspectType Resource. AspectType *AspectType `protobuf:"bytes,3,opt,name=aspect_type,json=aspectType,proto3" json:"aspect_type,omitempty"` - // Optional. Only validate the request, but do not perform mutations. - // The default is false. + // Optional. The service validates the request without performing any + // mutations. The default is false. ValidateOnly bool `protobuf:"varint,4,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"` } @@ -2009,7 +2274,7 @@ func (x *UpdateAspectTypeRequest) GetValidateOnly() bool { return false } -// Delele AspectType Request +// Delele AspectType Request. type DeleteAspectTypeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2019,7 +2284,8 @@ type DeleteAspectTypeRequest struct { // `projects/{project_number}/locations/{location_id}/aspectTypes/{aspect_type_id}`. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Optional. If the client provided etag value does not match the current etag - // value, the DeleteAspectTypeRequest method returns an ABORTED error response + // value, the DeleteAspectTypeRequest method returns an ABORTED error + // response. Etag string `protobuf:"bytes,2,opt,name=etag,proto3" json:"etag,omitempty"` } @@ -2069,7 +2335,7 @@ func (x *DeleteAspectTypeRequest) GetEtag() string { return "" } -// List AspectTypes request +// List AspectTypes request. type ListAspectTypesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2077,27 +2343,28 @@ type ListAspectTypesRequest struct { // Required. The resource name of the AspectType location, of the form: // `projects/{project_number}/locations/{location_id}` - // where `location_id` refers to a GCP region. + // where `location_id` refers to a Google Cloud region. Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Optional. Maximum number of AspectTypes to return. The service may return - // fewer than this value. If unspecified, at most 10 AspectTypes will be - // returned. The maximum value is 1000; values above 1000 will be coerced to - // 1000. + // fewer than this value. If unspecified, the service returns at most 10 + // AspectTypes. The maximum value is 1000; values above 1000 will be coerced + // to 1000. PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Optional. Page token received from a previous `ListAspectTypes` call. // Provide this to retrieve the subsequent page. When paginating, all other - // parameters provided to `ListAspectTypes` must match the call that provided - // the page token. + // parameters you provide to `ListAspectTypes` must match the call that + // provided the page token. PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` // Optional. Filter request. Filters are case-sensitive. - // The following formats are supported: + // The service supports the following formats: + // + // * labels.key1 = "value1" + // * labels:key1 + // * name = "value" // - // labels.key1 = "value1" - // labels:key1 - // name = "value" - // These restrictions can be coinjoined with AND, OR and NOT conjunctions. + // These restrictions can be conjoined with AND, OR, and NOT conjunctions. Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` - // Optional. Order by fields (`name` or `create_time`) for the result. + // Optional. Orders the result by `name` or `create_time` fields. // If not specified, the ordering is undefined. OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` } @@ -2169,18 +2436,18 @@ func (x *ListAspectTypesRequest) GetOrderBy() string { return "" } -// List AspectTypes response +// List AspectTypes response. type ListAspectTypesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // ListAspectTypes under the given parent location. + // AspectTypes under the given parent location. AspectTypes []*AspectType `protobuf:"bytes,1,rep,name=aspect_types,json=aspectTypes,proto3" json:"aspect_types,omitempty"` // Token to retrieve the next page of results, or empty if there are no more // results in the list. NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` - // Locations that could not be reached. + // Locations that the service couldn't reach. UnreachableLocations []string `protobuf:"bytes,3,rep,name=unreachable_locations,json=unreachableLocations,proto3" json:"unreachable_locations,omitempty"` } @@ -2237,7 +2504,7 @@ func (x *ListAspectTypesResponse) GetUnreachableLocations() []string { return nil } -// Get AspectType request +// Get AspectType request. type GetAspectTypeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2287,6 +2554,7 @@ func (x *GetAspectTypeRequest) GetName() string { return "" } +// Create Entry request. type CreateEntryRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2297,20 +2565,21 @@ type CreateEntryRequest struct { Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` // Required. Entry identifier. It has to be unique within an Entry Group. // - // Entries corresponding to Google Cloud resources use Entry ID format based - // on Full Resource Names - // (https://cloud.google.com/apis/design/resource_names#full_resource_name). - // The format is a Full Resource Name of the resource without the - // prefix double slashes in the API Service Name part of Full Resource Name. - // This allows retrieval of entries using their associated resource name. + // Entries corresponding to Google Cloud resources use an Entry ID format + // based on [full resource + // names](https://cloud.google.com/apis/design/resource_names#full_resource_name). + // The format is a full resource name of the resource without the + // prefix double slashes in the API service name part of the full resource + // name. This allows retrieval of entries using their associated resource + // name. // - // For example if the Full Resource Name of a resource is + // For example, if the full resource name of a resource is // `//library.googleapis.com/shelves/shelf1/books/book2`, // then the suggested entry_id is // `library.googleapis.com/shelves/shelf1/books/book2`. // // It is also suggested to follow the same convention for entries - // corresponding to resources from other providers or systems than Google + // corresponding to resources from providers or systems other than Google // Cloud. // // The maximum size of the field is 4000 characters. @@ -2372,6 +2641,7 @@ func (x *CreateEntryRequest) GetEntry() *Entry { return nil } +// Update Entry request. type UpdateEntryRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2382,28 +2652,34 @@ type UpdateEntryRequest struct { // Optional. Mask of fields to update. To update Aspects, the update_mask must // contain the value "aspects". // - // If the update_mask is empty, all modifiable fields present in the request - // will be updated. + // If the update_mask is empty, the service will update all modifiable fields + // present in the request. UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` - // Optional. If set to true and the entry does not exist, it will be created. + // Optional. If set to true and the entry doesn't exist, the service will + // create it. AllowMissing bool `protobuf:"varint,3,opt,name=allow_missing,json=allowMissing,proto3" json:"allow_missing,omitempty"` - // Optional. If set to true and the aspect_keys specify aspect ranges, any - // existing aspects from that range not provided in the request will be - // deleted. + // Optional. If set to true and the aspect_keys specify aspect ranges, the + // service deletes any existing aspects from that range that weren't provided + // in the request. DeleteMissingAspects bool `protobuf:"varint,4,opt,name=delete_missing_aspects,json=deleteMissingAspects,proto3" json:"delete_missing_aspects,omitempty"` - // Optional. The map keys of the Aspects which should be modified. Supports - // the following syntaxes: - // * - matches aspect on given type and empty path - // * @path - matches aspect on given type and specified - // path - // * * - matches aspects on given type for all paths - // * *@path - matches aspects of all types on the given path + // Optional. The map keys of the Aspects which the service should modify. It + // supports the following syntaxes: + // + // * `` - matches an aspect of the given type and empty + // path. + // * `@path` - matches an aspect of the given type and + // specified path. For example, to attach an aspect to a field that is + // specified by the `schema` aspect, the path should have the format + // `Schema.`. + // * `*` - matches aspects of the given type for all + // paths. + // * `*@path` - matches aspects of all types on the given path. // - // Existing aspects matching the syntax will not be removed unless + // The service will not remove existing aspects matching the syntax unless // `delete_missing_aspects` is set to true. // - // If this field is left empty, it will be treated as specifying exactly those - // Aspects present in the request. + // If this field is left empty, the service treats it as specifying + // exactly those Aspects present in the request. AspectKeys []string `protobuf:"bytes,5,rep,name=aspect_keys,json=aspectKeys,proto3" json:"aspect_keys,omitempty"` } @@ -2474,6 +2750,7 @@ func (x *UpdateEntryRequest) GetAspectKeys() []string { return nil } +// Delete Entry request. type DeleteEntryRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2523,6 +2800,7 @@ func (x *DeleteEntryRequest) GetName() string { return "" } +// List Entries request. type ListEntriesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2530,26 +2808,36 @@ type ListEntriesRequest struct { // Required. The resource name of the parent Entry Group: // `projects/{project}/locations/{location}/entryGroups/{entry_group}`. - Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - // Optional. The pagination token returned by a previous request. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. Number of items to return per page. If there are remaining + // results, the service returns a next_page_token. If unspecified, the service + // returns at most 10 Entries. The maximum value is 100; values above 100 will + // be coerced to 100. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. Page token received from a previous `ListEntries` call. Provide + // this to retrieve the subsequent page. PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` - // Optional. A filter on the entries to return. - // Filters are case-sensitive. - // The request can be filtered by the following fields: - // entry_type, entry_source.display_name. - // The comparison operators are =, !=, <, >, <=, >= (strings are compared - // according to lexical order) - // The logical operators AND, OR, NOT can be used - // in the filter. Wildcard "*" can be used, but for entry_type the full - // project id or number needs to be provided. Example filter expressions: - // "entry_source.display_name=AnExampleDisplayName" - // "entry_type=projects/example-project/locations/global/entryTypes/example-entry_type" - // "entry_type=projects/example-project/locations/us/entryTypes/a* OR + // Optional. A filter on the entries to return. Filters are case-sensitive. + // You can filter the request by the following fields: + // + // * entry_type + // * entry_source.display_name + // + // The comparison operators are =, !=, <, >, <=, >=. The service compares + // strings according to lexical order. + // + // You can use the logical operators AND, OR, NOT in the filter. + // + // You can use Wildcard "*", but for entry_type you need to provide the + // full project id or number. // - // entry_type=projects/another-project/locations/*" + // Example filter expressions: // - // "NOT entry_source.display_name=AnotherExampleDisplayName" + // * "entry_source.display_name=AnExampleDisplayName" + // * "entry_type=projects/example-project/locations/global/entryTypes/example-entry_type" + // * "entry_type=projects/example-project/locations/us/entryTypes/a* OR + // entry_type=projects/another-project/locations/*" + // * "NOT entry_source.display_name=AnotherExampleDisplayName" Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` } @@ -2613,14 +2901,16 @@ func (x *ListEntriesRequest) GetFilter() string { return "" } +// List Entries response. type ListEntriesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The list of entries. + // The list of entries under the given parent location. Entries []*Entry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` - // Pagination token. + // Token to retrieve the next page of results, or empty if there are no more + // results in the list. NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } @@ -2670,6 +2960,7 @@ func (x *ListEntriesResponse) GetNextPageToken() string { return "" } +// Get Entry request. type GetEntryRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2678,13 +2969,14 @@ type GetEntryRequest struct { // Required. The resource name of the Entry: // `projects/{project}/locations/{location}/entryGroups/{entry_group}/entries/{entry}`. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Optional. View for controlling which parts of an entry are to be returned. + // Optional. View to control which parts of an entry the service should + // return. View EntryView `protobuf:"varint,2,opt,name=view,proto3,enum=google.cloud.dataplex.v1.EntryView" json:"view,omitempty"` // Optional. Limits the aspects returned to the provided aspect types. - // Only works if the CUSTOM view is selected. + // It only works for CUSTOM view. AspectTypes []string `protobuf:"bytes,3,rep,name=aspect_types,json=aspectTypes,proto3" json:"aspect_types,omitempty"` // Optional. Limits the aspects returned to those associated with the provided - // paths within the Entry. Only works if the CUSTOM view is selected. + // paths within the Entry. It only works for CUSTOM view. Paths []string `protobuf:"bytes,4,rep,name=paths,proto3" json:"paths,omitempty"` } @@ -2748,6 +3040,7 @@ func (x *GetEntryRequest) GetPaths() []string { return nil } +// Lookup Entry request using permissions in the source system. type LookupEntryRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2756,13 +3049,14 @@ type LookupEntryRequest struct { // Required. The project to which the request should be attributed in the // following form: `projects/{project}/locations/{location}`. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Optional. View for controlling which parts of an entry are to be returned. + // Optional. View to control which parts of an entry the service should + // return. View EntryView `protobuf:"varint,2,opt,name=view,proto3,enum=google.cloud.dataplex.v1.EntryView" json:"view,omitempty"` // Optional. Limits the aspects returned to the provided aspect types. - // Only works if the CUSTOM view is selected. + // It only works for CUSTOM view. AspectTypes []string `protobuf:"bytes,3,rep,name=aspect_types,json=aspectTypes,proto3" json:"aspect_types,omitempty"` // Optional. Limits the aspects returned to those associated with the provided - // paths within the Entry. Only works if the CUSTOM view is selected. + // paths within the Entry. It only works for CUSTOM view. Paths []string `protobuf:"bytes,4,rep,name=paths,proto3" json:"paths,omitempty"` // Required. The resource name of the Entry: // `projects/{project}/locations/{location}/entryGroups/{entry_group}/entries/{entry}`. @@ -2846,15 +3140,19 @@ type SearchEntriesRequest struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Required. The query against which entries in scope should be matched. Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` - // Optional. Pagination. - PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. Number of results in the search page. If <=0, then defaults + // to 10. Max limit for page_size is 1000. Throws an invalid argument for + // page_size > 1000. + PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. Page token received from a previous `SearchEntries` call. Provide + // this to retrieve the subsequent page. PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` - // Optional. Ordering of the results. Supported options to be added later. + // Optional. Specifies the ordering of results. OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` - // Optional. The scope under which the search should be operating. Should - // either be organizations/ or projects/. If left - // unspecified, it will default to the organization where the project provided - // in `name` is located. + // Optional. The scope under which the search should be operating. It must + // either be `organizations/` or `projects/`. If it is + // unspecified, it defaults to the organization where the project provided in + // `name` is located. Scope string `protobuf:"bytes,7,opt,name=scope,proto3" json:"scope,omitempty"` } @@ -3011,13 +3309,14 @@ type SearchEntriesResponse struct { // The results matching the search query. Results []*SearchEntriesResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` - // The estimated total number of matching entries. Not guaranteed to be - // accurate. + // The estimated total number of matching entries. This number isn't + // guaranteed to be accurate. TotalSize int32 `protobuf:"varint,2,opt,name=total_size,json=totalSize,proto3" json:"total_size,omitempty"` - // Pagination token. + // Token to retrieve the next page of results, or empty if there are no more + // results in the list. NextPageToken string `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` - // Unreachable locations. Search results don't include data from those - // locations. + // Locations that the service couldn't reach. Search results don't include + // data from these locations. Unreachable []string `protobuf:"bytes,4,rep,name=unreachable,proto3" json:"unreachable,omitempty"` } @@ -3081,20 +3380,62 @@ func (x *SearchEntriesResponse) GetUnreachable() []string { return nil } -// Autorization for an Aspect Type. -type AspectType_Authorization struct { +// An object that describes the values that you want to set for an entry and its +// attached aspects when you import metadata. Used when you run a metadata +// import job. See +// [CreateMetadataJob][google.cloud.dataplex.v1.CatalogService.CreateMetadataJob]. +// +// You provide a collection of import items in a metadata import file. For more +// information about how to create a metadata import file, see [Metadata import +// file](https://cloud.google.com/dataplex/docs/import-metadata#metadata-import-file). +type ImportItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Immutable. The IAM permission grantable on the Entry Group to allow - // access to instantiate Aspects of Dataplex owned Aspect Types, only - // settable for Dataplex owned Types. - AlternateUsePermission string `protobuf:"bytes,1,opt,name=alternate_use_permission,json=alternateUsePermission,proto3" json:"alternate_use_permission,omitempty"` + // Information about an entry and its attached aspects. + Entry *Entry `protobuf:"bytes,1,opt,name=entry,proto3" json:"entry,omitempty"` + // The fields to update, in paths that are relative to the `Entry` resource. + // Separate each field with a comma. + // + // In `FULL` entry sync mode, Dataplex includes the paths of all of the fields + // for an entry that can be modified, including aspects. This means that + // Dataplex replaces the existing entry with the entry in the metadata import + // file. All modifiable fields are updated, regardless of the fields that are + // listed in the update mask, and regardless of whether a field is present + // in the `entry` object. + // + // The `update_mask` field is ignored when an entry is created or re-created. + // + // Dataplex also determines which entries and aspects to modify by comparing + // the values and timestamps that you provide in the metadata import file with + // the values and timestamps that exist in your project. For more information, + // see [Comparison + // logic](https://cloud.google.com/dataplex/docs/import-metadata#data-modification-logic). + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` + // The aspects to modify. Supports the following syntaxes: + // + // * `{aspect_type_reference}`: matches aspects that belong to the specified + // aspect type and are attached directly to the entry. + // * `{aspect_type_reference}@{path}`: matches aspects that belong to the + // specified aspect type and path. + // * `{aspect_type_reference}@*`: matches aspects that belong to the specified + // aspect type for all paths. + // + // Replace `{aspect_type_reference}` with a reference to the aspect type, in + // the format + // `{project_id_or_number}.{location_id}.{aspect_type_id}`. + // + // If you leave this field empty, it is treated as specifying exactly those + // aspects that are present within the specified entry. + // + // In `FULL` entry sync mode, Dataplex implicitly adds the keys for all of the + // required aspects of an entry. + AspectKeys []string `protobuf:"bytes,3,rep,name=aspect_keys,json=aspectKeys,proto3" json:"aspect_keys,omitempty"` } -func (x *AspectType_Authorization) Reset() { - *x = AspectType_Authorization{} +func (x *ImportItem) Reset() { + *x = ImportItem{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3102,13 +3443,13 @@ func (x *AspectType_Authorization) Reset() { } } -func (x *AspectType_Authorization) String() string { +func (x *ImportItem) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AspectType_Authorization) ProtoMessage() {} +func (*ImportItem) ProtoMessage() {} -func (x *AspectType_Authorization) ProtoReflect() protoreflect.Message { +func (x *ImportItem) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3120,74 +3461,53 @@ func (x *AspectType_Authorization) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AspectType_Authorization.ProtoReflect.Descriptor instead. -func (*AspectType_Authorization) Descriptor() ([]byte, []int) { - return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{0, 0} +// Deprecated: Use ImportItem.ProtoReflect.Descriptor instead. +func (*ImportItem) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{35} } -func (x *AspectType_Authorization) GetAlternateUsePermission() string { +func (x *ImportItem) GetEntry() *Entry { if x != nil { - return x.AlternateUsePermission + return x.Entry } - return "" + return nil } -// MetadataTemplate definition for AspectType -type AspectType_MetadataTemplate struct { +func (x *ImportItem) GetUpdateMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.UpdateMask + } + return nil +} + +func (x *ImportItem) GetAspectKeys() []string { + if x != nil { + return x.AspectKeys + } + return nil +} + +// Create metadata job request. +type CreateMetadataJobRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Optional. Index is used to encode Template messages. The value of index - // can range between 1 and 2,147,483,647. Index must be unique within all - // fields in a Template. (Nested Templates can reuse indexes). Once a - // Template is defined, the index cannot be changed, because it identifies - // the field in the actual storage format. Index is a mandatory field, but - // it is optional for top level fields, and map/array "values" definitions. - Index int32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` - // Required. The name of the field. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // Required. The datatype of this field. The following values are supported: - // Primitive types (string, integer, boolean, double, datetime); datetime - // must be of the format RFC3339 UTC "Zulu" (Examples: - // "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z"). Complex - // types (enum, array, map, record). - Type string `protobuf:"bytes,5,opt,name=type,proto3" json:"type,omitempty"` - // Optional. Field definition, needs to be specified if the type is record. - // Defines the nested fields. - RecordFields []*AspectType_MetadataTemplate `protobuf:"bytes,6,rep,name=record_fields,json=recordFields,proto3" json:"record_fields,omitempty"` - // Optional. The list of values for an enum type. Needs to be defined if the - // type is enum. - EnumValues []*AspectType_MetadataTemplate_EnumValue `protobuf:"bytes,8,rep,name=enum_values,json=enumValues,proto3" json:"enum_values,omitempty"` - // Optional. map_items needs to be set if the type is map. map_items can - // refer to a primitive field or a complex (record only) field. To specify a - // primitive field, just name and type needs to be set in the nested - // MetadataTemplate. The recommended value for the name field is item, as - // this is not used in the actual payload. - MapItems *AspectType_MetadataTemplate `protobuf:"bytes,10,opt,name=map_items,json=mapItems,proto3" json:"map_items,omitempty"` - // Optional. array_items needs to be set if the type is array. array_items - // can refer to a primitive field or a complex (record only) field. To - // specify a primitive field, just name and type needs to be set in the - // nested MetadataTemplate. The recommended value for the name field is - // item, as this is not used in the actual payload. - ArrayItems *AspectType_MetadataTemplate `protobuf:"bytes,11,opt,name=array_items,json=arrayItems,proto3" json:"array_items,omitempty"` - // Optional. Id can be used if this definition of the field needs to be - // reused later. Id needs to be unique across the entire template. Id can - // only be specified if the field type is record. - TypeId string `protobuf:"bytes,12,opt,name=type_id,json=typeId,proto3" json:"type_id,omitempty"` - // Optional. A reference to another field definition (instead of an inline - // definition). The value must be equal to the value of an id field defined - // elsewhere in the MetadataTemplate. Only fields with type as record can - // refer to other fields. - TypeRef string `protobuf:"bytes,13,opt,name=type_ref,json=typeRef,proto3" json:"type_ref,omitempty"` - // Optional. Specifies the constraints on this field. - Constraints *AspectType_MetadataTemplate_Constraints `protobuf:"bytes,50,opt,name=constraints,proto3" json:"constraints,omitempty"` - // Optional. Specifies annotations on this field. - Annotations *AspectType_MetadataTemplate_Annotations `protobuf:"bytes,51,opt,name=annotations,proto3" json:"annotations,omitempty"` + // Required. The resource name of the parent location, in the format + // `projects/{project_id_or_number}/locations/{location_id}` + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Required. The metadata job resource. + MetadataJob *MetadataJob `protobuf:"bytes,2,opt,name=metadata_job,json=metadataJob,proto3" json:"metadata_job,omitempty"` + // Optional. The metadata job ID. If not provided, a unique ID is generated + // with the prefix `metadata-job-`. + MetadataJobId string `protobuf:"bytes,3,opt,name=metadata_job_id,json=metadataJobId,proto3" json:"metadata_job_id,omitempty"` + // Optional. The service validates the request without performing any + // mutations. The default is false. + ValidateOnly bool `protobuf:"varint,4,opt,name=validate_only,json=validateOnly,proto3" json:"validate_only,omitempty"` } -func (x *AspectType_MetadataTemplate) Reset() { - *x = AspectType_MetadataTemplate{} +func (x *CreateMetadataJobRequest) Reset() { + *x = CreateMetadataJobRequest{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3195,13 +3515,13 @@ func (x *AspectType_MetadataTemplate) Reset() { } } -func (x *AspectType_MetadataTemplate) String() string { +func (x *CreateMetadataJobRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AspectType_MetadataTemplate) ProtoMessage() {} +func (*CreateMetadataJobRequest) ProtoMessage() {} -func (x *AspectType_MetadataTemplate) ProtoReflect() protoreflect.Message { +func (x *CreateMetadataJobRequest) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3213,62 +3533,672 @@ func (x *AspectType_MetadataTemplate) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AspectType_MetadataTemplate.ProtoReflect.Descriptor instead. -func (*AspectType_MetadataTemplate) Descriptor() ([]byte, []int) { - return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{0, 1} +// Deprecated: Use CreateMetadataJobRequest.ProtoReflect.Descriptor instead. +func (*CreateMetadataJobRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{36} } -func (x *AspectType_MetadataTemplate) GetIndex() int32 { +func (x *CreateMetadataJobRequest) GetParent() string { if x != nil { - return x.Index + return x.Parent } - return 0 + return "" } -func (x *AspectType_MetadataTemplate) GetName() string { +func (x *CreateMetadataJobRequest) GetMetadataJob() *MetadataJob { if x != nil { - return x.Name + return x.MetadataJob } - return "" + return nil } -func (x *AspectType_MetadataTemplate) GetType() string { +func (x *CreateMetadataJobRequest) GetMetadataJobId() string { if x != nil { - return x.Type + return x.MetadataJobId } return "" } -func (x *AspectType_MetadataTemplate) GetRecordFields() []*AspectType_MetadataTemplate { +func (x *CreateMetadataJobRequest) GetValidateOnly() bool { if x != nil { - return x.RecordFields + return x.ValidateOnly } - return nil + return false } -func (x *AspectType_MetadataTemplate) GetEnumValues() []*AspectType_MetadataTemplate_EnumValue { - if x != nil { - return x.EnumValues - } - return nil +// Get metadata job request. +type GetMetadataJobRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The resource name of the metadata job, in the format + // `projects/{project_id_or_number}/locations/{location_id}/metadataJobs/{metadata_job_id}`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *AspectType_MetadataTemplate) GetMapItems() *AspectType_MetadataTemplate { - if x != nil { - return x.MapItems +func (x *GetMetadataJobRequest) Reset() { + *x = GetMetadataJobRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *AspectType_MetadataTemplate) GetArrayItems() *AspectType_MetadataTemplate { - if x != nil { - return x.ArrayItems - } - return nil +func (x *GetMetadataJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *AspectType_MetadataTemplate) GetTypeId() string { - if x != nil { +func (*GetMetadataJobRequest) ProtoMessage() {} + +func (x *GetMetadataJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetMetadataJobRequest.ProtoReflect.Descriptor instead. +func (*GetMetadataJobRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{37} +} + +func (x *GetMetadataJobRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// List metadata jobs request. +type ListMetadataJobsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The resource name of the parent location, in the format + // `projects/{project_id_or_number}/locations/{location_id}` + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. The maximum number of metadata jobs to return. The service might + // return fewer jobs than this value. If unspecified, at most 10 jobs are + // returned. The maximum value is 1,000. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. The page token received from a previous `ListMetadataJobs` call. + // Provide this token to retrieve the subsequent page of results. When + // paginating, all other parameters that are provided to the + // `ListMetadataJobs` request must match the call that provided the page + // token. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. Filter request. Filters are case-sensitive. + // The service supports the following formats: + // + // * `labels.key1 = "value1"` + // * `labels:key1` + // * `name = "value"` + // + // You can combine filters with `AND`, `OR`, and `NOT` operators. + Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` + // Optional. The field to sort the results by, either `name` or `create_time`. + // If not specified, the ordering is undefined. + OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` +} + +func (x *ListMetadataJobsRequest) Reset() { + *x = ListMetadataJobsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListMetadataJobsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListMetadataJobsRequest) ProtoMessage() {} + +func (x *ListMetadataJobsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListMetadataJobsRequest.ProtoReflect.Descriptor instead. +func (*ListMetadataJobsRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{38} +} + +func (x *ListMetadataJobsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListMetadataJobsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListMetadataJobsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +func (x *ListMetadataJobsRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + +func (x *ListMetadataJobsRequest) GetOrderBy() string { + if x != nil { + return x.OrderBy + } + return "" +} + +// List metadata jobs response. +type ListMetadataJobsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Metadata jobs under the specified parent location. + MetadataJobs []*MetadataJob `protobuf:"bytes,1,rep,name=metadata_jobs,json=metadataJobs,proto3" json:"metadata_jobs,omitempty"` + // A token to retrieve the next page of results. If there are no more results + // in the list, the value is empty. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + // Locations that the service couldn't reach. + UnreachableLocations []string `protobuf:"bytes,3,rep,name=unreachable_locations,json=unreachableLocations,proto3" json:"unreachable_locations,omitempty"` +} + +func (x *ListMetadataJobsResponse) Reset() { + *x = ListMetadataJobsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListMetadataJobsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListMetadataJobsResponse) ProtoMessage() {} + +func (x *ListMetadataJobsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[39] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListMetadataJobsResponse.ProtoReflect.Descriptor instead. +func (*ListMetadataJobsResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{39} +} + +func (x *ListMetadataJobsResponse) GetMetadataJobs() []*MetadataJob { + if x != nil { + return x.MetadataJobs + } + return nil +} + +func (x *ListMetadataJobsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +func (x *ListMetadataJobsResponse) GetUnreachableLocations() []string { + if x != nil { + return x.UnreachableLocations + } + return nil +} + +// Cancel metadata job request. +type CancelMetadataJobRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The resource name of the job, in the format + // `projects/{project_id_or_number}/locations/{location_id}/metadataJobs/{metadata_job_id}` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *CancelMetadataJobRequest) Reset() { + *x = CancelMetadataJobRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CancelMetadataJobRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CancelMetadataJobRequest) ProtoMessage() {} + +func (x *CancelMetadataJobRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[40] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CancelMetadataJobRequest.ProtoReflect.Descriptor instead. +func (*CancelMetadataJobRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{40} +} + +func (x *CancelMetadataJobRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// A metadata job resource. +type MetadataJob struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. Identifier. The name of the resource that the configuration is + // applied to, in the format + // `projects/{project_number}/locations/{location_id}/metadataJobs/{metadata_job_id}`. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Output only. A system-generated, globally unique ID for the metadata job. + // If the metadata job is deleted and then re-created with the same name, this + // ID is different. + Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"` + // Output only. The time when the metadata job was created. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` + // Output only. The time when the metadata job was updated. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` + // Optional. User-defined labels. + Labels map[string]string `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Required. Metadata job type. + Type MetadataJob_Type `protobuf:"varint,6,opt,name=type,proto3,enum=google.cloud.dataplex.v1.MetadataJob_Type" json:"type,omitempty"` + // Types that are assignable to Spec: + // + // *MetadataJob_ImportSpec + Spec isMetadataJob_Spec `protobuf_oneof:"spec"` + // Types that are assignable to Result: + // + // *MetadataJob_ImportResult + Result isMetadataJob_Result `protobuf_oneof:"result"` + // Output only. Metadata job status. + Status *MetadataJob_Status `protobuf:"bytes,7,opt,name=status,proto3" json:"status,omitempty"` +} + +func (x *MetadataJob) Reset() { + *x = MetadataJob{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MetadataJob) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MetadataJob) ProtoMessage() {} + +func (x *MetadataJob) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[41] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MetadataJob.ProtoReflect.Descriptor instead. +func (*MetadataJob) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{41} +} + +func (x *MetadataJob) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *MetadataJob) GetUid() string { + if x != nil { + return x.Uid + } + return "" +} + +func (x *MetadataJob) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + +func (x *MetadataJob) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +func (x *MetadataJob) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +func (x *MetadataJob) GetType() MetadataJob_Type { + if x != nil { + return x.Type + } + return MetadataJob_TYPE_UNSPECIFIED +} + +func (m *MetadataJob) GetSpec() isMetadataJob_Spec { + if m != nil { + return m.Spec + } + return nil +} + +func (x *MetadataJob) GetImportSpec() *MetadataJob_ImportJobSpec { + if x, ok := x.GetSpec().(*MetadataJob_ImportSpec); ok { + return x.ImportSpec + } + return nil +} + +func (m *MetadataJob) GetResult() isMetadataJob_Result { + if m != nil { + return m.Result + } + return nil +} + +func (x *MetadataJob) GetImportResult() *MetadataJob_ImportJobResult { + if x, ok := x.GetResult().(*MetadataJob_ImportResult); ok { + return x.ImportResult + } + return nil +} + +func (x *MetadataJob) GetStatus() *MetadataJob_Status { + if x != nil { + return x.Status + } + return nil +} + +type isMetadataJob_Spec interface { + isMetadataJob_Spec() +} + +type MetadataJob_ImportSpec struct { + // Import job specification. + ImportSpec *MetadataJob_ImportJobSpec `protobuf:"bytes,100,opt,name=import_spec,json=importSpec,proto3,oneof"` +} + +func (*MetadataJob_ImportSpec) isMetadataJob_Spec() {} + +type isMetadataJob_Result interface { + isMetadataJob_Result() +} + +type MetadataJob_ImportResult struct { + // Output only. Import job result. + ImportResult *MetadataJob_ImportJobResult `protobuf:"bytes,200,opt,name=import_result,json=importResult,proto3,oneof"` +} + +func (*MetadataJob_ImportResult) isMetadataJob_Result() {} + +// Autorization for an AspectType. +type AspectType_Authorization struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Immutable. The IAM permission grantable on the EntryGroup to allow access + // to instantiate Aspects of Dataplex owned AspectTypes, only settable for + // Dataplex owned Types. + AlternateUsePermission string `protobuf:"bytes,1,opt,name=alternate_use_permission,json=alternateUsePermission,proto3" json:"alternate_use_permission,omitempty"` +} + +func (x *AspectType_Authorization) Reset() { + *x = AspectType_Authorization{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AspectType_Authorization) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AspectType_Authorization) ProtoMessage() {} + +func (x *AspectType_Authorization) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[42] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AspectType_Authorization.ProtoReflect.Descriptor instead. +func (*AspectType_Authorization) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *AspectType_Authorization) GetAlternateUsePermission() string { + if x != nil { + return x.AlternateUsePermission + } + return "" +} + +// MetadataTemplate definition for an AspectType. +type AspectType_MetadataTemplate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. Index is used to encode Template messages. The value of index + // can range between 1 and 2,147,483,647. Index must be unique within all + // fields in a Template. (Nested Templates can reuse indexes). Once a + // Template is defined, the index cannot be changed, because it identifies + // the field in the actual storage format. Index is a mandatory field, but + // it is optional for top level fields, and map/array "values" definitions. + Index int32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` + // Required. The name of the field. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // Required. The datatype of this field. The following values are supported: + // + // Primitive types: + // + // * string + // * integer + // * boolean + // * double + // * datetime. Must be of the format RFC3339 UTC "Zulu" (Examples: + // "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z"). + // + // Complex types: + // + // * enum + // * array + // * map + // * record + Type string `protobuf:"bytes,5,opt,name=type,proto3" json:"type,omitempty"` + // Optional. Field definition. You must specify it if the type is record. It + // defines the nested fields. + RecordFields []*AspectType_MetadataTemplate `protobuf:"bytes,6,rep,name=record_fields,json=recordFields,proto3" json:"record_fields,omitempty"` + // Optional. The list of values for an enum type. You must define it if the + // type is enum. + EnumValues []*AspectType_MetadataTemplate_EnumValue `protobuf:"bytes,8,rep,name=enum_values,json=enumValues,proto3" json:"enum_values,omitempty"` + // Optional. If the type is map, set map_items. map_items can refer to a + // primitive field or a complex (record only) field. To specify a primitive + // field, you only need to set name and type in the nested + // MetadataTemplate. The recommended value for the name field is item, as + // this isn't used in the actual payload. + MapItems *AspectType_MetadataTemplate `protobuf:"bytes,10,opt,name=map_items,json=mapItems,proto3" json:"map_items,omitempty"` + // Optional. If the type is array, set array_items. array_items can refer + // to a primitive field or a complex (record only) field. To specify a + // primitive field, you only need to set name and type in the nested + // MetadataTemplate. The recommended value for the name field is item, as + // this isn't used in the actual payload. + ArrayItems *AspectType_MetadataTemplate `protobuf:"bytes,11,opt,name=array_items,json=arrayItems,proto3" json:"array_items,omitempty"` + // Optional. You can use type id if this definition of the field needs to be + // reused later. The type id must be unique across the entire template. You + // can only specify it if the field type is record. + TypeId string `protobuf:"bytes,12,opt,name=type_id,json=typeId,proto3" json:"type_id,omitempty"` + // Optional. A reference to another field definition (not an inline + // definition). The value must be equal to the value of an id field defined + // elsewhere in the MetadataTemplate. Only fields with record type can + // refer to other fields. + TypeRef string `protobuf:"bytes,13,opt,name=type_ref,json=typeRef,proto3" json:"type_ref,omitempty"` + // Optional. Specifies the constraints on this field. + Constraints *AspectType_MetadataTemplate_Constraints `protobuf:"bytes,50,opt,name=constraints,proto3" json:"constraints,omitempty"` + // Optional. Specifies annotations on this field. + Annotations *AspectType_MetadataTemplate_Annotations `protobuf:"bytes,51,opt,name=annotations,proto3" json:"annotations,omitempty"` +} + +func (x *AspectType_MetadataTemplate) Reset() { + *x = AspectType_MetadataTemplate{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AspectType_MetadataTemplate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AspectType_MetadataTemplate) ProtoMessage() {} + +func (x *AspectType_MetadataTemplate) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[43] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AspectType_MetadataTemplate.ProtoReflect.Descriptor instead. +func (*AspectType_MetadataTemplate) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *AspectType_MetadataTemplate) GetIndex() int32 { + if x != nil { + return x.Index + } + return 0 +} + +func (x *AspectType_MetadataTemplate) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *AspectType_MetadataTemplate) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *AspectType_MetadataTemplate) GetRecordFields() []*AspectType_MetadataTemplate { + if x != nil { + return x.RecordFields + } + return nil +} + +func (x *AspectType_MetadataTemplate) GetEnumValues() []*AspectType_MetadataTemplate_EnumValue { + if x != nil { + return x.EnumValues + } + return nil +} + +func (x *AspectType_MetadataTemplate) GetMapItems() *AspectType_MetadataTemplate { + if x != nil { + return x.MapItems + } + return nil +} + +func (x *AspectType_MetadataTemplate) GetArrayItems() *AspectType_MetadataTemplate { + if x != nil { + return x.ArrayItems + } + return nil +} + +func (x *AspectType_MetadataTemplate) GetTypeId() string { + if x != nil { return x.TypeId } return "" @@ -3295,26 +4225,26 @@ func (x *AspectType_MetadataTemplate) GetAnnotations() *AspectType_MetadataTempl return nil } -// Definition of Enumvalue (to be used by enum fields) +// Definition of Enumvalue, to be used for enum fields. type AspectType_MetadataTemplate_EnumValue struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Index for the enum. Cannot be modified. + // Required. Index for the enum value. It can't be modified. Index int32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` // Required. Name of the enumvalue. This is the actual value that the - // aspect will contain. + // aspect can contain. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - // Optional. Optional deprecation message to be set if an enum value needs - // to be deprecated. + // Optional. You can set this message if you need to deprecate an enum + // value. Deprecated string `protobuf:"bytes,3,opt,name=deprecated,proto3" json:"deprecated,omitempty"` } func (x *AspectType_MetadataTemplate_EnumValue) Reset() { *x = AspectType_MetadataTemplate_EnumValue{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[38] + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3327,7 +4257,7 @@ func (x *AspectType_MetadataTemplate_EnumValue) String() string { func (*AspectType_MetadataTemplate_EnumValue) ProtoMessage() {} func (x *AspectType_MetadataTemplate_EnumValue) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[38] + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3364,20 +4294,20 @@ func (x *AspectType_MetadataTemplate_EnumValue) GetDeprecated() string { return "" } -// Definition of the constraints of a field +// Definition of the constraints of a field. type AspectType_MetadataTemplate_Constraints struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Optional. Marks this as an optional/required field. + // Optional. Marks this field as optional or required. Required bool `protobuf:"varint,1,opt,name=required,proto3" json:"required,omitempty"` } func (x *AspectType_MetadataTemplate_Constraints) Reset() { *x = AspectType_MetadataTemplate_Constraints{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[39] + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3390,7 +4320,7 @@ func (x *AspectType_MetadataTemplate_Constraints) String() string { func (*AspectType_MetadataTemplate_Constraints) ProtoMessage() {} func (x *AspectType_MetadataTemplate_Constraints) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[39] + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3413,36 +4343,38 @@ func (x *AspectType_MetadataTemplate_Constraints) GetRequired() bool { return false } -// Definition of the annotations of a field +// Definition of the annotations of a field. type AspectType_MetadataTemplate_Annotations struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Optional. Marks a field as deprecated, a deprecation message can be - // included. + // Optional. Marks a field as deprecated. You can include a deprecation + // message. Deprecated string `protobuf:"bytes,1,opt,name=deprecated,proto3" json:"deprecated,omitempty"` - // Optional. Specify a displayname for a field. + // Optional. Display name for a field. DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` - // Optional. Specify a description for a field + // Optional. Description for a field. Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - // Optional. Specify a display order for a field. Display order can be - // used to reorder where a field is rendered + // Optional. Display order for a field. You can use this to reorder where + // a field is rendered. DisplayOrder int32 `protobuf:"varint,4,opt,name=display_order,json=displayOrder,proto3" json:"display_order,omitempty"` - // Optional. String Type annotations can be used to specify special - // meaning to string fields. The following values are supported: richText: - // The field must be interpreted as a rich text field. url: A fully - // qualified url link. resource: A service qualified resource reference. + // Optional. You can use String Type annotations to specify special + // meaning to string fields. The following values are supported: + // + // * richText: The field must be interpreted as a rich text field. + // * url: A fully qualified URL link. + // * resource: A service qualified resource reference. StringType string `protobuf:"bytes,6,opt,name=string_type,json=stringType,proto3" json:"string_type,omitempty"` - // Optional. Suggested hints for string fields. These can be used to - // suggest values to users, through an UI for example. + // Optional. Suggested hints for string fields. You can use them to + // suggest values to users through console. StringValues []string `protobuf:"bytes,7,rep,name=string_values,json=stringValues,proto3" json:"string_values,omitempty"` } func (x *AspectType_MetadataTemplate_Annotations) Reset() { *x = AspectType_MetadataTemplate_Annotations{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[40] + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3455,7 +4387,7 @@ func (x *AspectType_MetadataTemplate_Annotations) String() string { func (*AspectType_MetadataTemplate_Annotations) ProtoMessage() {} func (x *AspectType_MetadataTemplate_Annotations) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[40] + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3525,7 +4457,7 @@ type EntryType_AspectInfo struct { func (x *EntryType_AspectInfo) Reset() { *x = EntryType_AspectInfo{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[42] + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3538,7 +4470,7 @@ func (x *EntryType_AspectInfo) String() string { func (*EntryType_AspectInfo) ProtoMessage() {} func (x *EntryType_AspectInfo) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[42] + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3576,7 +4508,7 @@ type EntryType_Authorization struct { func (x *EntryType_Authorization) Reset() { *x = EntryType_Authorization{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[43] + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3586,62 +4518,399 @@ func (x *EntryType_Authorization) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EntryType_Authorization) ProtoMessage() {} - -func (x *EntryType_Authorization) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (*EntryType_Authorization) ProtoMessage() {} + +func (x *EntryType_Authorization) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[50] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntryType_Authorization.ProtoReflect.Descriptor instead. +func (*EntryType_Authorization) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{2, 1} +} + +func (x *EntryType_Authorization) GetAlternateUsePermission() string { + if x != nil { + return x.AlternateUsePermission + } + return "" +} + +// Information about individual items in the hierarchy that is associated with +// the data resource. +type EntrySource_Ancestor struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. The name of the ancestor resource. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Optional. The type of the ancestor resource. + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` +} + +func (x *EntrySource_Ancestor) Reset() { + *x = EntrySource_Ancestor{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EntrySource_Ancestor) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntrySource_Ancestor) ProtoMessage() {} + +func (x *EntrySource_Ancestor) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[53] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntrySource_Ancestor.ProtoReflect.Descriptor instead. +func (*EntrySource_Ancestor) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{6, 0} +} + +func (x *EntrySource_Ancestor) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *EntrySource_Ancestor) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +// Snippets for the entry, contains HTML-style highlighting for +// matched tokens, will be used in UI. +// +// Deprecated: Marked as deprecated in google/cloud/dataplex/v1/catalog.proto. +type SearchEntriesResult_Snippets struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Entry + // + // Deprecated: Marked as deprecated in google/cloud/dataplex/v1/catalog.proto. + DataplexEntry *Entry `protobuf:"bytes,1,opt,name=dataplex_entry,json=dataplexEntry,proto3" json:"dataplex_entry,omitempty"` +} + +func (x *SearchEntriesResult_Snippets) Reset() { + *x = SearchEntriesResult_Snippets{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchEntriesResult_Snippets) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchEntriesResult_Snippets) ProtoMessage() {} + +func (x *SearchEntriesResult_Snippets) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[55] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchEntriesResult_Snippets.ProtoReflect.Descriptor instead. +func (*SearchEntriesResult_Snippets) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{33, 0} +} + +// Deprecated: Marked as deprecated in google/cloud/dataplex/v1/catalog.proto. +func (x *SearchEntriesResult_Snippets) GetDataplexEntry() *Entry { + if x != nil { + return x.DataplexEntry + } + return nil +} + +// Results from a metadata import job. +type MetadataJob_ImportJobResult struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. The total number of entries that were deleted. + DeletedEntries int64 `protobuf:"varint,1,opt,name=deleted_entries,json=deletedEntries,proto3" json:"deleted_entries,omitempty"` + // Output only. The total number of entries that were updated. + UpdatedEntries int64 `protobuf:"varint,2,opt,name=updated_entries,json=updatedEntries,proto3" json:"updated_entries,omitempty"` + // Output only. The total number of entries that were created. + CreatedEntries int64 `protobuf:"varint,3,opt,name=created_entries,json=createdEntries,proto3" json:"created_entries,omitempty"` + // Output only. The total number of entries that were unchanged. + UnchangedEntries int64 `protobuf:"varint,4,opt,name=unchanged_entries,json=unchangedEntries,proto3" json:"unchanged_entries,omitempty"` + // Output only. The total number of entries that were recreated. + RecreatedEntries int64 `protobuf:"varint,6,opt,name=recreated_entries,json=recreatedEntries,proto3" json:"recreated_entries,omitempty"` + // Output only. The time when the status was updated. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` +} + +func (x *MetadataJob_ImportJobResult) Reset() { + *x = MetadataJob_ImportJobResult{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MetadataJob_ImportJobResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MetadataJob_ImportJobResult) ProtoMessage() {} + +func (x *MetadataJob_ImportJobResult) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[56] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MetadataJob_ImportJobResult.ProtoReflect.Descriptor instead. +func (*MetadataJob_ImportJobResult) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{41, 0} +} + +func (x *MetadataJob_ImportJobResult) GetDeletedEntries() int64 { + if x != nil { + return x.DeletedEntries + } + return 0 +} + +func (x *MetadataJob_ImportJobResult) GetUpdatedEntries() int64 { + if x != nil { + return x.UpdatedEntries + } + return 0 +} + +func (x *MetadataJob_ImportJobResult) GetCreatedEntries() int64 { + if x != nil { + return x.CreatedEntries + } + return 0 +} + +func (x *MetadataJob_ImportJobResult) GetUnchangedEntries() int64 { + if x != nil { + return x.UnchangedEntries + } + return 0 +} + +func (x *MetadataJob_ImportJobResult) GetRecreatedEntries() int64 { + if x != nil { + return x.RecreatedEntries + } + return 0 +} + +func (x *MetadataJob_ImportJobResult) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +// Job specification for a metadata import job +type MetadataJob_ImportJobSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. The URI of a Cloud Storage bucket or folder (beginning with + // `gs://` and ending with `/`) that contains the metadata import files for + // this job. + // + // A metadata import file defines the values to set for each of the entries + // and aspects in a metadata job. For more information about how to create a + // metadata import file and the file requirements, see [Metadata import + // file](https://cloud.google.com/dataplex/docs/import-metadata#metadata-import-file). + // + // You can provide multiple metadata import files in the same metadata job. + // The bucket or folder must contain at least one metadata import file, in + // JSON Lines format (either `.json` or `.jsonl` file extension). + // + // In `FULL` entry sync mode, don't save the metadata import file in a + // folder named `SOURCE_STORAGE_URI/deletions/`. + // + // **Caution**: If the metadata import file contains no data, all entries + // and aspects that belong to the job's scope are deleted. + SourceStorageUri string `protobuf:"bytes,1,opt,name=source_storage_uri,json=sourceStorageUri,proto3" json:"source_storage_uri,omitempty"` + // Optional. The time when the process that created the metadata import + // files began. + SourceCreateTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=source_create_time,json=sourceCreateTime,proto3" json:"source_create_time,omitempty"` + // Required. A boundary on the scope of impact that the metadata import job + // can have. + Scope *MetadataJob_ImportJobSpec_ImportJobScope `protobuf:"bytes,2,opt,name=scope,proto3" json:"scope,omitempty"` + // Required. The sync mode for entries. + // Only `FULL` mode is supported for entries. All entries in the job's scope + // are modified. If an entry exists in Dataplex but isn't included in the + // metadata import file, the entry is deleted when you run the metadata job. + EntrySyncMode MetadataJob_ImportJobSpec_SyncMode `protobuf:"varint,3,opt,name=entry_sync_mode,json=entrySyncMode,proto3,enum=google.cloud.dataplex.v1.MetadataJob_ImportJobSpec_SyncMode" json:"entry_sync_mode,omitempty"` + // Required. The sync mode for aspects. + // Only `INCREMENTAL` mode is supported for aspects. An aspect is modified + // only if the metadata import file includes a reference to the aspect in + // the `update_mask` field and the `aspect_keys` field. + AspectSyncMode MetadataJob_ImportJobSpec_SyncMode `protobuf:"varint,4,opt,name=aspect_sync_mode,json=aspectSyncMode,proto3,enum=google.cloud.dataplex.v1.MetadataJob_ImportJobSpec_SyncMode" json:"aspect_sync_mode,omitempty"` + // Optional. The level of logs to write to Cloud Logging for this job. + // + // Debug-level logs provide highly-detailed information for + // troubleshooting, but their increased verbosity could incur [additional + // costs](https://cloud.google.com/stackdriver/pricing) that might not be + // merited for all jobs. + // + // If unspecified, defaults to `INFO`. + LogLevel MetadataJob_ImportJobSpec_LogLevel `protobuf:"varint,6,opt,name=log_level,json=logLevel,proto3,enum=google.cloud.dataplex.v1.MetadataJob_ImportJobSpec_LogLevel" json:"log_level,omitempty"` +} + +func (x *MetadataJob_ImportJobSpec) Reset() { + *x = MetadataJob_ImportJobSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MetadataJob_ImportJobSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MetadataJob_ImportJobSpec) ProtoMessage() {} + +func (x *MetadataJob_ImportJobSpec) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[57] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MetadataJob_ImportJobSpec.ProtoReflect.Descriptor instead. +func (*MetadataJob_ImportJobSpec) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{41, 1} +} + +func (x *MetadataJob_ImportJobSpec) GetSourceStorageUri() string { + if x != nil { + return x.SourceStorageUri + } + return "" +} + +func (x *MetadataJob_ImportJobSpec) GetSourceCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.SourceCreateTime + } + return nil +} + +func (x *MetadataJob_ImportJobSpec) GetScope() *MetadataJob_ImportJobSpec_ImportJobScope { + if x != nil { + return x.Scope + } + return nil +} + +func (x *MetadataJob_ImportJobSpec) GetEntrySyncMode() MetadataJob_ImportJobSpec_SyncMode { + if x != nil { + return x.EntrySyncMode } - return mi.MessageOf(x) + return MetadataJob_ImportJobSpec_SYNC_MODE_UNSPECIFIED } -// Deprecated: Use EntryType_Authorization.ProtoReflect.Descriptor instead. -func (*EntryType_Authorization) Descriptor() ([]byte, []int) { - return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{2, 1} +func (x *MetadataJob_ImportJobSpec) GetAspectSyncMode() MetadataJob_ImportJobSpec_SyncMode { + if x != nil { + return x.AspectSyncMode + } + return MetadataJob_ImportJobSpec_SYNC_MODE_UNSPECIFIED } -func (x *EntryType_Authorization) GetAlternateUsePermission() string { +func (x *MetadataJob_ImportJobSpec) GetLogLevel() MetadataJob_ImportJobSpec_LogLevel { if x != nil { - return x.AlternateUsePermission + return x.LogLevel } - return "" + return MetadataJob_ImportJobSpec_LOG_LEVEL_UNSPECIFIED } -// Ancestor contains information about individual items in the hierarchy of -// an Entry. -type EntrySource_Ancestor struct { +// Metadata job status. +type MetadataJob_Status struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Optional. The name of the ancestor resource. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Optional. The type of the ancestor resource. - Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + // Output only. State of the metadata job. + State MetadataJob_Status_State `protobuf:"varint,1,opt,name=state,proto3,enum=google.cloud.dataplex.v1.MetadataJob_Status_State" json:"state,omitempty"` + // Output only. Message relating to the progression of a metadata job. + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + // Output only. Progress tracking. + CompletionPercent int32 `protobuf:"varint,3,opt,name=completion_percent,json=completionPercent,proto3" json:"completion_percent,omitempty"` + // Output only. The time when the status was updated. + UpdateTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"` } -func (x *EntrySource_Ancestor) Reset() { - *x = EntrySource_Ancestor{} +func (x *MetadataJob_Status) Reset() { + *x = MetadataJob_Status{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[46] + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *EntrySource_Ancestor) String() string { +func (x *MetadataJob_Status) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EntrySource_Ancestor) ProtoMessage() {} +func (*MetadataJob_Status) ProtoMessage() {} -func (x *EntrySource_Ancestor) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[46] +func (x *MetadataJob_Status) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3652,57 +4921,97 @@ func (x *EntrySource_Ancestor) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EntrySource_Ancestor.ProtoReflect.Descriptor instead. -func (*EntrySource_Ancestor) Descriptor() ([]byte, []int) { - return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{6, 0} +// Deprecated: Use MetadataJob_Status.ProtoReflect.Descriptor instead. +func (*MetadataJob_Status) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{41, 2} } -func (x *EntrySource_Ancestor) GetName() string { +func (x *MetadataJob_Status) GetState() MetadataJob_Status_State { if x != nil { - return x.Name + return x.State } - return "" + return MetadataJob_Status_STATE_UNSPECIFIED } -func (x *EntrySource_Ancestor) GetType() string { +func (x *MetadataJob_Status) GetMessage() string { if x != nil { - return x.Type + return x.Message } return "" } -// Snippets for the entry, contains HTML-style highlighting for -// matched tokens, will be used in UI. -// -// Deprecated: Marked as deprecated in google/cloud/dataplex/v1/catalog.proto. -type SearchEntriesResult_Snippets struct { +func (x *MetadataJob_Status) GetCompletionPercent() int32 { + if x != nil { + return x.CompletionPercent + } + return 0 +} + +func (x *MetadataJob_Status) GetUpdateTime() *timestamppb.Timestamp { + if x != nil { + return x.UpdateTime + } + return nil +} + +// A boundary on the scope of impact that the metadata import job can have. +type MetadataJob_ImportJobSpec_ImportJobScope struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Entry + // Required. The entry group that is in scope for the import job, + // specified as a relative resource name in the format + // `projects/{project_number_or_id}/locations/{location_id}/entryGroups/{entry_group_id}`. + // Only entries that belong to the specified entry group are affected by + // the job. // - // Deprecated: Marked as deprecated in google/cloud/dataplex/v1/catalog.proto. - DataplexEntry *Entry `protobuf:"bytes,1,opt,name=dataplex_entry,json=dataplexEntry,proto3" json:"dataplex_entry,omitempty"` + // Must contain exactly one element. The entry group and the job + // must be in the same location. + EntryGroups []string `protobuf:"bytes,1,rep,name=entry_groups,json=entryGroups,proto3" json:"entry_groups,omitempty"` + // Required. The entry types that are in scope for the import job, + // specified as relative resource names in the format + // `projects/{project_number_or_id}/locations/{location_id}/entryTypes/{entry_type_id}`. + // The job modifies only the entries that belong to these entry types. + // + // If the metadata import file attempts to modify an entry whose type + // isn't included in this list, the import job is halted before modifying + // any entries or aspects. + // + // The location of an entry type must either match the location of the + // job, or the entry type must be global. + EntryTypes []string `protobuf:"bytes,2,rep,name=entry_types,json=entryTypes,proto3" json:"entry_types,omitempty"` + // Optional. The aspect types that are in scope for the import job, + // specified as relative resource names in the format + // `projects/{project_number_or_id}/locations/{location_id}/aspectTypes/{aspect_type_id}`. + // The job modifies only the aspects that belong to these aspect types. + // + // If the metadata import file attempts to modify an aspect whose type + // isn't included in this list, the import job is halted before modifying + // any entries or aspects. + // + // The location of an aspect type must either match the location of the + // job, or the aspect type must be global. + AspectTypes []string `protobuf:"bytes,3,rep,name=aspect_types,json=aspectTypes,proto3" json:"aspect_types,omitempty"` } -func (x *SearchEntriesResult_Snippets) Reset() { - *x = SearchEntriesResult_Snippets{} +func (x *MetadataJob_ImportJobSpec_ImportJobScope) Reset() { + *x = MetadataJob_ImportJobSpec_ImportJobScope{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[48] + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SearchEntriesResult_Snippets) String() string { +func (x *MetadataJob_ImportJobSpec_ImportJobScope) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SearchEntriesResult_Snippets) ProtoMessage() {} +func (*MetadataJob_ImportJobSpec_ImportJobScope) ProtoMessage() {} -func (x *SearchEntriesResult_Snippets) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[48] +func (x *MetadataJob_ImportJobSpec_ImportJobScope) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_catalog_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3713,15 +5022,28 @@ func (x *SearchEntriesResult_Snippets) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SearchEntriesResult_Snippets.ProtoReflect.Descriptor instead. -func (*SearchEntriesResult_Snippets) Descriptor() ([]byte, []int) { - return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{33, 0} +// Deprecated: Use MetadataJob_ImportJobSpec_ImportJobScope.ProtoReflect.Descriptor instead. +func (*MetadataJob_ImportJobSpec_ImportJobScope) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP(), []int{41, 1, 0} } -// Deprecated: Marked as deprecated in google/cloud/dataplex/v1/catalog.proto. -func (x *SearchEntriesResult_Snippets) GetDataplexEntry() *Entry { +func (x *MetadataJob_ImportJobSpec_ImportJobScope) GetEntryGroups() []string { if x != nil { - return x.DataplexEntry + return x.EntryGroups + } + return nil +} + +func (x *MetadataJob_ImportJobSpec_ImportJobScope) GetEntryTypes() []string { + if x != nil { + return x.EntryTypes + } + return nil +} + +func (x *MetadataJob_ImportJobSpec_ImportJobScope) GetAspectTypes() []string { + if x != nil { + return x.AspectTypes } return nil } @@ -3738,28 +5060,270 @@ var file_google_cloud_dataplex_v1_catalog_proto_rawDesc = []byte{ 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, - 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2f, 0x76, 0x31, 0x2f, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, - 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0xd2, 0x10, 0x0a, 0x0a, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x3e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, - 0x41, 0x03, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, - 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x15, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x66, + 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x26, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x6f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd2, 0x10, + 0x0a, 0x0a, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3e, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x03, 0xfa, + 0x41, 0x24, 0x0a, 0x22, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x73, 0x70, 0x65, + 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x03, + 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x03, + 0x75, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, + 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4d, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x4c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x5d, 0x0a, 0x0d, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x70, 0x65, + 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x67, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x35, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x10, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, + 0x65, 0x12, 0x57, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0xca, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x4e, 0x0a, 0x0d, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x18, 0x61, + 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x70, 0x65, 0x72, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x05, 0x52, 0x16, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x83, 0x09, 0x0a, 0x10, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, + 0x19, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x5f, 0x0a, 0x0d, + 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x65, 0x0a, + 0x0b, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, + 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x12, 0x57, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x5b, 0x0a, + 0x0b, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, + 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, + 0x61, 0x72, 0x72, 0x61, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1c, 0x0a, 0x07, 0x74, 0x79, + 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x74, 0x79, 0x70, 0x65, + 0x5f, 0x72, 0x65, 0x66, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x07, 0x74, 0x79, 0x70, 0x65, 0x52, 0x65, 0x66, 0x12, 0x68, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x73, + 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x65, 0x6d, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, + 0x74, 0x73, 0x12, 0x68, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x41, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x64, 0x0a, 0x09, + 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, + 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, + 0x65, 0x64, 0x1a, 0x2e, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, + 0x73, 0x12, 0x1f, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, + 0x65, 0x64, 0x1a, 0xfb, 0x01, 0x0a, 0x0b, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x64, 0x65, 0x70, + 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, + 0x79, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x12, 0x24, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x84, 0x01, 0xea, 0x41, + 0x80, 0x01, 0x0a, 0x22, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x73, 0x70, 0x65, + 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x41, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, + 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x7b, 0x61, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2a, 0x0b, 0x61, 0x73, 0x70, 0x65, 0x63, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x32, 0x0a, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x22, 0xb4, 0x05, 0x0a, 0x0a, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x12, 0x3e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x2a, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, + 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4d, 0x0a, 0x06, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, + 0x61, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x57, + 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0xca, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x3a, 0x84, 0x01, 0xea, 0x41, 0x80, 0x01, 0x0a, 0x22, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x41, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x7d, + 0x2a, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x32, 0x0a, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x90, 0x08, 0x0a, 0x09, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x40, 0x0a, + 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x4c, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x17, + 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x26, 0x0a, 0x0c, 0x74, 0x79, 0x70, 0x65, 0x5f, + 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, + 0x1f, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x59, 0x0a, + 0x10, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, + 0x73, 0x18, 0x32, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x41, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, + 0x64, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x73, 0x12, 0x5c, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x54, 0x79, 0x70, 0x65, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x49, 0x0a, 0x0a, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3b, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x27, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, + 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x1a, 0x4e, 0x0a, 0x0d, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x18, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x5f, + 0x75, 0x73, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x16, 0x61, 0x6c, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x7e, 0xea, 0x41, + 0x7b, 0x0a, 0x21, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, + 0x73, 0x32, 0x09, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0xcf, 0x02, 0x0a, + 0x06, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x61, 0x73, 0x70, 0x65, 0x63, + 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x0a, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, @@ -3767,264 +5331,26 @@ var file_google_cloud_dataplex_v1_catalog_proto_rawDesc = []byte{ 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4d, 0x0a, 0x06, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, - 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x5d, 0x0a, 0x0d, - 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x34, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x50, 0x0a, 0x0d, + 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x41, - 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0d, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x67, 0x0a, 0x11, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, - 0x18, 0x35, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, - 0x31, 0x2e, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, - 0x41, 0x02, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x12, 0x57, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0xca, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x4e, 0x0a, - 0x0d, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, - 0x0a, 0x18, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x5f, - 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x16, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, - 0x55, 0x73, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x83, 0x09, - 0x0a, 0x10, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x17, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, - 0x5f, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, - 0x31, 0x2e, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, - 0x12, 0x65, 0x0a, 0x0b, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, - 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, - 0x2e, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x45, 0x6e, 0x75, - 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x65, 0x6e, 0x75, - 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x57, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f, 0x69, - 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x73, - 0x12, 0x5b, 0x0a, 0x0b, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, - 0x2e, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, - 0x01, 0x52, 0x0a, 0x61, 0x72, 0x72, 0x61, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1c, 0x0a, - 0x07, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x01, 0x52, 0x06, 0x74, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x74, - 0x79, 0x70, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x07, 0x74, 0x79, 0x70, 0x65, 0x52, 0x65, 0x66, 0x12, 0x68, 0x0a, 0x0b, 0x63, - 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x70, 0x65, - 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, - 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, - 0x6e, 0x74, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, - 0x61, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x68, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, - 0x65, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, - 0x64, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x19, 0x0a, 0x05, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x23, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, - 0x63, 0x61, 0x74, 0x65, 0x64, 0x1a, 0x2e, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, - 0x69, 0x6e, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x72, 0x65, 0x71, - 0x75, 0x69, 0x72, 0x65, 0x64, 0x1a, 0xfb, 0x01, 0x0a, 0x0b, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, - 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x64, 0x69, 0x73, - 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x73, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x84, - 0x01, 0xea, 0x41, 0x80, 0x01, 0x0a, 0x22, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x41, - 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x41, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x7d, 0x2f, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x7b, - 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2a, 0x0b, 0x61, 0x73, - 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x32, 0x0a, 0x61, 0x73, 0x70, 0x65, 0x63, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0xb4, 0x05, 0x0a, 0x0a, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x0b, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, - 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, - 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x01, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4d, - 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x12, 0x0a, - 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x65, 0x74, 0x61, - 0x67, 0x12, 0x57, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x18, 0xca, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x84, 0x01, 0xea, 0x41, 0x80, 0x01, 0x0a, 0x22, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x12, 0x41, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x7d, 0x2a, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, - 0x32, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x90, 0x08, 0x0a, - 0x09, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x03, 0xfa, 0x41, 0x23, - 0x0a, 0x21, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, - 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0c, 0x64, - 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x4c, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x12, 0x17, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x26, 0x0a, 0x0c, 0x74, 0x79, - 0x70, 0x65, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, - 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x12, 0x59, 0x0a, 0x10, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x70, - 0x65, 0x63, 0x74, 0x73, 0x18, 0x32, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x2e, - 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x75, - 0x69, 0x72, 0x65, 0x64, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x73, 0x12, 0x5c, 0x0a, 0x0d, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x33, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0d, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x49, 0x0a, 0x0a, 0x41, 0x73, 0x70, - 0x65, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3b, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x1a, 0x4e, 0x0a, 0x0d, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x18, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x74, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x16, 0x61, 0x6c, - 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, - 0x7e, 0xea, 0x41, 0x7b, 0x0a, 0x21, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, - 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x74, - 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x2a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x54, - 0x79, 0x70, 0x65, 0x73, 0x32, 0x09, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, - 0xcf, 0x02, 0x0a, 0x06, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x61, 0x73, - 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, - 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x30, 0x0a, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x50, 0x0a, 0x0d, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, - 0x31, 0x2e, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x03, - 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x22, 0x88, 0x01, 0x0a, 0x0c, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, + 0x73, 0x70, 0x65, 0x63, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x0c, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xab, + 0x01, 0x0a, 0x0c, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xb0, 0x05, 0x0a, + 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x61, 0x74, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xb0, 0x05, 0x0a, 0x05, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, @@ -4390,358 +5716,629 @@ var file_google_cloud_dataplex_v1_catalog_proto_rawDesc = []byte{ 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0xcb, 0x01, 0x0a, 0x14, 0x53, + 0x74, 0x72, 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0xf1, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x05, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1e, 0x0a, - 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x19, 0x0a, - 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x01, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x22, 0xbe, 0x02, 0x0a, 0x13, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x2b, 0x0a, 0x0f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x6c, - 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x46, 0x0a, - 0x0e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x56, 0x0a, 0x08, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, - 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x53, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x73, 0x42, - 0x02, 0x18, 0x01, 0x52, 0x08, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x73, 0x1a, 0x5a, 0x0a, - 0x08, 0x53, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x0e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x3a, 0x02, 0x18, 0x01, 0x22, 0xc9, 0x01, 0x0a, 0x15, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e, - 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, - 0x68, 0x61, 0x62, 0x6c, 0x65, 0x2a, 0x51, 0x0a, 0x09, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x56, 0x69, - 0x65, 0x77, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x56, 0x49, 0x45, 0x57, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, - 0x0a, 0x05, 0x42, 0x41, 0x53, 0x49, 0x43, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x55, 0x4c, - 0x4c, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x10, 0x03, 0x12, - 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x04, 0x2a, 0x70, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x52, - 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x54, - 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4d, - 0x49, 0x47, 0x52, 0x41, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x52, 0x41, - 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x52, 0x41, - 0x4e, 0x53, 0x46, 0x45, 0x52, 0x52, 0x45, 0x44, 0x10, 0x02, 0x32, 0x82, 0x23, 0x0a, 0x0e, 0x43, - 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xea, 0x01, - 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, - 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x85, 0x01, 0xca, 0x41, 0x1e, 0x0a, 0x09, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x1f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, - 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2c, 0x65, 0x6e, 0x74, 0x72, 0x79, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x3a, 0x0a, - 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2e, 0x2f, 0x76, 0x31, 0x2f, - 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, - 0x65, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0xec, 0x01, 0x0a, 0x0f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x30, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, - 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x87, 0x01, 0xca, 0x41, 0x1e, 0x0a, 0x09, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0xda, 0x41, 0x16, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x47, 0x3a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x32, 0x39, - 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2e, - 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x72, - 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xce, 0x01, 0x0a, 0x0f, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x30, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, - 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6a, - 0xca, 0x41, 0x2a, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x2a, 0x2e, 0x2f, 0x76, 0x31, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, - 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xb4, 0x01, 0x0a, 0x0e, 0x4c, - 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x2f, 0x2e, + 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x20, 0x0a, + 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, + 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x42, 0x79, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x22, 0xbe, + 0x02, 0x0a, 0x13, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2b, 0x0a, 0x0f, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, + 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x0e, 0x6c, 0x69, 0x6e, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x46, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x5f, + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x56, 0x0a, 0x08, 0x73, + 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x3f, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x30, 0x12, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, - 0x73, 0x12, 0xa1, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, - 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xf1, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x70, 0x65, - 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, - 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8a, 0x01, 0xca, - 0x41, 0x1f, 0x0a, 0x0a, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0xda, 0x41, 0x21, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x61, 0x73, 0x70, 0x65, 0x63, - 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2c, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x3a, 0x0b, 0x61, 0x73, 0x70, - 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x61, 0x73, - 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0xf3, 0x01, 0x0a, 0x10, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, - 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x8c, 0x01, 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x17, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x3a, 0x0b, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x32, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, - 0x2f, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, - 0xd1, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6b, 0xca, 0x41, 0x2a, 0x0a, 0x15, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x31, 0x2a, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, - 0x2f, 0x2a, 0x7d, 0x12, 0xb8, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x70, 0x65, - 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, + 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x53, 0x6e, 0x69, + 0x70, 0x70, 0x65, 0x74, 0x73, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x73, 0x6e, 0x69, 0x70, 0x70, + 0x65, 0x74, 0x73, 0x1a, 0x5a, 0x0a, 0x08, 0x53, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x73, 0x12, + 0x4a, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x65, 0x6e, 0x74, 0x72, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x3a, 0x02, 0x18, 0x01, 0x22, + 0xc9, 0x01, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, + 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, + 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, + 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x72, + 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, + 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x22, 0xa1, 0x01, 0x0a, 0x0a, + 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, - 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0xda, 0x41, - 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, - 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x2a, 0x7d, 0x2f, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0xa5, - 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, - 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x70, 0x65, - 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3e, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, - 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xf1, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x31, 0x2e, 0x67, 0x6f, + 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, + 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x1f, + 0x0a, 0x0b, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x22, + 0x83, 0x02, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, + 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, + 0x4d, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6a, 0x6f, 0x62, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x12, 0x2b, + 0x0a, 0x0f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0d, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x58, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xe0, 0x41, + 0x02, 0xfa, 0x41, 0x25, 0x0a, 0x23, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, + 0xdf, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, + 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, + 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, + 0x79, 0x22, 0xc3, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, + 0x0a, 0x0d, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x52, 0x0c, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, + 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x12, 0x33, 0x0a, 0x15, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x14, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x5b, 0x0a, 0x18, 0x43, 0x61, 0x6e, 0x63, 0x65, + 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x2b, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x25, 0x0a, 0x23, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb3, 0x13, 0x0a, 0x0b, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x4a, 0x6f, 0x62, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1d, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xe0, + 0x41, 0x03, 0xe2, 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, + 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x12, 0x43, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x56, 0x0a, 0x0b, 0x69, 0x6d, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x4a, 0x6f, 0x62, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x70, + 0x65, 0x63, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x70, 0x65, 0x63, + 0x12, 0x62, 0x0a, 0x0d, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x18, 0xc8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x2e, + 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x0c, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x49, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, + 0xc1, 0x02, 0x0a, 0x0f, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x2c, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x65, + 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x12, 0x2c, 0x0a, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x0e, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, + 0x2c, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x30, 0x0a, + 0x11, 0x75, 0x6e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x10, 0x75, + 0x6e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, + 0x30, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x10, 0x72, 0x65, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x1a, 0xa3, 0x07, 0x0a, 0x0d, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4a, 0x6f, + 0x62, 0x53, 0x70, 0x65, 0x63, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x55, 0x72, 0x69, 0x12, 0x4d, 0x0a, 0x12, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x5d, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x2e, 0x49, 0x6d, + 0x70, 0x6f, 0x72, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x49, 0x6d, 0x70, 0x6f, + 0x72, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x69, 0x0a, 0x0f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, + 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4a, 0x6f, 0x62, + 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x0d, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x6b, 0x0a, 0x10, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, - 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8a, 0x01, - 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, + 0x6f, 0x62, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, + 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, + 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x5e, + 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4a, + 0x6f, 0x62, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0xfa, + 0x01, 0x0a, 0x0e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x63, 0x6f, 0x70, + 0x65, 0x12, 0x4d, 0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x24, 0x0a, + 0x22, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x12, 0x4a, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x4d, 0x0a, 0x0c, + 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x09, 0x42, 0x2a, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x24, 0x0a, 0x22, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, + 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x40, 0x0a, 0x08, 0x53, + 0x79, 0x6e, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x59, 0x4e, 0x43, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, + 0x49, 0x4e, 0x43, 0x52, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x41, 0x4c, 0x10, 0x02, 0x22, 0x3a, 0x0a, + 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x15, 0x4c, 0x4f, 0x47, + 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, + 0x08, 0x0a, 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x1a, 0xf9, 0x02, 0x0a, 0x06, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x4d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x32, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x50, + 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x05, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x51, 0x55, 0x45, + 0x55, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, + 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x49, 0x4e, 0x47, 0x10, + 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, + 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x05, 0x12, 0x0a, + 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x06, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x55, + 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x45, 0x52, 0x52, + 0x4f, 0x52, 0x53, 0x10, 0x07, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0x28, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, + 0x0a, 0x06, 0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x01, 0x3a, 0x6c, 0xea, 0x41, 0x69, 0x0a, + 0x23, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x4a, 0x6f, 0x62, 0x12, 0x42, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x7d, 0x42, 0x06, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, + 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2a, 0x51, 0x0a, 0x09, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x56, 0x69, 0x65, 0x77, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x5f, 0x56, 0x49, 0x45, 0x57, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x41, 0x53, 0x49, 0x43, 0x10, 0x01, 0x12, 0x08, + 0x0a, 0x04, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x55, 0x53, 0x54, + 0x4f, 0x4d, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x04, 0x2a, 0x70, 0x0a, + 0x0e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x1f, 0x0a, 0x1b, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x55, 0x53, 0x5f, 0x4d, 0x49, 0x47, 0x52, 0x41, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1f, + 0x0a, 0x1b, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, + 0x53, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x52, 0x45, 0x44, 0x10, 0x02, 0x32, + 0x95, 0x29, 0x0a, 0x0e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0xea, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x85, 0x01, 0xca, 0x41, 0x1e, 0x0a, 0x09, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x1f, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2c, + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x3c, 0x3a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, + 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, + 0xec, 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, + 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x87, 0x01, 0xca, 0x41, 0x1e, 0x0a, 0x09, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x16, 0x65, 0x6e, 0x74, 0x72, 0x79, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x3a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x32, 0x39, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, + 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xce, + 0x01, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, + 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x6a, 0xca, 0x41, 0x2a, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xda, 0x41, 0x21, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x65, 0x6e, 0x74, 0x72, - 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2c, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x3a, 0x0b, 0x65, 0x6e, - 0x74, 0x72, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, - 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0xf3, 0x01, 0x0a, 0x10, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x2a, + 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, + 0xb4, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, + 0x65, 0x73, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x6e, 0x74, 0x72, + 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0xa1, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, + 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3d, 0xda, 0x41, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, + 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xf1, 0x01, 0x0a, 0x10, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x8c, 0x01, 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x17, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x3a, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x32, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x6e, 0x22, 0x8a, 0x01, 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x21, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, + 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2c, 0x61, 0x73, 0x70, 0x65, + 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, + 0x3a, 0x0b, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x2f, 0x2f, + 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x7d, - 0x12, 0xd1, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6b, 0xca, 0x41, 0x2a, 0x0a, 0x15, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x31, 0x2a, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, + 0x2a, 0x7d, 0x2f, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0xf3, + 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8c, 0x01, 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x41, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x17, 0x61, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x3a, 0x0b, 0x61, 0x73, 0x70, 0x65, + 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x32, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x61, 0x73, + 0x70, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xb8, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0xda, - 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xd1, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, + 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, + 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x73, 0x70, 0x65, 0x63, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, + 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6b, 0xca, 0x41, 0x2a, + 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x2a, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xb8, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x70, 0x65, + 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, + 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x40, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x61, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x73, 0x12, 0xa5, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x41, 0x73, 0x70, 0x65, 0x63, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, + 0x2e, 0x41, 0x73, 0x70, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3e, 0xda, 0x41, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, + 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x61, 0x73, 0x70, + 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xf1, 0x01, 0x0a, 0x10, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, + 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x8a, 0x01, 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x21, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x2c, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2c, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x3e, 0x3a, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, - 0xa5, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x3e, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, - 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xbe, 0x01, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x60, 0xda, 0x41, 0x15, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x2c, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2c, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x69, 0x64, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x3a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x39, 0x2f, - 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x7d, - 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0xc1, 0x01, 0x0a, 0x0b, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0xf3, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8c, 0x01, 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x17, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x3a, 0x0b, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x32, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xd1, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, + 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6b, 0xca, 0x41, + 0x2a, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x2a, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, + 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xb8, 0x01, 0x0a, 0x0f, 0x4c, 0x69, + 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x30, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x40, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x12, 0xa5, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, - 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x63, 0xda, 0x41, 0x11, 0x65, 0x6e, 0x74, 0x72, - 0x79, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x49, 0x3a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x32, 0x40, 0x2f, 0x76, 0x31, 0x2f, - 0x7b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x2a, - 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x2a, 0x7d, 0x12, 0xa7, 0x01, 0x0a, - 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2c, 0x2e, 0x67, + 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x3e, 0xda, 0x41, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xbe, 0x01, 0x0a, + 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, + 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x49, 0xda, 0x41, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x2a, 0x3a, 0x2f, 0x76, 0x31, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, - 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x69, - 0x65, 0x73, 0x2f, 0x2a, 0x2a, 0x7d, 0x12, 0xb6, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x45, - 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x4a, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x3b, 0x12, 0x39, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, - 0xa1, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x29, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x49, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, - 0x2a, 0x2a, 0x7d, 0x12, 0x93, 0x01, 0x0a, 0x0b, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x6c, 0x6f, - 0x6f, 0x6b, 0x75, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0xb6, 0x01, 0x0a, 0x0d, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x67, 0x6f, + 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x60, 0xda, 0x41, 0x15, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2c, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x3a, 0x05, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x22, 0x39, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0xc1, 0x01, + 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, 0x6e, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f, + 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x63, 0xda, 0x41, + 0x11, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x3a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x32, + 0x40, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x2a, + 0x7d, 0x12, 0xa7, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x22, 0x49, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x2a, + 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x2f, + 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x2a, 0x7d, 0x12, 0xb6, 0x01, 0x0a, 0x0b, + 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, 0x6e, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0xda, 0x41, - 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x31, 0x22, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x69, - 0x65, 0x73, 0x1a, 0x4b, 0xca, 0x41, 0x17, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, - 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, - 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, - 0xbc, 0x01, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, + 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x12, 0x39, 0x2f, 0x76, 0x31, 0x2f, 0x7b, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x6e, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x12, 0xa1, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x49, 0xda, + 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x76, + 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x2f, 0x2a, 0x2a, 0x7d, 0x12, 0x93, 0x01, 0x0a, 0x0b, 0x4c, 0x6f, 0x6f, + 0x6b, 0x75, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, + 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, + 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x2a, 0x7d, 0x3a, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0xb6, + 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x44, 0xda, 0x41, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x22, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0xf8, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x12, 0x32, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, + 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x8f, 0x01, 0xca, 0x41, 0x20, 0x0a, 0x0b, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x4a, 0x6f, 0x62, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x23, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6a, 0x6f, 0x62, 0x2c, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x40, 0x3a, 0x0c, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6a, 0x6f, 0x62, + 0x22, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, + 0x62, 0x73, 0x12, 0xa9, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, - 0x42, 0x0c, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, - 0x5a, 0x38, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2f, 0x61, - 0x70, 0x69, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x70, 0x62, 0x3b, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x70, 0x62, 0xaa, 0x02, 0x18, 0x47, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x65, 0x78, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x18, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x5c, 0x56, 0x31, - 0xea, 0x02, 0x1b, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x3a, 0x3a, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x22, 0x3f, 0xda, + 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, 0x76, + 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xbc, + 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, + 0x6f, 0x62, 0x73, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, + 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0xda, 0x41, 0x06, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, 0x76, 0x31, + 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, + 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0xaa, 0x01, + 0x0a, 0x11, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x4a, 0x6f, 0x62, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, + 0x49, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x3a, 0x01, + 0x2a, 0x22, 0x37, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x2a, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x6f, 0x62, 0x73, + 0x2f, 0x2a, 0x7d, 0x3a, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x1a, 0x4b, 0xca, 0x41, 0x17, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0xbc, 0x01, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, + 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x65, 0x78, 0x70, 0x62, 0x3b, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, + 0x70, 0x62, 0xaa, 0x02, 0x18, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x18, + 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x44, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x65, 0x78, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x1b, 0x47, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x65, 0x78, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4756,173 +6353,217 @@ func file_google_cloud_dataplex_v1_catalog_proto_rawDescGZIP() []byte { return file_google_cloud_dataplex_v1_catalog_proto_rawDescData } -var file_google_cloud_dataplex_v1_catalog_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_google_cloud_dataplex_v1_catalog_proto_msgTypes = make([]protoimpl.MessageInfo, 49) +var file_google_cloud_dataplex_v1_catalog_proto_enumTypes = make([]protoimpl.EnumInfo, 6) +var file_google_cloud_dataplex_v1_catalog_proto_msgTypes = make([]protoimpl.MessageInfo, 61) var file_google_cloud_dataplex_v1_catalog_proto_goTypes = []any{ (EntryView)(0), // 0: google.cloud.dataplex.v1.EntryView (TransferStatus)(0), // 1: google.cloud.dataplex.v1.TransferStatus - (*AspectType)(nil), // 2: google.cloud.dataplex.v1.AspectType - (*EntryGroup)(nil), // 3: google.cloud.dataplex.v1.EntryGroup - (*EntryType)(nil), // 4: google.cloud.dataplex.v1.EntryType - (*Aspect)(nil), // 5: google.cloud.dataplex.v1.Aspect - (*AspectSource)(nil), // 6: google.cloud.dataplex.v1.AspectSource - (*Entry)(nil), // 7: google.cloud.dataplex.v1.Entry - (*EntrySource)(nil), // 8: google.cloud.dataplex.v1.EntrySource - (*CreateEntryGroupRequest)(nil), // 9: google.cloud.dataplex.v1.CreateEntryGroupRequest - (*UpdateEntryGroupRequest)(nil), // 10: google.cloud.dataplex.v1.UpdateEntryGroupRequest - (*DeleteEntryGroupRequest)(nil), // 11: google.cloud.dataplex.v1.DeleteEntryGroupRequest - (*ListEntryGroupsRequest)(nil), // 12: google.cloud.dataplex.v1.ListEntryGroupsRequest - (*ListEntryGroupsResponse)(nil), // 13: google.cloud.dataplex.v1.ListEntryGroupsResponse - (*GetEntryGroupRequest)(nil), // 14: google.cloud.dataplex.v1.GetEntryGroupRequest - (*CreateEntryTypeRequest)(nil), // 15: google.cloud.dataplex.v1.CreateEntryTypeRequest - (*UpdateEntryTypeRequest)(nil), // 16: google.cloud.dataplex.v1.UpdateEntryTypeRequest - (*DeleteEntryTypeRequest)(nil), // 17: google.cloud.dataplex.v1.DeleteEntryTypeRequest - (*ListEntryTypesRequest)(nil), // 18: google.cloud.dataplex.v1.ListEntryTypesRequest - (*ListEntryTypesResponse)(nil), // 19: google.cloud.dataplex.v1.ListEntryTypesResponse - (*GetEntryTypeRequest)(nil), // 20: google.cloud.dataplex.v1.GetEntryTypeRequest - (*CreateAspectTypeRequest)(nil), // 21: google.cloud.dataplex.v1.CreateAspectTypeRequest - (*UpdateAspectTypeRequest)(nil), // 22: google.cloud.dataplex.v1.UpdateAspectTypeRequest - (*DeleteAspectTypeRequest)(nil), // 23: google.cloud.dataplex.v1.DeleteAspectTypeRequest - (*ListAspectTypesRequest)(nil), // 24: google.cloud.dataplex.v1.ListAspectTypesRequest - (*ListAspectTypesResponse)(nil), // 25: google.cloud.dataplex.v1.ListAspectTypesResponse - (*GetAspectTypeRequest)(nil), // 26: google.cloud.dataplex.v1.GetAspectTypeRequest - (*CreateEntryRequest)(nil), // 27: google.cloud.dataplex.v1.CreateEntryRequest - (*UpdateEntryRequest)(nil), // 28: google.cloud.dataplex.v1.UpdateEntryRequest - (*DeleteEntryRequest)(nil), // 29: google.cloud.dataplex.v1.DeleteEntryRequest - (*ListEntriesRequest)(nil), // 30: google.cloud.dataplex.v1.ListEntriesRequest - (*ListEntriesResponse)(nil), // 31: google.cloud.dataplex.v1.ListEntriesResponse - (*GetEntryRequest)(nil), // 32: google.cloud.dataplex.v1.GetEntryRequest - (*LookupEntryRequest)(nil), // 33: google.cloud.dataplex.v1.LookupEntryRequest - (*SearchEntriesRequest)(nil), // 34: google.cloud.dataplex.v1.SearchEntriesRequest - (*SearchEntriesResult)(nil), // 35: google.cloud.dataplex.v1.SearchEntriesResult - (*SearchEntriesResponse)(nil), // 36: google.cloud.dataplex.v1.SearchEntriesResponse - (*AspectType_Authorization)(nil), // 37: google.cloud.dataplex.v1.AspectType.Authorization - (*AspectType_MetadataTemplate)(nil), // 38: google.cloud.dataplex.v1.AspectType.MetadataTemplate - nil, // 39: google.cloud.dataplex.v1.AspectType.LabelsEntry - (*AspectType_MetadataTemplate_EnumValue)(nil), // 40: google.cloud.dataplex.v1.AspectType.MetadataTemplate.EnumValue - (*AspectType_MetadataTemplate_Constraints)(nil), // 41: google.cloud.dataplex.v1.AspectType.MetadataTemplate.Constraints - (*AspectType_MetadataTemplate_Annotations)(nil), // 42: google.cloud.dataplex.v1.AspectType.MetadataTemplate.Annotations - nil, // 43: google.cloud.dataplex.v1.EntryGroup.LabelsEntry - (*EntryType_AspectInfo)(nil), // 44: google.cloud.dataplex.v1.EntryType.AspectInfo - (*EntryType_Authorization)(nil), // 45: google.cloud.dataplex.v1.EntryType.Authorization - nil, // 46: google.cloud.dataplex.v1.EntryType.LabelsEntry - nil, // 47: google.cloud.dataplex.v1.Entry.AspectsEntry - (*EntrySource_Ancestor)(nil), // 48: google.cloud.dataplex.v1.EntrySource.Ancestor - nil, // 49: google.cloud.dataplex.v1.EntrySource.LabelsEntry - (*SearchEntriesResult_Snippets)(nil), // 50: google.cloud.dataplex.v1.SearchEntriesResult.Snippets - (*timestamppb.Timestamp)(nil), // 51: google.protobuf.Timestamp - (*structpb.Struct)(nil), // 52: google.protobuf.Struct - (*fieldmaskpb.FieldMask)(nil), // 53: google.protobuf.FieldMask - (*longrunningpb.Operation)(nil), // 54: google.longrunning.Operation + (MetadataJob_Type)(0), // 2: google.cloud.dataplex.v1.MetadataJob.Type + (MetadataJob_ImportJobSpec_SyncMode)(0), // 3: google.cloud.dataplex.v1.MetadataJob.ImportJobSpec.SyncMode + (MetadataJob_ImportJobSpec_LogLevel)(0), // 4: google.cloud.dataplex.v1.MetadataJob.ImportJobSpec.LogLevel + (MetadataJob_Status_State)(0), // 5: google.cloud.dataplex.v1.MetadataJob.Status.State + (*AspectType)(nil), // 6: google.cloud.dataplex.v1.AspectType + (*EntryGroup)(nil), // 7: google.cloud.dataplex.v1.EntryGroup + (*EntryType)(nil), // 8: google.cloud.dataplex.v1.EntryType + (*Aspect)(nil), // 9: google.cloud.dataplex.v1.Aspect + (*AspectSource)(nil), // 10: google.cloud.dataplex.v1.AspectSource + (*Entry)(nil), // 11: google.cloud.dataplex.v1.Entry + (*EntrySource)(nil), // 12: google.cloud.dataplex.v1.EntrySource + (*CreateEntryGroupRequest)(nil), // 13: google.cloud.dataplex.v1.CreateEntryGroupRequest + (*UpdateEntryGroupRequest)(nil), // 14: google.cloud.dataplex.v1.UpdateEntryGroupRequest + (*DeleteEntryGroupRequest)(nil), // 15: google.cloud.dataplex.v1.DeleteEntryGroupRequest + (*ListEntryGroupsRequest)(nil), // 16: google.cloud.dataplex.v1.ListEntryGroupsRequest + (*ListEntryGroupsResponse)(nil), // 17: google.cloud.dataplex.v1.ListEntryGroupsResponse + (*GetEntryGroupRequest)(nil), // 18: google.cloud.dataplex.v1.GetEntryGroupRequest + (*CreateEntryTypeRequest)(nil), // 19: google.cloud.dataplex.v1.CreateEntryTypeRequest + (*UpdateEntryTypeRequest)(nil), // 20: google.cloud.dataplex.v1.UpdateEntryTypeRequest + (*DeleteEntryTypeRequest)(nil), // 21: google.cloud.dataplex.v1.DeleteEntryTypeRequest + (*ListEntryTypesRequest)(nil), // 22: google.cloud.dataplex.v1.ListEntryTypesRequest + (*ListEntryTypesResponse)(nil), // 23: google.cloud.dataplex.v1.ListEntryTypesResponse + (*GetEntryTypeRequest)(nil), // 24: google.cloud.dataplex.v1.GetEntryTypeRequest + (*CreateAspectTypeRequest)(nil), // 25: google.cloud.dataplex.v1.CreateAspectTypeRequest + (*UpdateAspectTypeRequest)(nil), // 26: google.cloud.dataplex.v1.UpdateAspectTypeRequest + (*DeleteAspectTypeRequest)(nil), // 27: google.cloud.dataplex.v1.DeleteAspectTypeRequest + (*ListAspectTypesRequest)(nil), // 28: google.cloud.dataplex.v1.ListAspectTypesRequest + (*ListAspectTypesResponse)(nil), // 29: google.cloud.dataplex.v1.ListAspectTypesResponse + (*GetAspectTypeRequest)(nil), // 30: google.cloud.dataplex.v1.GetAspectTypeRequest + (*CreateEntryRequest)(nil), // 31: google.cloud.dataplex.v1.CreateEntryRequest + (*UpdateEntryRequest)(nil), // 32: google.cloud.dataplex.v1.UpdateEntryRequest + (*DeleteEntryRequest)(nil), // 33: google.cloud.dataplex.v1.DeleteEntryRequest + (*ListEntriesRequest)(nil), // 34: google.cloud.dataplex.v1.ListEntriesRequest + (*ListEntriesResponse)(nil), // 35: google.cloud.dataplex.v1.ListEntriesResponse + (*GetEntryRequest)(nil), // 36: google.cloud.dataplex.v1.GetEntryRequest + (*LookupEntryRequest)(nil), // 37: google.cloud.dataplex.v1.LookupEntryRequest + (*SearchEntriesRequest)(nil), // 38: google.cloud.dataplex.v1.SearchEntriesRequest + (*SearchEntriesResult)(nil), // 39: google.cloud.dataplex.v1.SearchEntriesResult + (*SearchEntriesResponse)(nil), // 40: google.cloud.dataplex.v1.SearchEntriesResponse + (*ImportItem)(nil), // 41: google.cloud.dataplex.v1.ImportItem + (*CreateMetadataJobRequest)(nil), // 42: google.cloud.dataplex.v1.CreateMetadataJobRequest + (*GetMetadataJobRequest)(nil), // 43: google.cloud.dataplex.v1.GetMetadataJobRequest + (*ListMetadataJobsRequest)(nil), // 44: google.cloud.dataplex.v1.ListMetadataJobsRequest + (*ListMetadataJobsResponse)(nil), // 45: google.cloud.dataplex.v1.ListMetadataJobsResponse + (*CancelMetadataJobRequest)(nil), // 46: google.cloud.dataplex.v1.CancelMetadataJobRequest + (*MetadataJob)(nil), // 47: google.cloud.dataplex.v1.MetadataJob + (*AspectType_Authorization)(nil), // 48: google.cloud.dataplex.v1.AspectType.Authorization + (*AspectType_MetadataTemplate)(nil), // 49: google.cloud.dataplex.v1.AspectType.MetadataTemplate + nil, // 50: google.cloud.dataplex.v1.AspectType.LabelsEntry + (*AspectType_MetadataTemplate_EnumValue)(nil), // 51: google.cloud.dataplex.v1.AspectType.MetadataTemplate.EnumValue + (*AspectType_MetadataTemplate_Constraints)(nil), // 52: google.cloud.dataplex.v1.AspectType.MetadataTemplate.Constraints + (*AspectType_MetadataTemplate_Annotations)(nil), // 53: google.cloud.dataplex.v1.AspectType.MetadataTemplate.Annotations + nil, // 54: google.cloud.dataplex.v1.EntryGroup.LabelsEntry + (*EntryType_AspectInfo)(nil), // 55: google.cloud.dataplex.v1.EntryType.AspectInfo + (*EntryType_Authorization)(nil), // 56: google.cloud.dataplex.v1.EntryType.Authorization + nil, // 57: google.cloud.dataplex.v1.EntryType.LabelsEntry + nil, // 58: google.cloud.dataplex.v1.Entry.AspectsEntry + (*EntrySource_Ancestor)(nil), // 59: google.cloud.dataplex.v1.EntrySource.Ancestor + nil, // 60: google.cloud.dataplex.v1.EntrySource.LabelsEntry + (*SearchEntriesResult_Snippets)(nil), // 61: google.cloud.dataplex.v1.SearchEntriesResult.Snippets + (*MetadataJob_ImportJobResult)(nil), // 62: google.cloud.dataplex.v1.MetadataJob.ImportJobResult + (*MetadataJob_ImportJobSpec)(nil), // 63: google.cloud.dataplex.v1.MetadataJob.ImportJobSpec + (*MetadataJob_Status)(nil), // 64: google.cloud.dataplex.v1.MetadataJob.Status + nil, // 65: google.cloud.dataplex.v1.MetadataJob.LabelsEntry + (*MetadataJob_ImportJobSpec_ImportJobScope)(nil), // 66: google.cloud.dataplex.v1.MetadataJob.ImportJobSpec.ImportJobScope + (*timestamppb.Timestamp)(nil), // 67: google.protobuf.Timestamp + (*structpb.Struct)(nil), // 68: google.protobuf.Struct + (*fieldmaskpb.FieldMask)(nil), // 69: google.protobuf.FieldMask + (*longrunningpb.Operation)(nil), // 70: google.longrunning.Operation + (*emptypb.Empty)(nil), // 71: google.protobuf.Empty } var file_google_cloud_dataplex_v1_catalog_proto_depIdxs = []int32{ - 51, // 0: google.cloud.dataplex.v1.AspectType.create_time:type_name -> google.protobuf.Timestamp - 51, // 1: google.cloud.dataplex.v1.AspectType.update_time:type_name -> google.protobuf.Timestamp - 39, // 2: google.cloud.dataplex.v1.AspectType.labels:type_name -> google.cloud.dataplex.v1.AspectType.LabelsEntry - 37, // 3: google.cloud.dataplex.v1.AspectType.authorization:type_name -> google.cloud.dataplex.v1.AspectType.Authorization - 38, // 4: google.cloud.dataplex.v1.AspectType.metadata_template:type_name -> google.cloud.dataplex.v1.AspectType.MetadataTemplate - 1, // 5: google.cloud.dataplex.v1.AspectType.transfer_status:type_name -> google.cloud.dataplex.v1.TransferStatus - 51, // 6: google.cloud.dataplex.v1.EntryGroup.create_time:type_name -> google.protobuf.Timestamp - 51, // 7: google.cloud.dataplex.v1.EntryGroup.update_time:type_name -> google.protobuf.Timestamp - 43, // 8: google.cloud.dataplex.v1.EntryGroup.labels:type_name -> google.cloud.dataplex.v1.EntryGroup.LabelsEntry - 1, // 9: google.cloud.dataplex.v1.EntryGroup.transfer_status:type_name -> google.cloud.dataplex.v1.TransferStatus - 51, // 10: google.cloud.dataplex.v1.EntryType.create_time:type_name -> google.protobuf.Timestamp - 51, // 11: google.cloud.dataplex.v1.EntryType.update_time:type_name -> google.protobuf.Timestamp - 46, // 12: google.cloud.dataplex.v1.EntryType.labels:type_name -> google.cloud.dataplex.v1.EntryType.LabelsEntry - 44, // 13: google.cloud.dataplex.v1.EntryType.required_aspects:type_name -> google.cloud.dataplex.v1.EntryType.AspectInfo - 45, // 14: google.cloud.dataplex.v1.EntryType.authorization:type_name -> google.cloud.dataplex.v1.EntryType.Authorization - 51, // 15: google.cloud.dataplex.v1.Aspect.create_time:type_name -> google.protobuf.Timestamp - 51, // 16: google.cloud.dataplex.v1.Aspect.update_time:type_name -> google.protobuf.Timestamp - 52, // 17: google.cloud.dataplex.v1.Aspect.data:type_name -> google.protobuf.Struct - 6, // 18: google.cloud.dataplex.v1.Aspect.aspect_source:type_name -> google.cloud.dataplex.v1.AspectSource - 51, // 19: google.cloud.dataplex.v1.AspectSource.create_time:type_name -> google.protobuf.Timestamp - 51, // 20: google.cloud.dataplex.v1.AspectSource.update_time:type_name -> google.protobuf.Timestamp - 51, // 21: google.cloud.dataplex.v1.Entry.create_time:type_name -> google.protobuf.Timestamp - 51, // 22: google.cloud.dataplex.v1.Entry.update_time:type_name -> google.protobuf.Timestamp - 47, // 23: google.cloud.dataplex.v1.Entry.aspects:type_name -> google.cloud.dataplex.v1.Entry.AspectsEntry - 8, // 24: google.cloud.dataplex.v1.Entry.entry_source:type_name -> google.cloud.dataplex.v1.EntrySource - 49, // 25: google.cloud.dataplex.v1.EntrySource.labels:type_name -> google.cloud.dataplex.v1.EntrySource.LabelsEntry - 48, // 26: google.cloud.dataplex.v1.EntrySource.ancestors:type_name -> google.cloud.dataplex.v1.EntrySource.Ancestor - 51, // 27: google.cloud.dataplex.v1.EntrySource.create_time:type_name -> google.protobuf.Timestamp - 51, // 28: google.cloud.dataplex.v1.EntrySource.update_time:type_name -> google.protobuf.Timestamp - 3, // 29: google.cloud.dataplex.v1.CreateEntryGroupRequest.entry_group:type_name -> google.cloud.dataplex.v1.EntryGroup - 3, // 30: google.cloud.dataplex.v1.UpdateEntryGroupRequest.entry_group:type_name -> google.cloud.dataplex.v1.EntryGroup - 53, // 31: google.cloud.dataplex.v1.UpdateEntryGroupRequest.update_mask:type_name -> google.protobuf.FieldMask - 3, // 32: google.cloud.dataplex.v1.ListEntryGroupsResponse.entry_groups:type_name -> google.cloud.dataplex.v1.EntryGroup - 4, // 33: google.cloud.dataplex.v1.CreateEntryTypeRequest.entry_type:type_name -> google.cloud.dataplex.v1.EntryType - 4, // 34: google.cloud.dataplex.v1.UpdateEntryTypeRequest.entry_type:type_name -> google.cloud.dataplex.v1.EntryType - 53, // 35: google.cloud.dataplex.v1.UpdateEntryTypeRequest.update_mask:type_name -> google.protobuf.FieldMask - 4, // 36: google.cloud.dataplex.v1.ListEntryTypesResponse.entry_types:type_name -> google.cloud.dataplex.v1.EntryType - 2, // 37: google.cloud.dataplex.v1.CreateAspectTypeRequest.aspect_type:type_name -> google.cloud.dataplex.v1.AspectType - 2, // 38: google.cloud.dataplex.v1.UpdateAspectTypeRequest.aspect_type:type_name -> google.cloud.dataplex.v1.AspectType - 53, // 39: google.cloud.dataplex.v1.UpdateAspectTypeRequest.update_mask:type_name -> google.protobuf.FieldMask - 2, // 40: google.cloud.dataplex.v1.ListAspectTypesResponse.aspect_types:type_name -> google.cloud.dataplex.v1.AspectType - 7, // 41: google.cloud.dataplex.v1.CreateEntryRequest.entry:type_name -> google.cloud.dataplex.v1.Entry - 7, // 42: google.cloud.dataplex.v1.UpdateEntryRequest.entry:type_name -> google.cloud.dataplex.v1.Entry - 53, // 43: google.cloud.dataplex.v1.UpdateEntryRequest.update_mask:type_name -> google.protobuf.FieldMask - 7, // 44: google.cloud.dataplex.v1.ListEntriesResponse.entries:type_name -> google.cloud.dataplex.v1.Entry - 0, // 45: google.cloud.dataplex.v1.GetEntryRequest.view:type_name -> google.cloud.dataplex.v1.EntryView - 0, // 46: google.cloud.dataplex.v1.LookupEntryRequest.view:type_name -> google.cloud.dataplex.v1.EntryView - 7, // 47: google.cloud.dataplex.v1.SearchEntriesResult.dataplex_entry:type_name -> google.cloud.dataplex.v1.Entry - 50, // 48: google.cloud.dataplex.v1.SearchEntriesResult.snippets:type_name -> google.cloud.dataplex.v1.SearchEntriesResult.Snippets - 35, // 49: google.cloud.dataplex.v1.SearchEntriesResponse.results:type_name -> google.cloud.dataplex.v1.SearchEntriesResult - 38, // 50: google.cloud.dataplex.v1.AspectType.MetadataTemplate.record_fields:type_name -> google.cloud.dataplex.v1.AspectType.MetadataTemplate - 40, // 51: google.cloud.dataplex.v1.AspectType.MetadataTemplate.enum_values:type_name -> google.cloud.dataplex.v1.AspectType.MetadataTemplate.EnumValue - 38, // 52: google.cloud.dataplex.v1.AspectType.MetadataTemplate.map_items:type_name -> google.cloud.dataplex.v1.AspectType.MetadataTemplate - 38, // 53: google.cloud.dataplex.v1.AspectType.MetadataTemplate.array_items:type_name -> google.cloud.dataplex.v1.AspectType.MetadataTemplate - 41, // 54: google.cloud.dataplex.v1.AspectType.MetadataTemplate.constraints:type_name -> google.cloud.dataplex.v1.AspectType.MetadataTemplate.Constraints - 42, // 55: google.cloud.dataplex.v1.AspectType.MetadataTemplate.annotations:type_name -> google.cloud.dataplex.v1.AspectType.MetadataTemplate.Annotations - 5, // 56: google.cloud.dataplex.v1.Entry.AspectsEntry.value:type_name -> google.cloud.dataplex.v1.Aspect - 7, // 57: google.cloud.dataplex.v1.SearchEntriesResult.Snippets.dataplex_entry:type_name -> google.cloud.dataplex.v1.Entry - 15, // 58: google.cloud.dataplex.v1.CatalogService.CreateEntryType:input_type -> google.cloud.dataplex.v1.CreateEntryTypeRequest - 16, // 59: google.cloud.dataplex.v1.CatalogService.UpdateEntryType:input_type -> google.cloud.dataplex.v1.UpdateEntryTypeRequest - 17, // 60: google.cloud.dataplex.v1.CatalogService.DeleteEntryType:input_type -> google.cloud.dataplex.v1.DeleteEntryTypeRequest - 18, // 61: google.cloud.dataplex.v1.CatalogService.ListEntryTypes:input_type -> google.cloud.dataplex.v1.ListEntryTypesRequest - 20, // 62: google.cloud.dataplex.v1.CatalogService.GetEntryType:input_type -> google.cloud.dataplex.v1.GetEntryTypeRequest - 21, // 63: google.cloud.dataplex.v1.CatalogService.CreateAspectType:input_type -> google.cloud.dataplex.v1.CreateAspectTypeRequest - 22, // 64: google.cloud.dataplex.v1.CatalogService.UpdateAspectType:input_type -> google.cloud.dataplex.v1.UpdateAspectTypeRequest - 23, // 65: google.cloud.dataplex.v1.CatalogService.DeleteAspectType:input_type -> google.cloud.dataplex.v1.DeleteAspectTypeRequest - 24, // 66: google.cloud.dataplex.v1.CatalogService.ListAspectTypes:input_type -> google.cloud.dataplex.v1.ListAspectTypesRequest - 26, // 67: google.cloud.dataplex.v1.CatalogService.GetAspectType:input_type -> google.cloud.dataplex.v1.GetAspectTypeRequest - 9, // 68: google.cloud.dataplex.v1.CatalogService.CreateEntryGroup:input_type -> google.cloud.dataplex.v1.CreateEntryGroupRequest - 10, // 69: google.cloud.dataplex.v1.CatalogService.UpdateEntryGroup:input_type -> google.cloud.dataplex.v1.UpdateEntryGroupRequest - 11, // 70: google.cloud.dataplex.v1.CatalogService.DeleteEntryGroup:input_type -> google.cloud.dataplex.v1.DeleteEntryGroupRequest - 12, // 71: google.cloud.dataplex.v1.CatalogService.ListEntryGroups:input_type -> google.cloud.dataplex.v1.ListEntryGroupsRequest - 14, // 72: google.cloud.dataplex.v1.CatalogService.GetEntryGroup:input_type -> google.cloud.dataplex.v1.GetEntryGroupRequest - 27, // 73: google.cloud.dataplex.v1.CatalogService.CreateEntry:input_type -> google.cloud.dataplex.v1.CreateEntryRequest - 28, // 74: google.cloud.dataplex.v1.CatalogService.UpdateEntry:input_type -> google.cloud.dataplex.v1.UpdateEntryRequest - 29, // 75: google.cloud.dataplex.v1.CatalogService.DeleteEntry:input_type -> google.cloud.dataplex.v1.DeleteEntryRequest - 30, // 76: google.cloud.dataplex.v1.CatalogService.ListEntries:input_type -> google.cloud.dataplex.v1.ListEntriesRequest - 32, // 77: google.cloud.dataplex.v1.CatalogService.GetEntry:input_type -> google.cloud.dataplex.v1.GetEntryRequest - 33, // 78: google.cloud.dataplex.v1.CatalogService.LookupEntry:input_type -> google.cloud.dataplex.v1.LookupEntryRequest - 34, // 79: google.cloud.dataplex.v1.CatalogService.SearchEntries:input_type -> google.cloud.dataplex.v1.SearchEntriesRequest - 54, // 80: google.cloud.dataplex.v1.CatalogService.CreateEntryType:output_type -> google.longrunning.Operation - 54, // 81: google.cloud.dataplex.v1.CatalogService.UpdateEntryType:output_type -> google.longrunning.Operation - 54, // 82: google.cloud.dataplex.v1.CatalogService.DeleteEntryType:output_type -> google.longrunning.Operation - 19, // 83: google.cloud.dataplex.v1.CatalogService.ListEntryTypes:output_type -> google.cloud.dataplex.v1.ListEntryTypesResponse - 4, // 84: google.cloud.dataplex.v1.CatalogService.GetEntryType:output_type -> google.cloud.dataplex.v1.EntryType - 54, // 85: google.cloud.dataplex.v1.CatalogService.CreateAspectType:output_type -> google.longrunning.Operation - 54, // 86: google.cloud.dataplex.v1.CatalogService.UpdateAspectType:output_type -> google.longrunning.Operation - 54, // 87: google.cloud.dataplex.v1.CatalogService.DeleteAspectType:output_type -> google.longrunning.Operation - 25, // 88: google.cloud.dataplex.v1.CatalogService.ListAspectTypes:output_type -> google.cloud.dataplex.v1.ListAspectTypesResponse - 2, // 89: google.cloud.dataplex.v1.CatalogService.GetAspectType:output_type -> google.cloud.dataplex.v1.AspectType - 54, // 90: google.cloud.dataplex.v1.CatalogService.CreateEntryGroup:output_type -> google.longrunning.Operation - 54, // 91: google.cloud.dataplex.v1.CatalogService.UpdateEntryGroup:output_type -> google.longrunning.Operation - 54, // 92: google.cloud.dataplex.v1.CatalogService.DeleteEntryGroup:output_type -> google.longrunning.Operation - 13, // 93: google.cloud.dataplex.v1.CatalogService.ListEntryGroups:output_type -> google.cloud.dataplex.v1.ListEntryGroupsResponse - 3, // 94: google.cloud.dataplex.v1.CatalogService.GetEntryGroup:output_type -> google.cloud.dataplex.v1.EntryGroup - 7, // 95: google.cloud.dataplex.v1.CatalogService.CreateEntry:output_type -> google.cloud.dataplex.v1.Entry - 7, // 96: google.cloud.dataplex.v1.CatalogService.UpdateEntry:output_type -> google.cloud.dataplex.v1.Entry - 7, // 97: google.cloud.dataplex.v1.CatalogService.DeleteEntry:output_type -> google.cloud.dataplex.v1.Entry - 31, // 98: google.cloud.dataplex.v1.CatalogService.ListEntries:output_type -> google.cloud.dataplex.v1.ListEntriesResponse - 7, // 99: google.cloud.dataplex.v1.CatalogService.GetEntry:output_type -> google.cloud.dataplex.v1.Entry - 7, // 100: google.cloud.dataplex.v1.CatalogService.LookupEntry:output_type -> google.cloud.dataplex.v1.Entry - 36, // 101: google.cloud.dataplex.v1.CatalogService.SearchEntries:output_type -> google.cloud.dataplex.v1.SearchEntriesResponse - 80, // [80:102] is the sub-list for method output_type - 58, // [58:80] is the sub-list for method input_type - 58, // [58:58] is the sub-list for extension type_name - 58, // [58:58] is the sub-list for extension extendee - 0, // [0:58] is the sub-list for field type_name + 67, // 0: google.cloud.dataplex.v1.AspectType.create_time:type_name -> google.protobuf.Timestamp + 67, // 1: google.cloud.dataplex.v1.AspectType.update_time:type_name -> google.protobuf.Timestamp + 50, // 2: google.cloud.dataplex.v1.AspectType.labels:type_name -> google.cloud.dataplex.v1.AspectType.LabelsEntry + 48, // 3: google.cloud.dataplex.v1.AspectType.authorization:type_name -> google.cloud.dataplex.v1.AspectType.Authorization + 49, // 4: google.cloud.dataplex.v1.AspectType.metadata_template:type_name -> google.cloud.dataplex.v1.AspectType.MetadataTemplate + 1, // 5: google.cloud.dataplex.v1.AspectType.transfer_status:type_name -> google.cloud.dataplex.v1.TransferStatus + 67, // 6: google.cloud.dataplex.v1.EntryGroup.create_time:type_name -> google.protobuf.Timestamp + 67, // 7: google.cloud.dataplex.v1.EntryGroup.update_time:type_name -> google.protobuf.Timestamp + 54, // 8: google.cloud.dataplex.v1.EntryGroup.labels:type_name -> google.cloud.dataplex.v1.EntryGroup.LabelsEntry + 1, // 9: google.cloud.dataplex.v1.EntryGroup.transfer_status:type_name -> google.cloud.dataplex.v1.TransferStatus + 67, // 10: google.cloud.dataplex.v1.EntryType.create_time:type_name -> google.protobuf.Timestamp + 67, // 11: google.cloud.dataplex.v1.EntryType.update_time:type_name -> google.protobuf.Timestamp + 57, // 12: google.cloud.dataplex.v1.EntryType.labels:type_name -> google.cloud.dataplex.v1.EntryType.LabelsEntry + 55, // 13: google.cloud.dataplex.v1.EntryType.required_aspects:type_name -> google.cloud.dataplex.v1.EntryType.AspectInfo + 56, // 14: google.cloud.dataplex.v1.EntryType.authorization:type_name -> google.cloud.dataplex.v1.EntryType.Authorization + 67, // 15: google.cloud.dataplex.v1.Aspect.create_time:type_name -> google.protobuf.Timestamp + 67, // 16: google.cloud.dataplex.v1.Aspect.update_time:type_name -> google.protobuf.Timestamp + 68, // 17: google.cloud.dataplex.v1.Aspect.data:type_name -> google.protobuf.Struct + 10, // 18: google.cloud.dataplex.v1.Aspect.aspect_source:type_name -> google.cloud.dataplex.v1.AspectSource + 67, // 19: google.cloud.dataplex.v1.AspectSource.create_time:type_name -> google.protobuf.Timestamp + 67, // 20: google.cloud.dataplex.v1.AspectSource.update_time:type_name -> google.protobuf.Timestamp + 67, // 21: google.cloud.dataplex.v1.Entry.create_time:type_name -> google.protobuf.Timestamp + 67, // 22: google.cloud.dataplex.v1.Entry.update_time:type_name -> google.protobuf.Timestamp + 58, // 23: google.cloud.dataplex.v1.Entry.aspects:type_name -> google.cloud.dataplex.v1.Entry.AspectsEntry + 12, // 24: google.cloud.dataplex.v1.Entry.entry_source:type_name -> google.cloud.dataplex.v1.EntrySource + 60, // 25: google.cloud.dataplex.v1.EntrySource.labels:type_name -> google.cloud.dataplex.v1.EntrySource.LabelsEntry + 59, // 26: google.cloud.dataplex.v1.EntrySource.ancestors:type_name -> google.cloud.dataplex.v1.EntrySource.Ancestor + 67, // 27: google.cloud.dataplex.v1.EntrySource.create_time:type_name -> google.protobuf.Timestamp + 67, // 28: google.cloud.dataplex.v1.EntrySource.update_time:type_name -> google.protobuf.Timestamp + 7, // 29: google.cloud.dataplex.v1.CreateEntryGroupRequest.entry_group:type_name -> google.cloud.dataplex.v1.EntryGroup + 7, // 30: google.cloud.dataplex.v1.UpdateEntryGroupRequest.entry_group:type_name -> google.cloud.dataplex.v1.EntryGroup + 69, // 31: google.cloud.dataplex.v1.UpdateEntryGroupRequest.update_mask:type_name -> google.protobuf.FieldMask + 7, // 32: google.cloud.dataplex.v1.ListEntryGroupsResponse.entry_groups:type_name -> google.cloud.dataplex.v1.EntryGroup + 8, // 33: google.cloud.dataplex.v1.CreateEntryTypeRequest.entry_type:type_name -> google.cloud.dataplex.v1.EntryType + 8, // 34: google.cloud.dataplex.v1.UpdateEntryTypeRequest.entry_type:type_name -> google.cloud.dataplex.v1.EntryType + 69, // 35: google.cloud.dataplex.v1.UpdateEntryTypeRequest.update_mask:type_name -> google.protobuf.FieldMask + 8, // 36: google.cloud.dataplex.v1.ListEntryTypesResponse.entry_types:type_name -> google.cloud.dataplex.v1.EntryType + 6, // 37: google.cloud.dataplex.v1.CreateAspectTypeRequest.aspect_type:type_name -> google.cloud.dataplex.v1.AspectType + 6, // 38: google.cloud.dataplex.v1.UpdateAspectTypeRequest.aspect_type:type_name -> google.cloud.dataplex.v1.AspectType + 69, // 39: google.cloud.dataplex.v1.UpdateAspectTypeRequest.update_mask:type_name -> google.protobuf.FieldMask + 6, // 40: google.cloud.dataplex.v1.ListAspectTypesResponse.aspect_types:type_name -> google.cloud.dataplex.v1.AspectType + 11, // 41: google.cloud.dataplex.v1.CreateEntryRequest.entry:type_name -> google.cloud.dataplex.v1.Entry + 11, // 42: google.cloud.dataplex.v1.UpdateEntryRequest.entry:type_name -> google.cloud.dataplex.v1.Entry + 69, // 43: google.cloud.dataplex.v1.UpdateEntryRequest.update_mask:type_name -> google.protobuf.FieldMask + 11, // 44: google.cloud.dataplex.v1.ListEntriesResponse.entries:type_name -> google.cloud.dataplex.v1.Entry + 0, // 45: google.cloud.dataplex.v1.GetEntryRequest.view:type_name -> google.cloud.dataplex.v1.EntryView + 0, // 46: google.cloud.dataplex.v1.LookupEntryRequest.view:type_name -> google.cloud.dataplex.v1.EntryView + 11, // 47: google.cloud.dataplex.v1.SearchEntriesResult.dataplex_entry:type_name -> google.cloud.dataplex.v1.Entry + 61, // 48: google.cloud.dataplex.v1.SearchEntriesResult.snippets:type_name -> google.cloud.dataplex.v1.SearchEntriesResult.Snippets + 39, // 49: google.cloud.dataplex.v1.SearchEntriesResponse.results:type_name -> google.cloud.dataplex.v1.SearchEntriesResult + 11, // 50: google.cloud.dataplex.v1.ImportItem.entry:type_name -> google.cloud.dataplex.v1.Entry + 69, // 51: google.cloud.dataplex.v1.ImportItem.update_mask:type_name -> google.protobuf.FieldMask + 47, // 52: google.cloud.dataplex.v1.CreateMetadataJobRequest.metadata_job:type_name -> google.cloud.dataplex.v1.MetadataJob + 47, // 53: google.cloud.dataplex.v1.ListMetadataJobsResponse.metadata_jobs:type_name -> google.cloud.dataplex.v1.MetadataJob + 67, // 54: google.cloud.dataplex.v1.MetadataJob.create_time:type_name -> google.protobuf.Timestamp + 67, // 55: google.cloud.dataplex.v1.MetadataJob.update_time:type_name -> google.protobuf.Timestamp + 65, // 56: google.cloud.dataplex.v1.MetadataJob.labels:type_name -> google.cloud.dataplex.v1.MetadataJob.LabelsEntry + 2, // 57: google.cloud.dataplex.v1.MetadataJob.type:type_name -> google.cloud.dataplex.v1.MetadataJob.Type + 63, // 58: google.cloud.dataplex.v1.MetadataJob.import_spec:type_name -> google.cloud.dataplex.v1.MetadataJob.ImportJobSpec + 62, // 59: google.cloud.dataplex.v1.MetadataJob.import_result:type_name -> google.cloud.dataplex.v1.MetadataJob.ImportJobResult + 64, // 60: google.cloud.dataplex.v1.MetadataJob.status:type_name -> google.cloud.dataplex.v1.MetadataJob.Status + 49, // 61: google.cloud.dataplex.v1.AspectType.MetadataTemplate.record_fields:type_name -> google.cloud.dataplex.v1.AspectType.MetadataTemplate + 51, // 62: google.cloud.dataplex.v1.AspectType.MetadataTemplate.enum_values:type_name -> google.cloud.dataplex.v1.AspectType.MetadataTemplate.EnumValue + 49, // 63: google.cloud.dataplex.v1.AspectType.MetadataTemplate.map_items:type_name -> google.cloud.dataplex.v1.AspectType.MetadataTemplate + 49, // 64: google.cloud.dataplex.v1.AspectType.MetadataTemplate.array_items:type_name -> google.cloud.dataplex.v1.AspectType.MetadataTemplate + 52, // 65: google.cloud.dataplex.v1.AspectType.MetadataTemplate.constraints:type_name -> google.cloud.dataplex.v1.AspectType.MetadataTemplate.Constraints + 53, // 66: google.cloud.dataplex.v1.AspectType.MetadataTemplate.annotations:type_name -> google.cloud.dataplex.v1.AspectType.MetadataTemplate.Annotations + 9, // 67: google.cloud.dataplex.v1.Entry.AspectsEntry.value:type_name -> google.cloud.dataplex.v1.Aspect + 11, // 68: google.cloud.dataplex.v1.SearchEntriesResult.Snippets.dataplex_entry:type_name -> google.cloud.dataplex.v1.Entry + 67, // 69: google.cloud.dataplex.v1.MetadataJob.ImportJobResult.update_time:type_name -> google.protobuf.Timestamp + 67, // 70: google.cloud.dataplex.v1.MetadataJob.ImportJobSpec.source_create_time:type_name -> google.protobuf.Timestamp + 66, // 71: google.cloud.dataplex.v1.MetadataJob.ImportJobSpec.scope:type_name -> google.cloud.dataplex.v1.MetadataJob.ImportJobSpec.ImportJobScope + 3, // 72: google.cloud.dataplex.v1.MetadataJob.ImportJobSpec.entry_sync_mode:type_name -> google.cloud.dataplex.v1.MetadataJob.ImportJobSpec.SyncMode + 3, // 73: google.cloud.dataplex.v1.MetadataJob.ImportJobSpec.aspect_sync_mode:type_name -> google.cloud.dataplex.v1.MetadataJob.ImportJobSpec.SyncMode + 4, // 74: google.cloud.dataplex.v1.MetadataJob.ImportJobSpec.log_level:type_name -> google.cloud.dataplex.v1.MetadataJob.ImportJobSpec.LogLevel + 5, // 75: google.cloud.dataplex.v1.MetadataJob.Status.state:type_name -> google.cloud.dataplex.v1.MetadataJob.Status.State + 67, // 76: google.cloud.dataplex.v1.MetadataJob.Status.update_time:type_name -> google.protobuf.Timestamp + 19, // 77: google.cloud.dataplex.v1.CatalogService.CreateEntryType:input_type -> google.cloud.dataplex.v1.CreateEntryTypeRequest + 20, // 78: google.cloud.dataplex.v1.CatalogService.UpdateEntryType:input_type -> google.cloud.dataplex.v1.UpdateEntryTypeRequest + 21, // 79: google.cloud.dataplex.v1.CatalogService.DeleteEntryType:input_type -> google.cloud.dataplex.v1.DeleteEntryTypeRequest + 22, // 80: google.cloud.dataplex.v1.CatalogService.ListEntryTypes:input_type -> google.cloud.dataplex.v1.ListEntryTypesRequest + 24, // 81: google.cloud.dataplex.v1.CatalogService.GetEntryType:input_type -> google.cloud.dataplex.v1.GetEntryTypeRequest + 25, // 82: google.cloud.dataplex.v1.CatalogService.CreateAspectType:input_type -> google.cloud.dataplex.v1.CreateAspectTypeRequest + 26, // 83: google.cloud.dataplex.v1.CatalogService.UpdateAspectType:input_type -> google.cloud.dataplex.v1.UpdateAspectTypeRequest + 27, // 84: google.cloud.dataplex.v1.CatalogService.DeleteAspectType:input_type -> google.cloud.dataplex.v1.DeleteAspectTypeRequest + 28, // 85: google.cloud.dataplex.v1.CatalogService.ListAspectTypes:input_type -> google.cloud.dataplex.v1.ListAspectTypesRequest + 30, // 86: google.cloud.dataplex.v1.CatalogService.GetAspectType:input_type -> google.cloud.dataplex.v1.GetAspectTypeRequest + 13, // 87: google.cloud.dataplex.v1.CatalogService.CreateEntryGroup:input_type -> google.cloud.dataplex.v1.CreateEntryGroupRequest + 14, // 88: google.cloud.dataplex.v1.CatalogService.UpdateEntryGroup:input_type -> google.cloud.dataplex.v1.UpdateEntryGroupRequest + 15, // 89: google.cloud.dataplex.v1.CatalogService.DeleteEntryGroup:input_type -> google.cloud.dataplex.v1.DeleteEntryGroupRequest + 16, // 90: google.cloud.dataplex.v1.CatalogService.ListEntryGroups:input_type -> google.cloud.dataplex.v1.ListEntryGroupsRequest + 18, // 91: google.cloud.dataplex.v1.CatalogService.GetEntryGroup:input_type -> google.cloud.dataplex.v1.GetEntryGroupRequest + 31, // 92: google.cloud.dataplex.v1.CatalogService.CreateEntry:input_type -> google.cloud.dataplex.v1.CreateEntryRequest + 32, // 93: google.cloud.dataplex.v1.CatalogService.UpdateEntry:input_type -> google.cloud.dataplex.v1.UpdateEntryRequest + 33, // 94: google.cloud.dataplex.v1.CatalogService.DeleteEntry:input_type -> google.cloud.dataplex.v1.DeleteEntryRequest + 34, // 95: google.cloud.dataplex.v1.CatalogService.ListEntries:input_type -> google.cloud.dataplex.v1.ListEntriesRequest + 36, // 96: google.cloud.dataplex.v1.CatalogService.GetEntry:input_type -> google.cloud.dataplex.v1.GetEntryRequest + 37, // 97: google.cloud.dataplex.v1.CatalogService.LookupEntry:input_type -> google.cloud.dataplex.v1.LookupEntryRequest + 38, // 98: google.cloud.dataplex.v1.CatalogService.SearchEntries:input_type -> google.cloud.dataplex.v1.SearchEntriesRequest + 42, // 99: google.cloud.dataplex.v1.CatalogService.CreateMetadataJob:input_type -> google.cloud.dataplex.v1.CreateMetadataJobRequest + 43, // 100: google.cloud.dataplex.v1.CatalogService.GetMetadataJob:input_type -> google.cloud.dataplex.v1.GetMetadataJobRequest + 44, // 101: google.cloud.dataplex.v1.CatalogService.ListMetadataJobs:input_type -> google.cloud.dataplex.v1.ListMetadataJobsRequest + 46, // 102: google.cloud.dataplex.v1.CatalogService.CancelMetadataJob:input_type -> google.cloud.dataplex.v1.CancelMetadataJobRequest + 70, // 103: google.cloud.dataplex.v1.CatalogService.CreateEntryType:output_type -> google.longrunning.Operation + 70, // 104: google.cloud.dataplex.v1.CatalogService.UpdateEntryType:output_type -> google.longrunning.Operation + 70, // 105: google.cloud.dataplex.v1.CatalogService.DeleteEntryType:output_type -> google.longrunning.Operation + 23, // 106: google.cloud.dataplex.v1.CatalogService.ListEntryTypes:output_type -> google.cloud.dataplex.v1.ListEntryTypesResponse + 8, // 107: google.cloud.dataplex.v1.CatalogService.GetEntryType:output_type -> google.cloud.dataplex.v1.EntryType + 70, // 108: google.cloud.dataplex.v1.CatalogService.CreateAspectType:output_type -> google.longrunning.Operation + 70, // 109: google.cloud.dataplex.v1.CatalogService.UpdateAspectType:output_type -> google.longrunning.Operation + 70, // 110: google.cloud.dataplex.v1.CatalogService.DeleteAspectType:output_type -> google.longrunning.Operation + 29, // 111: google.cloud.dataplex.v1.CatalogService.ListAspectTypes:output_type -> google.cloud.dataplex.v1.ListAspectTypesResponse + 6, // 112: google.cloud.dataplex.v1.CatalogService.GetAspectType:output_type -> google.cloud.dataplex.v1.AspectType + 70, // 113: google.cloud.dataplex.v1.CatalogService.CreateEntryGroup:output_type -> google.longrunning.Operation + 70, // 114: google.cloud.dataplex.v1.CatalogService.UpdateEntryGroup:output_type -> google.longrunning.Operation + 70, // 115: google.cloud.dataplex.v1.CatalogService.DeleteEntryGroup:output_type -> google.longrunning.Operation + 17, // 116: google.cloud.dataplex.v1.CatalogService.ListEntryGroups:output_type -> google.cloud.dataplex.v1.ListEntryGroupsResponse + 7, // 117: google.cloud.dataplex.v1.CatalogService.GetEntryGroup:output_type -> google.cloud.dataplex.v1.EntryGroup + 11, // 118: google.cloud.dataplex.v1.CatalogService.CreateEntry:output_type -> google.cloud.dataplex.v1.Entry + 11, // 119: google.cloud.dataplex.v1.CatalogService.UpdateEntry:output_type -> google.cloud.dataplex.v1.Entry + 11, // 120: google.cloud.dataplex.v1.CatalogService.DeleteEntry:output_type -> google.cloud.dataplex.v1.Entry + 35, // 121: google.cloud.dataplex.v1.CatalogService.ListEntries:output_type -> google.cloud.dataplex.v1.ListEntriesResponse + 11, // 122: google.cloud.dataplex.v1.CatalogService.GetEntry:output_type -> google.cloud.dataplex.v1.Entry + 11, // 123: google.cloud.dataplex.v1.CatalogService.LookupEntry:output_type -> google.cloud.dataplex.v1.Entry + 40, // 124: google.cloud.dataplex.v1.CatalogService.SearchEntries:output_type -> google.cloud.dataplex.v1.SearchEntriesResponse + 70, // 125: google.cloud.dataplex.v1.CatalogService.CreateMetadataJob:output_type -> google.longrunning.Operation + 47, // 126: google.cloud.dataplex.v1.CatalogService.GetMetadataJob:output_type -> google.cloud.dataplex.v1.MetadataJob + 45, // 127: google.cloud.dataplex.v1.CatalogService.ListMetadataJobs:output_type -> google.cloud.dataplex.v1.ListMetadataJobsResponse + 71, // 128: google.cloud.dataplex.v1.CatalogService.CancelMetadataJob:output_type -> google.protobuf.Empty + 103, // [103:129] is the sub-list for method output_type + 77, // [77:103] is the sub-list for method input_type + 77, // [77:77] is the sub-list for extension type_name + 77, // [77:77] is the sub-list for extension extendee + 0, // [0:77] is the sub-list for field type_name } func init() { file_google_cloud_dataplex_v1_catalog_proto_init() } @@ -5353,7 +6994,7 @@ func file_google_cloud_dataplex_v1_catalog_proto_init() { } } file_google_cloud_dataplex_v1_catalog_proto_msgTypes[35].Exporter = func(v any, i int) any { - switch v := v.(*AspectType_Authorization); i { + switch v := v.(*ImportItem); i { case 0: return &v.state case 1: @@ -5365,7 +7006,19 @@ func file_google_cloud_dataplex_v1_catalog_proto_init() { } } file_google_cloud_dataplex_v1_catalog_proto_msgTypes[36].Exporter = func(v any, i int) any { - switch v := v.(*AspectType_MetadataTemplate); i { + switch v := v.(*CreateMetadataJobRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dataplex_v1_catalog_proto_msgTypes[37].Exporter = func(v any, i int) any { + switch v := v.(*GetMetadataJobRequest); i { case 0: return &v.state case 1: @@ -5377,7 +7030,7 @@ func file_google_cloud_dataplex_v1_catalog_proto_init() { } } file_google_cloud_dataplex_v1_catalog_proto_msgTypes[38].Exporter = func(v any, i int) any { - switch v := v.(*AspectType_MetadataTemplate_EnumValue); i { + switch v := v.(*ListMetadataJobsRequest); i { case 0: return &v.state case 1: @@ -5389,7 +7042,7 @@ func file_google_cloud_dataplex_v1_catalog_proto_init() { } } file_google_cloud_dataplex_v1_catalog_proto_msgTypes[39].Exporter = func(v any, i int) any { - switch v := v.(*AspectType_MetadataTemplate_Constraints); i { + switch v := v.(*ListMetadataJobsResponse); i { case 0: return &v.state case 1: @@ -5401,7 +7054,19 @@ func file_google_cloud_dataplex_v1_catalog_proto_init() { } } file_google_cloud_dataplex_v1_catalog_proto_msgTypes[40].Exporter = func(v any, i int) any { - switch v := v.(*AspectType_MetadataTemplate_Annotations); i { + switch v := v.(*CancelMetadataJobRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dataplex_v1_catalog_proto_msgTypes[41].Exporter = func(v any, i int) any { + switch v := v.(*MetadataJob); i { case 0: return &v.state case 1: @@ -5413,7 +7078,7 @@ func file_google_cloud_dataplex_v1_catalog_proto_init() { } } file_google_cloud_dataplex_v1_catalog_proto_msgTypes[42].Exporter = func(v any, i int) any { - switch v := v.(*EntryType_AspectInfo); i { + switch v := v.(*AspectType_Authorization); i { case 0: return &v.state case 1: @@ -5425,7 +7090,19 @@ func file_google_cloud_dataplex_v1_catalog_proto_init() { } } file_google_cloud_dataplex_v1_catalog_proto_msgTypes[43].Exporter = func(v any, i int) any { - switch v := v.(*EntryType_Authorization); i { + switch v := v.(*AspectType_MetadataTemplate); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dataplex_v1_catalog_proto_msgTypes[45].Exporter = func(v any, i int) any { + switch v := v.(*AspectType_MetadataTemplate_EnumValue); i { case 0: return &v.state case 1: @@ -5437,6 +7114,54 @@ func file_google_cloud_dataplex_v1_catalog_proto_init() { } } file_google_cloud_dataplex_v1_catalog_proto_msgTypes[46].Exporter = func(v any, i int) any { + switch v := v.(*AspectType_MetadataTemplate_Constraints); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dataplex_v1_catalog_proto_msgTypes[47].Exporter = func(v any, i int) any { + switch v := v.(*AspectType_MetadataTemplate_Annotations); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dataplex_v1_catalog_proto_msgTypes[49].Exporter = func(v any, i int) any { + switch v := v.(*EntryType_AspectInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dataplex_v1_catalog_proto_msgTypes[50].Exporter = func(v any, i int) any { + switch v := v.(*EntryType_Authorization); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dataplex_v1_catalog_proto_msgTypes[53].Exporter = func(v any, i int) any { switch v := v.(*EntrySource_Ancestor); i { case 0: return &v.state @@ -5448,7 +7173,7 @@ func file_google_cloud_dataplex_v1_catalog_proto_init() { return nil } } - file_google_cloud_dataplex_v1_catalog_proto_msgTypes[48].Exporter = func(v any, i int) any { + file_google_cloud_dataplex_v1_catalog_proto_msgTypes[55].Exporter = func(v any, i int) any { switch v := v.(*SearchEntriesResult_Snippets); i { case 0: return &v.state @@ -5460,14 +7185,66 @@ func file_google_cloud_dataplex_v1_catalog_proto_init() { return nil } } + file_google_cloud_dataplex_v1_catalog_proto_msgTypes[56].Exporter = func(v any, i int) any { + switch v := v.(*MetadataJob_ImportJobResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dataplex_v1_catalog_proto_msgTypes[57].Exporter = func(v any, i int) any { + switch v := v.(*MetadataJob_ImportJobSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dataplex_v1_catalog_proto_msgTypes[58].Exporter = func(v any, i int) any { + switch v := v.(*MetadataJob_Status); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dataplex_v1_catalog_proto_msgTypes[60].Exporter = func(v any, i int) any { + switch v := v.(*MetadataJob_ImportJobSpec_ImportJobScope); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_google_cloud_dataplex_v1_catalog_proto_msgTypes[41].OneofWrappers = []any{ + (*MetadataJob_ImportSpec)(nil), + (*MetadataJob_ImportResult)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_dataplex_v1_catalog_proto_rawDesc, - NumEnums: 2, - NumMessages: 49, + NumEnums: 6, + NumMessages: 61, NumExtensions: 0, NumServices: 1, }, @@ -5494,35 +7271,35 @@ const _ = grpc.SupportPackageIsVersion6 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type CatalogServiceClient interface { - // Creates an EntryType + // Creates an EntryType. CreateEntryType(ctx context.Context, in *CreateEntryTypeRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) - // Updates a EntryType resource. + // Updates an EntryType. UpdateEntryType(ctx context.Context, in *UpdateEntryTypeRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) - // Deletes a EntryType resource. + // Deletes an EntryType. DeleteEntryType(ctx context.Context, in *DeleteEntryTypeRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) // Lists EntryType resources in a project and location. ListEntryTypes(ctx context.Context, in *ListEntryTypesRequest, opts ...grpc.CallOption) (*ListEntryTypesResponse, error) - // Retrieves a EntryType resource. + // Gets an EntryType. GetEntryType(ctx context.Context, in *GetEntryTypeRequest, opts ...grpc.CallOption) (*EntryType, error) - // Creates an AspectType + // Creates an AspectType. CreateAspectType(ctx context.Context, in *CreateAspectTypeRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) - // Updates a AspectType resource. + // Updates an AspectType. UpdateAspectType(ctx context.Context, in *UpdateAspectTypeRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) - // Deletes a AspectType resource. + // Deletes an AspectType. DeleteAspectType(ctx context.Context, in *DeleteAspectTypeRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) // Lists AspectType resources in a project and location. ListAspectTypes(ctx context.Context, in *ListAspectTypesRequest, opts ...grpc.CallOption) (*ListAspectTypesResponse, error) - // Retrieves a AspectType resource. + // Gets an AspectType. GetAspectType(ctx context.Context, in *GetAspectTypeRequest, opts ...grpc.CallOption) (*AspectType, error) - // Creates an EntryGroup + // Creates an EntryGroup. CreateEntryGroup(ctx context.Context, in *CreateEntryGroupRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) - // Updates a EntryGroup resource. + // Updates an EntryGroup. UpdateEntryGroup(ctx context.Context, in *UpdateEntryGroupRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) - // Deletes a EntryGroup resource. + // Deletes an EntryGroup. DeleteEntryGroup(ctx context.Context, in *DeleteEntryGroupRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) // Lists EntryGroup resources in a project and location. ListEntryGroups(ctx context.Context, in *ListEntryGroupsRequest, opts ...grpc.CallOption) (*ListEntryGroupsResponse, error) - // Retrieves a EntryGroup resource. + // Gets an EntryGroup. GetEntryGroup(ctx context.Context, in *GetEntryGroupRequest, opts ...grpc.CallOption) (*EntryGroup, error) // Creates an Entry. CreateEntry(ctx context.Context, in *CreateEntryRequest, opts ...grpc.CallOption) (*Entry, error) @@ -5530,14 +7307,38 @@ type CatalogServiceClient interface { UpdateEntry(ctx context.Context, in *UpdateEntryRequest, opts ...grpc.CallOption) (*Entry, error) // Deletes an Entry. DeleteEntry(ctx context.Context, in *DeleteEntryRequest, opts ...grpc.CallOption) (*Entry, error) - // Lists entries within an entry group. + // Lists Entries within an EntryGroup. ListEntries(ctx context.Context, in *ListEntriesRequest, opts ...grpc.CallOption) (*ListEntriesResponse, error) - // Gets a single entry. + // Gets an Entry. + // + // **Caution**: The BigQuery metadata that is stored in Dataplex Catalog is + // changing. For more information, see [Changes to BigQuery metadata stored in + // Dataplex + // Catalog](https://cloud.google.com/dataplex/docs/biqquery-metadata-changes). GetEntry(ctx context.Context, in *GetEntryRequest, opts ...grpc.CallOption) (*Entry, error) - // Looks up a single entry. + // Looks up a single Entry by name using the permission on the source system. + // + // **Caution**: The BigQuery metadata that is stored in Dataplex Catalog is + // changing. For more information, see [Changes to BigQuery metadata stored in + // Dataplex + // Catalog](https://cloud.google.com/dataplex/docs/biqquery-metadata-changes). LookupEntry(ctx context.Context, in *LookupEntryRequest, opts ...grpc.CallOption) (*Entry, error) - // Searches for entries matching given query and scope. + // Searches for Entries matching the given query and scope. SearchEntries(ctx context.Context, in *SearchEntriesRequest, opts ...grpc.CallOption) (*SearchEntriesResponse, error) + // Creates a metadata job. For example, use a metadata job to import Dataplex + // Catalog entries and aspects from a third-party system into Dataplex. + CreateMetadataJob(ctx context.Context, in *CreateMetadataJobRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) + // Gets a metadata job. + GetMetadataJob(ctx context.Context, in *GetMetadataJobRequest, opts ...grpc.CallOption) (*MetadataJob, error) + // Lists metadata jobs. + ListMetadataJobs(ctx context.Context, in *ListMetadataJobsRequest, opts ...grpc.CallOption) (*ListMetadataJobsResponse, error) + // Cancels a metadata job. + // + // If you cancel a metadata import job that is in progress, the changes in the + // job might be partially applied. We recommend that you reset the state of + // the entry groups in your project by running another metadata job that + // reverts the changes from the canceled job. + CancelMetadataJob(ctx context.Context, in *CancelMetadataJobRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) } type catalogServiceClient struct { @@ -5746,37 +7547,73 @@ func (c *catalogServiceClient) SearchEntries(ctx context.Context, in *SearchEntr return out, nil } +func (c *catalogServiceClient) CreateMetadataJob(ctx context.Context, in *CreateMetadataJobRequest, opts ...grpc.CallOption) (*longrunningpb.Operation, error) { + out := new(longrunningpb.Operation) + err := c.cc.Invoke(ctx, "/google.cloud.dataplex.v1.CatalogService/CreateMetadataJob", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *catalogServiceClient) GetMetadataJob(ctx context.Context, in *GetMetadataJobRequest, opts ...grpc.CallOption) (*MetadataJob, error) { + out := new(MetadataJob) + err := c.cc.Invoke(ctx, "/google.cloud.dataplex.v1.CatalogService/GetMetadataJob", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *catalogServiceClient) ListMetadataJobs(ctx context.Context, in *ListMetadataJobsRequest, opts ...grpc.CallOption) (*ListMetadataJobsResponse, error) { + out := new(ListMetadataJobsResponse) + err := c.cc.Invoke(ctx, "/google.cloud.dataplex.v1.CatalogService/ListMetadataJobs", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *catalogServiceClient) CancelMetadataJob(ctx context.Context, in *CancelMetadataJobRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, "/google.cloud.dataplex.v1.CatalogService/CancelMetadataJob", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // CatalogServiceServer is the server API for CatalogService service. type CatalogServiceServer interface { - // Creates an EntryType + // Creates an EntryType. CreateEntryType(context.Context, *CreateEntryTypeRequest) (*longrunningpb.Operation, error) - // Updates a EntryType resource. + // Updates an EntryType. UpdateEntryType(context.Context, *UpdateEntryTypeRequest) (*longrunningpb.Operation, error) - // Deletes a EntryType resource. + // Deletes an EntryType. DeleteEntryType(context.Context, *DeleteEntryTypeRequest) (*longrunningpb.Operation, error) // Lists EntryType resources in a project and location. ListEntryTypes(context.Context, *ListEntryTypesRequest) (*ListEntryTypesResponse, error) - // Retrieves a EntryType resource. + // Gets an EntryType. GetEntryType(context.Context, *GetEntryTypeRequest) (*EntryType, error) - // Creates an AspectType + // Creates an AspectType. CreateAspectType(context.Context, *CreateAspectTypeRequest) (*longrunningpb.Operation, error) - // Updates a AspectType resource. + // Updates an AspectType. UpdateAspectType(context.Context, *UpdateAspectTypeRequest) (*longrunningpb.Operation, error) - // Deletes a AspectType resource. + // Deletes an AspectType. DeleteAspectType(context.Context, *DeleteAspectTypeRequest) (*longrunningpb.Operation, error) // Lists AspectType resources in a project and location. ListAspectTypes(context.Context, *ListAspectTypesRequest) (*ListAspectTypesResponse, error) - // Retrieves a AspectType resource. + // Gets an AspectType. GetAspectType(context.Context, *GetAspectTypeRequest) (*AspectType, error) - // Creates an EntryGroup + // Creates an EntryGroup. CreateEntryGroup(context.Context, *CreateEntryGroupRequest) (*longrunningpb.Operation, error) - // Updates a EntryGroup resource. + // Updates an EntryGroup. UpdateEntryGroup(context.Context, *UpdateEntryGroupRequest) (*longrunningpb.Operation, error) - // Deletes a EntryGroup resource. + // Deletes an EntryGroup. DeleteEntryGroup(context.Context, *DeleteEntryGroupRequest) (*longrunningpb.Operation, error) // Lists EntryGroup resources in a project and location. ListEntryGroups(context.Context, *ListEntryGroupsRequest) (*ListEntryGroupsResponse, error) - // Retrieves a EntryGroup resource. + // Gets an EntryGroup. GetEntryGroup(context.Context, *GetEntryGroupRequest) (*EntryGroup, error) // Creates an Entry. CreateEntry(context.Context, *CreateEntryRequest) (*Entry, error) @@ -5784,14 +7621,38 @@ type CatalogServiceServer interface { UpdateEntry(context.Context, *UpdateEntryRequest) (*Entry, error) // Deletes an Entry. DeleteEntry(context.Context, *DeleteEntryRequest) (*Entry, error) - // Lists entries within an entry group. + // Lists Entries within an EntryGroup. ListEntries(context.Context, *ListEntriesRequest) (*ListEntriesResponse, error) - // Gets a single entry. + // Gets an Entry. + // + // **Caution**: The BigQuery metadata that is stored in Dataplex Catalog is + // changing. For more information, see [Changes to BigQuery metadata stored in + // Dataplex + // Catalog](https://cloud.google.com/dataplex/docs/biqquery-metadata-changes). GetEntry(context.Context, *GetEntryRequest) (*Entry, error) - // Looks up a single entry. + // Looks up a single Entry by name using the permission on the source system. + // + // **Caution**: The BigQuery metadata that is stored in Dataplex Catalog is + // changing. For more information, see [Changes to BigQuery metadata stored in + // Dataplex + // Catalog](https://cloud.google.com/dataplex/docs/biqquery-metadata-changes). LookupEntry(context.Context, *LookupEntryRequest) (*Entry, error) - // Searches for entries matching given query and scope. + // Searches for Entries matching the given query and scope. SearchEntries(context.Context, *SearchEntriesRequest) (*SearchEntriesResponse, error) + // Creates a metadata job. For example, use a metadata job to import Dataplex + // Catalog entries and aspects from a third-party system into Dataplex. + CreateMetadataJob(context.Context, *CreateMetadataJobRequest) (*longrunningpb.Operation, error) + // Gets a metadata job. + GetMetadataJob(context.Context, *GetMetadataJobRequest) (*MetadataJob, error) + // Lists metadata jobs. + ListMetadataJobs(context.Context, *ListMetadataJobsRequest) (*ListMetadataJobsResponse, error) + // Cancels a metadata job. + // + // If you cancel a metadata import job that is in progress, the changes in the + // job might be partially applied. We recommend that you reset the state of + // the entry groups in your project by running another metadata job that + // reverts the changes from the canceled job. + CancelMetadataJob(context.Context, *CancelMetadataJobRequest) (*emptypb.Empty, error) } // UnimplementedCatalogServiceServer can be embedded to have forward compatible implementations. @@ -5864,6 +7725,18 @@ func (*UnimplementedCatalogServiceServer) LookupEntry(context.Context, *LookupEn func (*UnimplementedCatalogServiceServer) SearchEntries(context.Context, *SearchEntriesRequest) (*SearchEntriesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SearchEntries not implemented") } +func (*UnimplementedCatalogServiceServer) CreateMetadataJob(context.Context, *CreateMetadataJobRequest) (*longrunningpb.Operation, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateMetadataJob not implemented") +} +func (*UnimplementedCatalogServiceServer) GetMetadataJob(context.Context, *GetMetadataJobRequest) (*MetadataJob, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetMetadataJob not implemented") +} +func (*UnimplementedCatalogServiceServer) ListMetadataJobs(context.Context, *ListMetadataJobsRequest) (*ListMetadataJobsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListMetadataJobs not implemented") +} +func (*UnimplementedCatalogServiceServer) CancelMetadataJob(context.Context, *CancelMetadataJobRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method CancelMetadataJob not implemented") +} func RegisterCatalogServiceServer(s *grpc.Server, srv CatalogServiceServer) { s.RegisterService(&_CatalogService_serviceDesc, srv) @@ -6265,6 +8138,78 @@ func _CatalogService_SearchEntries_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _CatalogService_CreateMetadataJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateMetadataJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CatalogServiceServer).CreateMetadataJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.dataplex.v1.CatalogService/CreateMetadataJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CatalogServiceServer).CreateMetadataJob(ctx, req.(*CreateMetadataJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _CatalogService_GetMetadataJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetMetadataJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CatalogServiceServer).GetMetadataJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.dataplex.v1.CatalogService/GetMetadataJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CatalogServiceServer).GetMetadataJob(ctx, req.(*GetMetadataJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _CatalogService_ListMetadataJobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListMetadataJobsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CatalogServiceServer).ListMetadataJobs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.dataplex.v1.CatalogService/ListMetadataJobs", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CatalogServiceServer).ListMetadataJobs(ctx, req.(*ListMetadataJobsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _CatalogService_CancelMetadataJob_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CancelMetadataJobRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CatalogServiceServer).CancelMetadataJob(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/google.cloud.dataplex.v1.CatalogService/CancelMetadataJob", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CatalogServiceServer).CancelMetadataJob(ctx, req.(*CancelMetadataJobRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _CatalogService_serviceDesc = grpc.ServiceDesc{ ServiceName: "google.cloud.dataplex.v1.CatalogService", HandlerType: (*CatalogServiceServer)(nil), @@ -6357,6 +8302,22 @@ var _CatalogService_serviceDesc = grpc.ServiceDesc{ MethodName: "SearchEntries", Handler: _CatalogService_SearchEntries_Handler, }, + { + MethodName: "CreateMetadataJob", + Handler: _CatalogService_CreateMetadataJob_Handler, + }, + { + MethodName: "GetMetadataJob", + Handler: _CatalogService_GetMetadataJob_Handler, + }, + { + MethodName: "ListMetadataJobs", + Handler: _CatalogService_ListMetadataJobs_Handler, + }, + { + MethodName: "CancelMetadataJob", + Handler: _CatalogService_CancelMetadataJob_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "google/cloud/dataplex/v1/catalog.proto", diff --git a/dataplex/apiv1/dataplexpb/data_discovery.pb.go b/dataplex/apiv1/dataplexpb/data_discovery.pb.go new file mode 100755 index 000000000000..8f2cc540471f --- /dev/null +++ b/dataplex/apiv1/dataplexpb/data_discovery.pb.go @@ -0,0 +1,848 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc v4.25.3 +// source: google/cloud/dataplex/v1/data_discovery.proto + +package dataplexpb + +import ( + reflect "reflect" + sync "sync" + + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Determines how discovered tables are published. +type DataDiscoverySpec_BigQueryPublishingConfig_TableType int32 + +const ( + // Table type unspecified. + DataDiscoverySpec_BigQueryPublishingConfig_TABLE_TYPE_UNSPECIFIED DataDiscoverySpec_BigQueryPublishingConfig_TableType = 0 + // Default. Discovered tables are published as BigQuery external tables + // whose data is accessed using the credentials of the user querying the + // table. + DataDiscoverySpec_BigQueryPublishingConfig_EXTERNAL DataDiscoverySpec_BigQueryPublishingConfig_TableType = 1 + // Discovered tables are published as BigLake external tables whose data + // is accessed using the credentials of the associated BigQuery + // connection. + DataDiscoverySpec_BigQueryPublishingConfig_BIGLAKE DataDiscoverySpec_BigQueryPublishingConfig_TableType = 2 +) + +// Enum value maps for DataDiscoverySpec_BigQueryPublishingConfig_TableType. +var ( + DataDiscoverySpec_BigQueryPublishingConfig_TableType_name = map[int32]string{ + 0: "TABLE_TYPE_UNSPECIFIED", + 1: "EXTERNAL", + 2: "BIGLAKE", + } + DataDiscoverySpec_BigQueryPublishingConfig_TableType_value = map[string]int32{ + "TABLE_TYPE_UNSPECIFIED": 0, + "EXTERNAL": 1, + "BIGLAKE": 2, + } +) + +func (x DataDiscoverySpec_BigQueryPublishingConfig_TableType) Enum() *DataDiscoverySpec_BigQueryPublishingConfig_TableType { + p := new(DataDiscoverySpec_BigQueryPublishingConfig_TableType) + *p = x + return p +} + +func (x DataDiscoverySpec_BigQueryPublishingConfig_TableType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DataDiscoverySpec_BigQueryPublishingConfig_TableType) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_dataplex_v1_data_discovery_proto_enumTypes[0].Descriptor() +} + +func (DataDiscoverySpec_BigQueryPublishingConfig_TableType) Type() protoreflect.EnumType { + return &file_google_cloud_dataplex_v1_data_discovery_proto_enumTypes[0] +} + +func (x DataDiscoverySpec_BigQueryPublishingConfig_TableType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DataDiscoverySpec_BigQueryPublishingConfig_TableType.Descriptor instead. +func (DataDiscoverySpec_BigQueryPublishingConfig_TableType) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_data_discovery_proto_rawDescGZIP(), []int{0, 0, 0} +} + +// Spec for a data discovery scan. +type DataDiscoverySpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. Configuration for metadata publishing. + BigqueryPublishingConfig *DataDiscoverySpec_BigQueryPublishingConfig `protobuf:"bytes,1,opt,name=bigquery_publishing_config,json=bigqueryPublishingConfig,proto3" json:"bigquery_publishing_config,omitempty"` + // The configurations of the data discovery scan resource. + // + // Types that are assignable to ResourceConfig: + // + // *DataDiscoverySpec_StorageConfig_ + ResourceConfig isDataDiscoverySpec_ResourceConfig `protobuf_oneof:"resource_config"` +} + +func (x *DataDiscoverySpec) Reset() { + *x = DataDiscoverySpec{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DataDiscoverySpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DataDiscoverySpec) ProtoMessage() {} + +func (x *DataDiscoverySpec) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DataDiscoverySpec.ProtoReflect.Descriptor instead. +func (*DataDiscoverySpec) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_data_discovery_proto_rawDescGZIP(), []int{0} +} + +func (x *DataDiscoverySpec) GetBigqueryPublishingConfig() *DataDiscoverySpec_BigQueryPublishingConfig { + if x != nil { + return x.BigqueryPublishingConfig + } + return nil +} + +func (m *DataDiscoverySpec) GetResourceConfig() isDataDiscoverySpec_ResourceConfig { + if m != nil { + return m.ResourceConfig + } + return nil +} + +func (x *DataDiscoverySpec) GetStorageConfig() *DataDiscoverySpec_StorageConfig { + if x, ok := x.GetResourceConfig().(*DataDiscoverySpec_StorageConfig_); ok { + return x.StorageConfig + } + return nil +} + +type isDataDiscoverySpec_ResourceConfig interface { + isDataDiscoverySpec_ResourceConfig() +} + +type DataDiscoverySpec_StorageConfig_ struct { + // Cloud Storage related configurations. + StorageConfig *DataDiscoverySpec_StorageConfig `protobuf:"bytes,100,opt,name=storage_config,json=storageConfig,proto3,oneof"` +} + +func (*DataDiscoverySpec_StorageConfig_) isDataDiscoverySpec_ResourceConfig() {} + +// The output of a data discovery scan. +type DataDiscoveryResult struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. Configuration for metadata publishing. + BigqueryPublishing *DataDiscoveryResult_BigQueryPublishing `protobuf:"bytes,1,opt,name=bigquery_publishing,json=bigqueryPublishing,proto3" json:"bigquery_publishing,omitempty"` +} + +func (x *DataDiscoveryResult) Reset() { + *x = DataDiscoveryResult{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DataDiscoveryResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DataDiscoveryResult) ProtoMessage() {} + +func (x *DataDiscoveryResult) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DataDiscoveryResult.ProtoReflect.Descriptor instead. +func (*DataDiscoveryResult) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_data_discovery_proto_rawDescGZIP(), []int{1} +} + +func (x *DataDiscoveryResult) GetBigqueryPublishing() *DataDiscoveryResult_BigQueryPublishing { + if x != nil { + return x.BigqueryPublishing + } + return nil +} + +// Describes BigQuery publishing configurations. +type DataDiscoverySpec_BigQueryPublishingConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. Determines whether to publish discovered tables as BigLake + // external tables or non-BigLake external tables. + TableType DataDiscoverySpec_BigQueryPublishingConfig_TableType `protobuf:"varint,2,opt,name=table_type,json=tableType,proto3,enum=google.cloud.dataplex.v1.DataDiscoverySpec_BigQueryPublishingConfig_TableType" json:"table_type,omitempty"` + // Optional. The BigQuery connection used to create BigLake tables. + // Must be in the form + // `projects/{project_id}/locations/{location_id}/connections/{connection_id}` + Connection string `protobuf:"bytes,3,opt,name=connection,proto3" json:"connection,omitempty"` +} + +func (x *DataDiscoverySpec_BigQueryPublishingConfig) Reset() { + *x = DataDiscoverySpec_BigQueryPublishingConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DataDiscoverySpec_BigQueryPublishingConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DataDiscoverySpec_BigQueryPublishingConfig) ProtoMessage() {} + +func (x *DataDiscoverySpec_BigQueryPublishingConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DataDiscoverySpec_BigQueryPublishingConfig.ProtoReflect.Descriptor instead. +func (*DataDiscoverySpec_BigQueryPublishingConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_data_discovery_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *DataDiscoverySpec_BigQueryPublishingConfig) GetTableType() DataDiscoverySpec_BigQueryPublishingConfig_TableType { + if x != nil { + return x.TableType + } + return DataDiscoverySpec_BigQueryPublishingConfig_TABLE_TYPE_UNSPECIFIED +} + +func (x *DataDiscoverySpec_BigQueryPublishingConfig) GetConnection() string { + if x != nil { + return x.Connection + } + return "" +} + +// Configurations related to Cloud Storage as the data source. +type DataDiscoverySpec_StorageConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. Defines the data to include during discovery when only a subset + // of the data should be considered. Provide a list of patterns that + // identify the data to include. For Cloud Storage bucket assets, these + // patterns are interpreted as glob patterns used to match object names. For + // BigQuery dataset assets, these patterns are interpreted as patterns to + // match table names. + IncludePatterns []string `protobuf:"bytes,1,rep,name=include_patterns,json=includePatterns,proto3" json:"include_patterns,omitempty"` + // Optional. Defines the data to exclude during discovery. Provide a list of + // patterns that identify the data to exclude. For Cloud Storage bucket + // assets, these patterns are interpreted as glob patterns used to match + // object names. For BigQuery dataset assets, these patterns are interpreted + // as patterns to match table names. + ExcludePatterns []string `protobuf:"bytes,2,rep,name=exclude_patterns,json=excludePatterns,proto3" json:"exclude_patterns,omitempty"` + // Optional. Configuration for CSV data. + CsvOptions *DataDiscoverySpec_StorageConfig_CsvOptions `protobuf:"bytes,3,opt,name=csv_options,json=csvOptions,proto3" json:"csv_options,omitempty"` + // Optional. Configuration for JSON data. + JsonOptions *DataDiscoverySpec_StorageConfig_JsonOptions `protobuf:"bytes,4,opt,name=json_options,json=jsonOptions,proto3" json:"json_options,omitempty"` +} + +func (x *DataDiscoverySpec_StorageConfig) Reset() { + *x = DataDiscoverySpec_StorageConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DataDiscoverySpec_StorageConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DataDiscoverySpec_StorageConfig) ProtoMessage() {} + +func (x *DataDiscoverySpec_StorageConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DataDiscoverySpec_StorageConfig.ProtoReflect.Descriptor instead. +func (*DataDiscoverySpec_StorageConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_data_discovery_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *DataDiscoverySpec_StorageConfig) GetIncludePatterns() []string { + if x != nil { + return x.IncludePatterns + } + return nil +} + +func (x *DataDiscoverySpec_StorageConfig) GetExcludePatterns() []string { + if x != nil { + return x.ExcludePatterns + } + return nil +} + +func (x *DataDiscoverySpec_StorageConfig) GetCsvOptions() *DataDiscoverySpec_StorageConfig_CsvOptions { + if x != nil { + return x.CsvOptions + } + return nil +} + +func (x *DataDiscoverySpec_StorageConfig) GetJsonOptions() *DataDiscoverySpec_StorageConfig_JsonOptions { + if x != nil { + return x.JsonOptions + } + return nil +} + +// Describes CSV and similar semi-structured data formats. +type DataDiscoverySpec_StorageConfig_CsvOptions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. The number of rows to interpret as header rows that should be + // skipped when reading data rows. + HeaderRows int32 `protobuf:"varint,1,opt,name=header_rows,json=headerRows,proto3" json:"header_rows,omitempty"` + // Optional. The delimiter that is used to separate values. The default is + // `,` (comma). + Delimiter string `protobuf:"bytes,2,opt,name=delimiter,proto3" json:"delimiter,omitempty"` + // Optional. The character encoding of the data. The default is UTF-8. + Encoding string `protobuf:"bytes,3,opt,name=encoding,proto3" json:"encoding,omitempty"` + // Optional. Whether to disable the inference of data types for CSV data. + // If true, all columns are registered as strings. + TypeInferenceDisabled bool `protobuf:"varint,4,opt,name=type_inference_disabled,json=typeInferenceDisabled,proto3" json:"type_inference_disabled,omitempty"` + // Optional. The character used to quote column values. Accepts `"` + // (double quotation mark) or `'` (single quotation mark). If unspecified, + // defaults to `"` (double quotation mark). + Quote string `protobuf:"bytes,5,opt,name=quote,proto3" json:"quote,omitempty"` +} + +func (x *DataDiscoverySpec_StorageConfig_CsvOptions) Reset() { + *x = DataDiscoverySpec_StorageConfig_CsvOptions{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DataDiscoverySpec_StorageConfig_CsvOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DataDiscoverySpec_StorageConfig_CsvOptions) ProtoMessage() {} + +func (x *DataDiscoverySpec_StorageConfig_CsvOptions) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DataDiscoverySpec_StorageConfig_CsvOptions.ProtoReflect.Descriptor instead. +func (*DataDiscoverySpec_StorageConfig_CsvOptions) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_data_discovery_proto_rawDescGZIP(), []int{0, 1, 0} +} + +func (x *DataDiscoverySpec_StorageConfig_CsvOptions) GetHeaderRows() int32 { + if x != nil { + return x.HeaderRows + } + return 0 +} + +func (x *DataDiscoverySpec_StorageConfig_CsvOptions) GetDelimiter() string { + if x != nil { + return x.Delimiter + } + return "" +} + +func (x *DataDiscoverySpec_StorageConfig_CsvOptions) GetEncoding() string { + if x != nil { + return x.Encoding + } + return "" +} + +func (x *DataDiscoverySpec_StorageConfig_CsvOptions) GetTypeInferenceDisabled() bool { + if x != nil { + return x.TypeInferenceDisabled + } + return false +} + +func (x *DataDiscoverySpec_StorageConfig_CsvOptions) GetQuote() string { + if x != nil { + return x.Quote + } + return "" +} + +// Describes JSON data format. +type DataDiscoverySpec_StorageConfig_JsonOptions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. The character encoding of the data. The default is UTF-8. + Encoding string `protobuf:"bytes,1,opt,name=encoding,proto3" json:"encoding,omitempty"` + // Optional. Whether to disable the inference of data types for JSON data. + // If true, all columns are registered as their primitive types + // (strings, number, or boolean). + TypeInferenceDisabled bool `protobuf:"varint,2,opt,name=type_inference_disabled,json=typeInferenceDisabled,proto3" json:"type_inference_disabled,omitempty"` +} + +func (x *DataDiscoverySpec_StorageConfig_JsonOptions) Reset() { + *x = DataDiscoverySpec_StorageConfig_JsonOptions{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DataDiscoverySpec_StorageConfig_JsonOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DataDiscoverySpec_StorageConfig_JsonOptions) ProtoMessage() {} + +func (x *DataDiscoverySpec_StorageConfig_JsonOptions) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DataDiscoverySpec_StorageConfig_JsonOptions.ProtoReflect.Descriptor instead. +func (*DataDiscoverySpec_StorageConfig_JsonOptions) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_data_discovery_proto_rawDescGZIP(), []int{0, 1, 1} +} + +func (x *DataDiscoverySpec_StorageConfig_JsonOptions) GetEncoding() string { + if x != nil { + return x.Encoding + } + return "" +} + +func (x *DataDiscoverySpec_StorageConfig_JsonOptions) GetTypeInferenceDisabled() bool { + if x != nil { + return x.TypeInferenceDisabled + } + return false +} + +// Describes BigQuery publishing configurations. +type DataDiscoveryResult_BigQueryPublishing struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Output only. The BigQuery dataset to publish to. It takes the form + // `projects/{project_id}/datasets/{dataset_id}`. + // If not set, the service creates a default publishing dataset. + Dataset string `protobuf:"bytes,1,opt,name=dataset,proto3" json:"dataset,omitempty"` +} + +func (x *DataDiscoveryResult_BigQueryPublishing) Reset() { + *x = DataDiscoveryResult_BigQueryPublishing{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DataDiscoveryResult_BigQueryPublishing) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DataDiscoveryResult_BigQueryPublishing) ProtoMessage() {} + +func (x *DataDiscoveryResult_BigQueryPublishing) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DataDiscoveryResult_BigQueryPublishing.ProtoReflect.Descriptor instead. +func (*DataDiscoveryResult_BigQueryPublishing) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_data_discovery_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *DataDiscoveryResult_BigQueryPublishing) GetDataset() string { + if x != nil { + return x.Dataset + } + return "" +} + +var File_google_cloud_dataplex_v1_data_discovery_proto protoreflect.FileDescriptor + +var file_google_cloud_dataplex_v1_data_discovery_proto_rawDesc = []byte{ + 0x0a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x18, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, + 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xca, 0x09, 0x0a, 0x11, 0x44, 0x61, 0x74, 0x61, 0x44, 0x69, + 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x87, 0x01, 0x0a, 0x1a, + 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x42, 0x69, + 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x18, 0x62, 0x69, 0x67, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x62, 0x0a, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x44, 0x69, 0x73, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0xa8, 0x02, 0x0a, 0x18, 0x42, 0x69, + 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x72, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x54, 0x0a, 0x0a, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x34, + 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x2e, 0x0a, 0x2c, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x42, 0x0a, 0x09, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, + 0x16, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x58, 0x54, + 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x49, 0x47, 0x4c, 0x41, + 0x4b, 0x45, 0x10, 0x02, 0x1a, 0x88, 0x05, 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2e, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x2e, 0x0a, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x61, + 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x6a, 0x0a, 0x0b, 0x63, 0x73, 0x76, 0x5f, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x73, 0x76, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x63, 0x73, 0x76, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x6d, 0x0a, 0x0c, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, + 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x6a, 0x73, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x1a, 0xce, 0x01, 0x0a, 0x0a, 0x43, 0x73, 0x76, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x24, 0x0a, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x21, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, + 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x08, 0x65, 0x6e, 0x63, + 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x0a, 0x17, 0x74, 0x79, + 0x70, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x64, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x15, 0x74, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x44, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x05, 0x71, 0x75, 0x6f, 0x74, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x71, 0x75, 0x6f, + 0x74, 0x65, 0x1a, 0x6b, 0x0a, 0x0b, 0x4a, 0x73, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x1f, 0x0a, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, + 0x6e, 0x67, 0x12, 0x3b, 0x0a, 0x17, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x15, 0x74, 0x79, 0x70, 0x65, 0x49, 0x6e, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x42, + 0x11, 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x22, 0xe6, 0x01, 0x0a, 0x13, 0x44, 0x61, 0x74, 0x61, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x76, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x76, 0x0a, 0x13, 0x62, 0x69, + 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x69, 0x6e, + 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x12, + 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x69, + 0x6e, 0x67, 0x1a, 0x57, 0x0a, 0x12, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x12, 0x41, 0x0a, 0x07, 0x64, 0x61, 0x74, 0x61, + 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0xe0, 0x41, 0x03, 0xfa, 0x41, + 0x21, 0x0a, 0x1f, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x73, + 0x65, 0x74, 0x52, 0x07, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x42, 0xac, 0x02, 0xea, 0x41, + 0x48, 0x0a, 0x1f, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x73, + 0x65, 0x74, 0x12, 0x25, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, + 0x7b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x7d, 0xea, 0x41, 0x70, 0x0a, 0x2c, 0x62, 0x69, + 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x0a, 0x1c, 0x63, 0x6f, + 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x42, 0x12, 0x44, 0x61, 0x74, 0x61, + 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x38, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2f, 0x61, + 0x70, 0x69, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x70, 0x62, 0x3b, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +} + +var ( + file_google_cloud_dataplex_v1_data_discovery_proto_rawDescOnce sync.Once + file_google_cloud_dataplex_v1_data_discovery_proto_rawDescData = file_google_cloud_dataplex_v1_data_discovery_proto_rawDesc +) + +func file_google_cloud_dataplex_v1_data_discovery_proto_rawDescGZIP() []byte { + file_google_cloud_dataplex_v1_data_discovery_proto_rawDescOnce.Do(func() { + file_google_cloud_dataplex_v1_data_discovery_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_dataplex_v1_data_discovery_proto_rawDescData) + }) + return file_google_cloud_dataplex_v1_data_discovery_proto_rawDescData +} + +var file_google_cloud_dataplex_v1_data_discovery_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_google_cloud_dataplex_v1_data_discovery_proto_goTypes = []any{ + (DataDiscoverySpec_BigQueryPublishingConfig_TableType)(0), // 0: google.cloud.dataplex.v1.DataDiscoverySpec.BigQueryPublishingConfig.TableType + (*DataDiscoverySpec)(nil), // 1: google.cloud.dataplex.v1.DataDiscoverySpec + (*DataDiscoveryResult)(nil), // 2: google.cloud.dataplex.v1.DataDiscoveryResult + (*DataDiscoverySpec_BigQueryPublishingConfig)(nil), // 3: google.cloud.dataplex.v1.DataDiscoverySpec.BigQueryPublishingConfig + (*DataDiscoverySpec_StorageConfig)(nil), // 4: google.cloud.dataplex.v1.DataDiscoverySpec.StorageConfig + (*DataDiscoverySpec_StorageConfig_CsvOptions)(nil), // 5: google.cloud.dataplex.v1.DataDiscoverySpec.StorageConfig.CsvOptions + (*DataDiscoverySpec_StorageConfig_JsonOptions)(nil), // 6: google.cloud.dataplex.v1.DataDiscoverySpec.StorageConfig.JsonOptions + (*DataDiscoveryResult_BigQueryPublishing)(nil), // 7: google.cloud.dataplex.v1.DataDiscoveryResult.BigQueryPublishing +} +var file_google_cloud_dataplex_v1_data_discovery_proto_depIdxs = []int32{ + 3, // 0: google.cloud.dataplex.v1.DataDiscoverySpec.bigquery_publishing_config:type_name -> google.cloud.dataplex.v1.DataDiscoverySpec.BigQueryPublishingConfig + 4, // 1: google.cloud.dataplex.v1.DataDiscoverySpec.storage_config:type_name -> google.cloud.dataplex.v1.DataDiscoverySpec.StorageConfig + 7, // 2: google.cloud.dataplex.v1.DataDiscoveryResult.bigquery_publishing:type_name -> google.cloud.dataplex.v1.DataDiscoveryResult.BigQueryPublishing + 0, // 3: google.cloud.dataplex.v1.DataDiscoverySpec.BigQueryPublishingConfig.table_type:type_name -> google.cloud.dataplex.v1.DataDiscoverySpec.BigQueryPublishingConfig.TableType + 5, // 4: google.cloud.dataplex.v1.DataDiscoverySpec.StorageConfig.csv_options:type_name -> google.cloud.dataplex.v1.DataDiscoverySpec.StorageConfig.CsvOptions + 6, // 5: google.cloud.dataplex.v1.DataDiscoverySpec.StorageConfig.json_options:type_name -> google.cloud.dataplex.v1.DataDiscoverySpec.StorageConfig.JsonOptions + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name +} + +func init() { file_google_cloud_dataplex_v1_data_discovery_proto_init() } +func file_google_cloud_dataplex_v1_data_discovery_proto_init() { + if File_google_cloud_dataplex_v1_data_discovery_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*DataDiscoverySpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*DataDiscoveryResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*DataDiscoverySpec_BigQueryPublishingConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[3].Exporter = func(v any, i int) any { + switch v := v.(*DataDiscoverySpec_StorageConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[4].Exporter = func(v any, i int) any { + switch v := v.(*DataDiscoverySpec_StorageConfig_CsvOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[5].Exporter = func(v any, i int) any { + switch v := v.(*DataDiscoverySpec_StorageConfig_JsonOptions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[6].Exporter = func(v any, i int) any { + switch v := v.(*DataDiscoveryResult_BigQueryPublishing); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes[0].OneofWrappers = []any{ + (*DataDiscoverySpec_StorageConfig_)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_google_cloud_dataplex_v1_data_discovery_proto_rawDesc, + NumEnums: 1, + NumMessages: 7, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_google_cloud_dataplex_v1_data_discovery_proto_goTypes, + DependencyIndexes: file_google_cloud_dataplex_v1_data_discovery_proto_depIdxs, + EnumInfos: file_google_cloud_dataplex_v1_data_discovery_proto_enumTypes, + MessageInfos: file_google_cloud_dataplex_v1_data_discovery_proto_msgTypes, + }.Build() + File_google_cloud_dataplex_v1_data_discovery_proto = out.File + file_google_cloud_dataplex_v1_data_discovery_proto_rawDesc = nil + file_google_cloud_dataplex_v1_data_discovery_proto_goTypes = nil + file_google_cloud_dataplex_v1_data_discovery_proto_depIdxs = nil +} diff --git a/dataplex/apiv1/dataplexpb/data_profile.pb.go b/dataplex/apiv1/dataplexpb/data_profile.pb.go index 12e0e082ca1e..b1de672b3e13 100755 --- a/dataplex/apiv1/dataplexpb/data_profile.pb.go +++ b/dataplex/apiv1/dataplexpb/data_profile.pb.go @@ -618,14 +618,14 @@ type DataProfileResult_Profile_Field_ProfileInfo struct { // Ratio of rows with null value against total scanned rows. NullRatio float64 `protobuf:"fixed64,2,opt,name=null_ratio,json=nullRatio,proto3" json:"null_ratio,omitempty"` // Ratio of rows with distinct values against total scanned rows. - // Not available for complex non-groupable field type RECORD and fields - // with REPEATABLE mode. + // Not available for complex non-groupable field type, including RECORD, + // ARRAY, GEOGRAPHY, and JSON, as well as fields with REPEATABLE mode. DistinctRatio float64 `protobuf:"fixed64,3,opt,name=distinct_ratio,json=distinctRatio,proto3" json:"distinct_ratio,omitempty"` // The list of top N non-null values, frequency and ratio with which // they occur in the scanned data. N is 10 or equal to the number of // distinct values in the field, whichever is smaller. Not available for - // complex non-groupable field type RECORD and fields with REPEATABLE - // mode. + // complex non-groupable field type, including RECORD, ARRAY, GEOGRAPHY, + // and JSON, as well as fields with REPEATABLE mode. TopNValues []*DataProfileResult_Profile_Field_ProfileInfo_TopNValue `protobuf:"bytes,4,rep,name=top_n_values,json=topNValues,proto3" json:"top_n_values,omitempty"` // Structural and profile information for specific field type. Not // available, if mode is REPEATABLE. diff --git a/dataplex/apiv1/dataplexpb/data_quality.pb.go b/dataplex/apiv1/dataplexpb/data_quality.pb.go index a3ac658c89f4..347b6f9440a6 100755 --- a/dataplex/apiv1/dataplexpb/data_quality.pb.go +++ b/dataplex/apiv1/dataplexpb/data_quality.pb.go @@ -568,7 +568,7 @@ type DataQualityDimension struct { // The dimension name a rule belongs to. Supported dimensions are // ["COMPLETENESS", "ACCURACY", "CONSISTENCY", "VALIDITY", "UNIQUENESS", - // "INTEGRITY"] + // "FRESHNESS", "VOLUME"] Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } @@ -646,7 +646,8 @@ type DataQualityRule struct { IgnoreNull bool `protobuf:"varint,501,opt,name=ignore_null,json=ignoreNull,proto3" json:"ignore_null,omitempty"` // Required. The dimension a rule belongs to. Results are also aggregated at // the dimension level. Supported dimensions are **["COMPLETENESS", - // "ACCURACY", "CONSISTENCY", "VALIDITY", "UNIQUENESS", "INTEGRITY"]** + // "ACCURACY", "CONSISTENCY", "VALIDITY", "UNIQUENESS", "FRESHNESS", + // "VOLUME"]** Dimension string `protobuf:"bytes,502,opt,name=dimension,proto3" json:"dimension,omitempty"` // Optional. The minimum ratio of **passing_rows / total_rows** required to // pass this rule, with a range of [0.0, 1.0]. @@ -667,6 +668,9 @@ type DataQualityRule struct { // // * The maximum length is 1,024 characters. Description string `protobuf:"bytes,505,opt,name=description,proto3" json:"description,omitempty"` + // Optional. Whether the Rule is active or suspended. + // Default is false. + Suspended bool `protobuf:"varint,506,opt,name=suspended,proto3" json:"suspended,omitempty"` } func (x *DataQualityRule) Reset() { @@ -813,6 +817,13 @@ func (x *DataQualityRule) GetDescription() string { return "" } +func (x *DataQualityRule) GetSuspended() bool { + if x != nil { + return x.Suspended + } + return false +} + type isDataQualityRule_RuleType interface { isDataQualityRule_RuleType() } @@ -2145,7 +2156,7 @@ var file_google_cloud_dataplex_v1_data_quality_proto_rawDesc = []byte{ 0x72, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa6, 0x11, 0x0a, 0x0f, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xca, 0x11, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x69, 0x0a, 0x11, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, @@ -2225,85 +2236,87 @@ var file_google_cloud_dataplex_v1_data_quality_proto_rawDesc = []byte{ 0xf8, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xf9, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xbc, 0x01, 0x0a, 0x10, 0x52, 0x61, - 0x6e, 0x67, 0x65, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, - 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, 0x6d, 0x69, 0x6e, - 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, - 0xe0, 0x41, 0x01, 0x52, 0x10, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x4d, 0x69, 0x6e, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, - 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x4d, 0x61, - 0x78, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x1a, 0x14, 0x0a, 0x12, 0x4e, 0x6f, 0x6e, 0x4e, - 0x75, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x2d, - 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x1b, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x2d, 0x0a, - 0x10, 0x52, 0x65, 0x67, 0x65, 0x78, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x19, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x1a, 0x17, 0x0a, 0x15, - 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x73, 0x73, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x85, 0x03, 0x0a, 0x19, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x76, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x53, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x75, 0x6c, - 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x52, 0x61, 0x6e, 0x67, 0x65, - 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6c, 0x75, - 0x6d, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x12, 0x20, 0x0a, 0x09, 0x6d, - 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x01, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a, - 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, - 0x31, 0x0a, 0x12, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x10, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x4d, 0x69, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x78, - 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, - 0xe0, 0x41, 0x01, 0x52, 0x10, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x4d, 0x61, 0x78, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x46, 0x0a, 0x0f, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x54, 0x41, 0x54, - 0x49, 0x53, 0x54, 0x49, 0x43, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x45, 0x41, 0x4e, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x4d, - 0x49, 0x4e, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x4d, 0x41, 0x58, 0x10, 0x03, 0x1a, 0x45, 0x0a, - 0x17, 0x52, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, - 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x0e, 0x73, 0x71, 0x6c, 0x5f, - 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x73, 0x71, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x47, 0x0a, 0x19, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x2a, 0x0a, 0x0e, 0x73, 0x71, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, - 0x73, 0x71, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x38, 0x0a, - 0x0c, 0x53, 0x71, 0x6c, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, - 0x0d, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x73, 0x71, 0x6c, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x22, 0x60, 0x0a, 0x17, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, - 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, - 0x1b, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x1e, 0x0a, 0x05, - 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0xc4, 0x01, 0xea, 0x41, 0x55, 0x0a, 0x1d, 0x62, 0x69, - 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x34, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, - 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, - 0x74, 0x7d, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x7d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x42, - 0x10, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, - 0x78, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, - 0x70, 0x62, 0x3b, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x70, 0x62, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x09, 0x73, 0x75, 0x73, + 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0xfa, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x09, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x1a, 0xbc, 0x01, + 0x0a, 0x10, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x6d, 0x61, + 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, + 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x4d, + 0x69, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x74, 0x72, + 0x69, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x73, 0x74, 0x72, 0x69, + 0x63, 0x74, 0x4d, 0x61, 0x78, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x1a, 0x14, 0x0a, 0x12, + 0x4e, 0x6f, 0x6e, 0x4e, 0x75, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x1a, 0x2d, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x1a, 0x2d, 0x0a, 0x10, 0x52, 0x65, 0x67, 0x65, 0x78, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x72, 0x65, 0x67, 0x65, 0x78, + 0x1a, 0x17, 0x0a, 0x15, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x6e, 0x65, 0x73, 0x73, 0x45, 0x78, + 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x85, 0x03, 0x0a, 0x19, 0x53, 0x74, + 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x70, 0x65, + 0x63, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x76, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, + 0x73, 0x74, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x53, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, + 0x79, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x52, + 0x61, 0x6e, 0x67, 0x65, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x12, + 0x20, 0x0a, 0x09, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x5f, 0x6d, 0x69, + 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x4d, 0x69, 0x6e, 0x45, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, + 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x4d, + 0x61, 0x78, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x46, 0x0a, 0x0f, 0x43, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x12, 0x17, 0x0a, 0x13, + 0x53, 0x54, 0x41, 0x54, 0x49, 0x53, 0x54, 0x49, 0x43, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, + 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x45, 0x41, 0x4e, 0x10, 0x01, 0x12, + 0x07, 0x0a, 0x03, 0x4d, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x4d, 0x41, 0x58, 0x10, + 0x03, 0x1a, 0x45, 0x0a, 0x17, 0x52, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x0e, + 0x73, 0x71, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x73, 0x71, 0x6c, 0x45, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x47, 0x0a, 0x19, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x0e, 0x73, 0x71, 0x6c, 0x5f, 0x65, 0x78, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x0d, 0x73, 0x71, 0x6c, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x1a, 0x38, 0x0a, 0x0c, 0x53, 0x71, 0x6c, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x73, + 0x71, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x72, + 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x60, 0x0a, 0x17, 0x44, 0x61, 0x74, 0x61, + 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, + 0x12, 0x1e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x88, 0x01, 0x01, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0xc4, 0x01, 0xea, 0x41, 0x55, + 0x0a, 0x1d, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, + 0x34, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x64, 0x61, + 0x74, 0x61, 0x73, 0x65, 0x74, 0x7d, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x7d, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, + 0x2e, 0x76, 0x31, 0x42, 0x10, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x65, 0x78, 0x70, 0x62, 0x3b, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x70, + 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/dataplex/apiv1/dataplexpb/datascans.pb.go b/dataplex/apiv1/dataplexpb/datascans.pb.go index fc000208dddb..901ee8ed0462 100755 --- a/dataplex/apiv1/dataplexpb/datascans.pb.go +++ b/dataplex/apiv1/dataplexpb/datascans.pb.go @@ -44,16 +44,18 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// The type of DataScan. +// The type of data scan. type DataScanType int32 const ( - // The DataScan type is unspecified. + // The data scan type is unspecified. DataScanType_DATA_SCAN_TYPE_UNSPECIFIED DataScanType = 0 - // Data Quality scan. + // Data quality scan. DataScanType_DATA_QUALITY DataScanType = 1 - // Data Profile scan. + // Data profile scan. DataScanType_DATA_PROFILE DataScanType = 2 + // Data discovery scan. + DataScanType_DATA_DISCOVERY DataScanType = 3 ) // Enum value maps for DataScanType. @@ -62,11 +64,13 @@ var ( 0: "DATA_SCAN_TYPE_UNSPECIFIED", 1: "DATA_QUALITY", 2: "DATA_PROFILE", + 3: "DATA_DISCOVERY", } DataScanType_value = map[string]int32{ "DATA_SCAN_TYPE_UNSPECIFIED": 0, "DATA_QUALITY": 1, "DATA_PROFILE": 2, + "DATA_DISCOVERY": 3, } ) @@ -1180,14 +1184,16 @@ type DataScan struct { ExecutionStatus *DataScan_ExecutionStatus `protobuf:"bytes,11,opt,name=execution_status,json=executionStatus,proto3" json:"execution_status,omitempty"` // Output only. The type of DataScan. Type DataScanType `protobuf:"varint,12,opt,name=type,proto3,enum=google.cloud.dataplex.v1.DataScanType" json:"type,omitempty"` - // Data Scan related setting. - // It is required and immutable which means once data_quality_spec is set, it - // cannot be changed to data_profile_spec. + // Data scan related setting. + // The settings are required and immutable. After you configure the settings + // for one type of data scan, you can't change the data scan to a different + // type of data scan. // // Types that are assignable to Spec: // // *DataScan_DataQualitySpec // *DataScan_DataProfileSpec + // *DataScan_DataDiscoverySpec Spec isDataScan_Spec `protobuf_oneof:"spec"` // The result of the data scan. // @@ -1195,6 +1201,7 @@ type DataScan struct { // // *DataScan_DataQualityResult // *DataScan_DataProfileResult + // *DataScan_DataDiscoveryResult Result isDataScan_Result `protobuf_oneof:"result"` } @@ -1335,6 +1342,13 @@ func (x *DataScan) GetDataProfileSpec() *DataProfileSpec { return nil } +func (x *DataScan) GetDataDiscoverySpec() *DataDiscoverySpec { + if x, ok := x.GetSpec().(*DataScan_DataDiscoverySpec); ok { + return x.DataDiscoverySpec + } + return nil +} + func (m *DataScan) GetResult() isDataScan_Result { if m != nil { return m.Result @@ -1356,42 +1370,63 @@ func (x *DataScan) GetDataProfileResult() *DataProfileResult { return nil } +func (x *DataScan) GetDataDiscoveryResult() *DataDiscoveryResult { + if x, ok := x.GetResult().(*DataScan_DataDiscoveryResult); ok { + return x.DataDiscoveryResult + } + return nil +} + type isDataScan_Spec interface { isDataScan_Spec() } type DataScan_DataQualitySpec struct { - // DataQualityScan related setting. + // Settings for a data quality scan. DataQualitySpec *DataQualitySpec `protobuf:"bytes,100,opt,name=data_quality_spec,json=dataQualitySpec,proto3,oneof"` } type DataScan_DataProfileSpec struct { - // DataProfileScan related setting. + // Settings for a data profile scan. DataProfileSpec *DataProfileSpec `protobuf:"bytes,101,opt,name=data_profile_spec,json=dataProfileSpec,proto3,oneof"` } +type DataScan_DataDiscoverySpec struct { + // Settings for a data discovery scan. + DataDiscoverySpec *DataDiscoverySpec `protobuf:"bytes,102,opt,name=data_discovery_spec,json=dataDiscoverySpec,proto3,oneof"` +} + func (*DataScan_DataQualitySpec) isDataScan_Spec() {} func (*DataScan_DataProfileSpec) isDataScan_Spec() {} +func (*DataScan_DataDiscoverySpec) isDataScan_Spec() {} + type isDataScan_Result interface { isDataScan_Result() } type DataScan_DataQualityResult struct { - // Output only. The result of the data quality scan. + // Output only. The result of a data quality scan. DataQualityResult *DataQualityResult `protobuf:"bytes,200,opt,name=data_quality_result,json=dataQualityResult,proto3,oneof"` } type DataScan_DataProfileResult struct { - // Output only. The result of the data profile scan. + // Output only. The result of a data profile scan. DataProfileResult *DataProfileResult `protobuf:"bytes,201,opt,name=data_profile_result,json=dataProfileResult,proto3,oneof"` } +type DataScan_DataDiscoveryResult struct { + // Output only. The result of a data discovery scan. + DataDiscoveryResult *DataDiscoveryResult `protobuf:"bytes,202,opt,name=data_discovery_result,json=dataDiscoveryResult,proto3,oneof"` +} + func (*DataScan_DataQualityResult) isDataScan_Result() {} func (*DataScan_DataProfileResult) isDataScan_Result() {} +func (*DataScan_DataDiscoveryResult) isDataScan_Result() {} + // A DataScanJob represents an instance of DataScan execution. type DataScanJob struct { state protoimpl.MessageState @@ -1405,6 +1440,8 @@ type DataScanJob struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Output only. System generated globally unique ID for the DataScanJob. Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"` + // Output only. The time when the DataScanJob was created. + CreateTime *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"` // Output only. The time when the DataScanJob was started. StartTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` // Output only. The time when the DataScanJob ended. @@ -1415,12 +1452,13 @@ type DataScanJob struct { Message string `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"` // Output only. The type of the parent DataScan. Type DataScanType `protobuf:"varint,7,opt,name=type,proto3,enum=google.cloud.dataplex.v1.DataScanType" json:"type,omitempty"` - // Data Scan related setting. + // Data scan related setting. // // Types that are assignable to Spec: // // *DataScanJob_DataQualitySpec // *DataScanJob_DataProfileSpec + // *DataScanJob_DataDiscoverySpec Spec isDataScanJob_Spec `protobuf_oneof:"spec"` // The result of the data scan. // @@ -1428,6 +1466,7 @@ type DataScanJob struct { // // *DataScanJob_DataQualityResult // *DataScanJob_DataProfileResult + // *DataScanJob_DataDiscoveryResult Result isDataScanJob_Result `protobuf_oneof:"result"` } @@ -1477,6 +1516,13 @@ func (x *DataScanJob) GetUid() string { return "" } +func (x *DataScanJob) GetCreateTime() *timestamppb.Timestamp { + if x != nil { + return x.CreateTime + } + return nil +} + func (x *DataScanJob) GetStartTime() *timestamppb.Timestamp { if x != nil { return x.StartTime @@ -1533,6 +1579,13 @@ func (x *DataScanJob) GetDataProfileSpec() *DataProfileSpec { return nil } +func (x *DataScanJob) GetDataDiscoverySpec() *DataDiscoverySpec { + if x, ok := x.GetSpec().(*DataScanJob_DataDiscoverySpec); ok { + return x.DataDiscoverySpec + } + return nil +} + func (m *DataScanJob) GetResult() isDataScanJob_Result { if m != nil { return m.Result @@ -1554,42 +1607,63 @@ func (x *DataScanJob) GetDataProfileResult() *DataProfileResult { return nil } +func (x *DataScanJob) GetDataDiscoveryResult() *DataDiscoveryResult { + if x, ok := x.GetResult().(*DataScanJob_DataDiscoveryResult); ok { + return x.DataDiscoveryResult + } + return nil +} + type isDataScanJob_Spec interface { isDataScanJob_Spec() } type DataScanJob_DataQualitySpec struct { - // Output only. DataQualityScan related setting. + // Output only. Settings for a data quality scan. DataQualitySpec *DataQualitySpec `protobuf:"bytes,100,opt,name=data_quality_spec,json=dataQualitySpec,proto3,oneof"` } type DataScanJob_DataProfileSpec struct { - // Output only. DataProfileScan related setting. + // Output only. Settings for a data profile scan. DataProfileSpec *DataProfileSpec `protobuf:"bytes,101,opt,name=data_profile_spec,json=dataProfileSpec,proto3,oneof"` } +type DataScanJob_DataDiscoverySpec struct { + // Output only. Settings for a data discovery scan. + DataDiscoverySpec *DataDiscoverySpec `protobuf:"bytes,102,opt,name=data_discovery_spec,json=dataDiscoverySpec,proto3,oneof"` +} + func (*DataScanJob_DataQualitySpec) isDataScanJob_Spec() {} func (*DataScanJob_DataProfileSpec) isDataScanJob_Spec() {} +func (*DataScanJob_DataDiscoverySpec) isDataScanJob_Spec() {} + type isDataScanJob_Result interface { isDataScanJob_Result() } type DataScanJob_DataQualityResult struct { - // Output only. The result of the data quality scan. + // Output only. The result of a data quality scan. DataQualityResult *DataQualityResult `protobuf:"bytes,200,opt,name=data_quality_result,json=dataQualityResult,proto3,oneof"` } type DataScanJob_DataProfileResult struct { - // Output only. The result of the data profile scan. + // Output only. The result of a data profile scan. DataProfileResult *DataProfileResult `protobuf:"bytes,201,opt,name=data_profile_result,json=dataProfileResult,proto3,oneof"` } +type DataScanJob_DataDiscoveryResult struct { + // Output only. The result of a data discovery scan. + DataDiscoveryResult *DataDiscoveryResult `protobuf:"bytes,202,opt,name=data_discovery_result,json=dataDiscoveryResult,proto3,oneof"` +} + func (*DataScanJob_DataQualityResult) isDataScanJob_Result() {} func (*DataScanJob_DataProfileResult) isDataScanJob_Result() {} +func (*DataScanJob_DataDiscoveryResult) isDataScanJob_Result() {} + // DataScan execution settings. type DataScan_ExecutionSpec struct { state protoimpl.MessageState @@ -1761,462 +1835,496 @@ var file_google_cloud_dataplex_v1_datascans_proto_rawDesc = []byte{ 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2f, 0x76, - 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2f, 0x76, 0x31, 0x2f, 0x64, - 0x61, 0x74, 0x61, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x29, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x63, - 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x65, 0x78, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, + 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2f, 0x76, 0x31, - 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, - 0x6e, 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0xf1, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, - 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, - 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, - 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x12, 0x44, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x18, 0x02, 0x20, + 0x2f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x2b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x29, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, + 0x73, 0x73, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x65, 0x78, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2f, 0x76, 0x31, 0x2f, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, + 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xf1, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, + 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, + 0x44, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x64, 0x61, 0x74, + 0x61, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x25, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, + 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0d, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0xc9, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x44, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x64, 0x61, - 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x25, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, - 0x63, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x28, 0x0a, - 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0xc9, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x44, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, + 0x6c, 0x79, 0x22, 0x55, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x22, 0x0a, 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x53, + 0x63, 0x61, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xeb, 0x01, 0x0a, 0x12, 0x47, 0x65, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, + 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x52, + 0x0a, 0x04, 0x76, 0x69, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, + 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, + 0x63, 0x61, 0x6e, 0x56, 0x69, 0x65, 0x77, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x76, 0x69, + 0x65, 0x77, 0x22, 0x43, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x56, 0x69, + 0x65, 0x77, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x5f, + 0x56, 0x49, 0x45, 0x57, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x41, 0x53, 0x49, 0x43, 0x10, 0x01, 0x12, 0x08, 0x0a, + 0x04, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x0a, 0x22, 0xdc, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, + 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, + 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, + 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0xa4, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x41, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x64, - 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, - 0x6e, 0x6c, 0x79, 0x22, 0x55, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, - 0x41, 0x22, 0x0a, 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, - 0x53, 0x63, 0x61, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xeb, 0x01, 0x0a, 0x12, 0x47, - 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, - 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x52, 0x0a, 0x04, 0x76, 0x69, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, - 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, - 0x53, 0x63, 0x61, 0x6e, 0x56, 0x69, 0x65, 0x77, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x76, - 0x69, 0x65, 0x77, 0x22, 0x43, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x56, - 0x69, 0x65, 0x77, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x53, 0x43, 0x41, 0x4e, - 0x5f, 0x56, 0x49, 0x45, 0x57, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x41, 0x53, 0x49, 0x43, 0x10, 0x01, 0x12, 0x08, - 0x0a, 0x04, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x0a, 0x22, 0xdc, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, - 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, - 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0xa4, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, - 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x41, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, + 0x61, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, + 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, + 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x52, 0x0a, + 0x12, 0x52, 0x75, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x4e, 0x0a, 0x13, 0x52, 0x75, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x03, 0x6a, 0x6f, 0x62, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x53, - 0x63, 0x61, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, - 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, - 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x52, - 0x0a, 0x12, 0x52, 0x75, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x4e, 0x0a, 0x13, 0x52, 0x75, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x03, 0x6a, 0x6f, 0x62, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, - 0x6f, 0x62, 0x22, 0xfe, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, - 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xe0, 0x41, 0x02, 0xfa, - 0x41, 0x25, 0x0a, 0x23, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, - 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x58, 0x0a, - 0x04, 0x76, 0x69, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x67, 0x6f, + 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x03, 0x6a, 0x6f, + 0x62, 0x22, 0xfe, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, + 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2b, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x25, 0x0a, 0x23, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x53, + 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x04, + 0x76, 0x69, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, + 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x56, 0x69, 0x65, 0x77, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x04, 0x76, 0x69, 0x65, 0x77, 0x22, 0x4a, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, + 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x56, 0x69, 0x65, 0x77, 0x12, 0x22, 0x0a, 0x1e, 0x44, 0x41, 0x54, + 0x41, 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x5f, 0x4a, 0x4f, 0x42, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, + 0x05, 0x42, 0x41, 0x53, 0x49, 0x43, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x55, 0x4c, 0x4c, + 0x10, 0x0a, 0x22, 0xbe, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, + 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, + 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, + 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x22, 0x8f, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, + 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x4b, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x6a, 0x6f, + 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x52, + 0x0c, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x26, 0x0a, + 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x3a, 0x0a, 0x1f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x75, 0x6c, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x61, 0x0a, 0x20, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, + 0x72, 0x75, 0x6c, 0x65, 0x22, 0xd3, 0x0e, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, + 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x03, 0x75, 0x69, + 0x64, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x4b, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x53, 0x63, 0x61, 0x6e, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x3a, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3d, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, - 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, - 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x56, 0x69, 0x65, 0x77, 0x42, 0x03, 0xe0, 0x41, - 0x01, 0x52, 0x04, 0x76, 0x69, 0x65, 0x77, 0x22, 0x4a, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x53, - 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x56, 0x69, 0x65, 0x77, 0x12, 0x22, 0x0a, 0x1e, 0x44, 0x41, - 0x54, 0x41, 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x5f, 0x4a, 0x4f, 0x42, 0x5f, 0x56, 0x49, 0x45, 0x57, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, - 0x0a, 0x05, 0x42, 0x41, 0x53, 0x49, 0x43, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x55, 0x4c, - 0x4c, 0x10, 0x0a, 0x22, 0xbe, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, - 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x40, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, - 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, - 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, - 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x22, 0x8f, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x4b, 0x0a, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x6a, - 0x6f, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, - 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, - 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x26, - 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, - 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x3a, 0x0a, 0x1f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x75, 0x6c, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x61, 0x0a, 0x20, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x44, 0x61, - 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5c, 0x0a, 0x0e, + 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x52, - 0x04, 0x72, 0x75, 0x6c, 0x65, 0x22, 0x89, 0x0d, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, - 0x61, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x75, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x03, 0x75, - 0x69, 0x64, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x69, 0x73, - 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x4b, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, - 0x61, 0x53, 0x63, 0x61, 0x6e, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x3a, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x62, 0x0a, 0x10, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, + 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3f, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x57, 0x0a, 0x11, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, + 0x73, 0x70, 0x65, 0x63, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, + 0x79, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, + 0x6c, 0x69, 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x57, 0x0a, 0x11, 0x64, 0x61, 0x74, 0x61, + 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x65, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, + 0x52, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x70, 0x65, + 0x63, 0x12, 0x5d, 0x0a, 0x13, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x79, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x44, 0x69, + 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x11, 0x64, + 0x61, 0x74, 0x61, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x53, 0x70, 0x65, 0x63, + 0x12, 0x63, 0x0a, 0x13, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0xc8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x48, 0x01, 0x52, 0x11, 0x64, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x63, 0x0a, 0x13, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0xc9, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x11, 0x64, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x69, 0x0a, 0x15, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x18, 0xca, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, + 0x52, 0x13, 0x64, 0x61, 0x74, 0x61, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1a, 0x7d, 0x0a, 0x0d, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x40, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, + 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x48, 0x00, 0x52, 0x05, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x61, 0x6c, 0x1a, 0x81, 0x02, 0x0a, 0x0f, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4d, 0x0a, 0x15, 0x6c, 0x61, 0x74, 0x65, + 0x73, 0x74, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x12, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x13, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x10, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x45, 0x6e, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x16, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6a, 0x6f, 0x62, + 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x13, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x3a, 0x63, 0xea, 0x41, 0x60, 0x0a, 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x3c, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x73, 0x2f, 0x7b, 0x64, + 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x7d, 0x42, 0x06, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, + 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xf0, 0x09, 0x0a, 0x0b, 0x44, + 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3d, - 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5c, 0x0a, - 0x0e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x65, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x62, 0x0a, 0x10, 0x65, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x3f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, + 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x0a, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, + 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, + 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x3f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x12, 0x57, 0x0a, 0x11, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x12, 0x5c, 0x0a, 0x11, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, - 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x51, 0x75, - 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x57, 0x0a, 0x11, 0x64, 0x61, 0x74, - 0x61, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x65, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, - 0x00, 0x52, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x70, - 0x65, 0x63, 0x12, 0x63, 0x0a, 0x13, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, - 0x74, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0xc8, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, - 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x48, 0x01, 0x52, 0x11, 0x64, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, - 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x63, 0x0a, 0x13, 0x64, 0x61, 0x74, 0x61, 0x5f, - 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0xc9, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x11, 0x64, 0x61, 0x74, 0x61, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1a, 0x7d, 0x0a, 0x0d, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x40, 0x0a, - 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, - 0x1b, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x05, 0x48, 0x00, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x0d, 0x0a, 0x0b, - 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x1a, 0x81, 0x02, 0x0a, 0x0f, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x4d, 0x0a, 0x15, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x6c, 0x61, 0x74, 0x65, - 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x49, - 0x0a, 0x13, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x65, 0x6e, 0x64, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4a, - 0x6f, 0x62, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x16, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x74, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x13, 0x6c, 0x61, 0x74, 0x65, - 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x1a, - 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x63, 0xea, 0x41, 0x60, 0x0a, - 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, - 0x6e, 0x12, 0x3c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x53, - 0x63, 0x61, 0x6e, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x7d, 0x42, - 0x06, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0xdf, 0x07, 0x0a, 0x0b, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, - 0x62, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x75, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x03, 0x75, 0x69, - 0x64, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x46, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, - 0x4a, 0x6f, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x3f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, - 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x5c, 0x0a, 0x11, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x71, 0x75, - 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, - 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x48, 0x00, 0x52, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, - 0x70, 0x65, 0x63, 0x12, 0x5c, 0x0a, 0x11, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, - 0x52, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x70, 0x65, - 0x63, 0x12, 0x63, 0x0a, 0x13, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, - 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0xc8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, - 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x48, 0x01, 0x52, 0x11, 0x64, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x63, 0x0a, 0x13, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0xc9, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x11, 0x64, 0x61, 0x74, 0x61, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x71, 0x0a, 0x05, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, - 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, 0x4e, 0x43, - 0x45, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, 0x4e, 0x43, 0x45, - 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, - 0x44, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, - 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x07, 0x3a, 0x71, - 0xea, 0x41, 0x6e, 0x0a, 0x23, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, - 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x47, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, - 0x61, 0x53, 0x63, 0x61, 0x6e, 0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x6a, 0x6f, 0x62, - 0x7d, 0x42, 0x06, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x2a, 0x52, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x53, 0x43, 0x41, 0x4e, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x51, 0x55, 0x41, 0x4c, - 0x49, 0x54, 0x59, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x50, 0x52, - 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x02, 0x32, 0xb6, 0x0f, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, - 0x53, 0x63, 0x61, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xe3, 0x01, 0x0a, 0x0e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x2f, + 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x0f, 0x64, + 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5c, + 0x0a, 0x11, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, + 0x70, 0x65, 0x63, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, + 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x61, 0x74, + 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x62, 0x0a, 0x13, + 0x64, 0x61, 0x74, 0x61, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x73, + 0x70, 0x65, 0x63, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, + 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x79, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, 0x52, 0x11, 0x64, + 0x61, 0x74, 0x61, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x53, 0x70, 0x65, 0x63, + 0x12, 0x63, 0x0a, 0x13, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0xc8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, - 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x80, - 0x01, 0xca, 0x41, 0x1d, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x11, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0xda, 0x41, 0x1d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x64, 0x61, 0x74, 0x61, 0x5f, - 0x73, 0x63, 0x61, 0x6e, 0x2c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x69, - 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x3a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, - 0x61, 0x6e, 0x22, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, - 0x73, 0x12, 0xe5, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, - 0x53, 0x63, 0x61, 0x6e, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, - 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x82, 0x01, 0xca, 0x41, 0x1d, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, - 0x53, 0x63, 0x61, 0x6e, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x15, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, - 0x63, 0x61, 0x6e, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x3a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6e, - 0x32, 0x37, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6e, - 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, - 0x61, 0x53, 0x63, 0x61, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xcb, 0x01, 0x0a, 0x0e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x2f, 0x2e, 0x67, + 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x48, 0x01, 0x52, 0x11, 0x64, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x63, 0x0a, 0x13, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0xc9, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x11, 0x64, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x69, 0x0a, 0x15, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x18, 0xca, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, + 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, + 0x52, 0x13, 0x64, 0x61, 0x74, 0x61, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x71, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, + 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, + 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x49, 0x4e, 0x47, 0x10, + 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x03, + 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x04, 0x12, + 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x50, + 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x07, 0x3a, 0x71, 0xea, 0x41, 0x6e, 0x0a, 0x23, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, + 0x6f, 0x62, 0x12, 0x47, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, + 0x53, 0x63, 0x61, 0x6e, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x7d, + 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x7b, 0x6a, 0x6f, 0x62, 0x7d, 0x42, 0x06, 0x0a, 0x04, 0x73, + 0x70, 0x65, 0x63, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2a, 0x66, 0x0a, + 0x0c, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, + 0x1a, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, + 0x0c, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x01, 0x12, + 0x10, 0x0a, 0x0c, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x10, + 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, + 0x45, 0x52, 0x59, 0x10, 0x03, 0x32, 0xb6, 0x0f, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, + 0x61, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xe3, 0x01, 0x0a, 0x0e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, + 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, - 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x69, 0xca, 0x41, - 0x2a, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x2a, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, + 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x80, 0x01, 0xca, + 0x41, 0x1d, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x11, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, + 0x41, 0x1d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, + 0x61, 0x6e, 0x2c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x3a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6e, + 0x22, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x73, 0x12, + 0xe5, 0x01, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, + 0x61, 0x6e, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, + 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x82, 0x01, 0xca, 0x41, 0x1d, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, + 0x61, 0x6e, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x15, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x61, + 0x6e, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x44, 0x3a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x32, 0x37, + 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x53, - 0x63, 0x61, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x9d, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x22, 0x3c, 0xda, 0x41, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x53, - 0x63, 0x61, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xb0, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, - 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x73, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, - 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, - 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, - 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, 0xda, 0x41, 0x06, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, - 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, - 0x2f, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x73, 0x12, 0xaf, 0x01, 0x0a, 0x0b, 0x52, - 0x75, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, + 0x63, 0x61, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xcb, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x3a, 0x01, 0x2a, 0x22, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, - 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, - 0x53, 0x63, 0x61, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x75, 0x6e, 0x12, 0xad, 0x01, 0x0a, - 0x0e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x12, - 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, - 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x22, 0x43, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, + 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x69, 0xca, 0x41, 0x2a, 0x0a, + 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x2a, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, - 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xc0, 0x01, 0x0a, - 0x10, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, - 0x73, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x31, 0x2f, 0x7b, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, - 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x12, - 0xc1, 0x02, 0x0a, 0x18, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, - 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x39, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x9d, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x22, 0x3c, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, + 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, + 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xb0, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, + 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x73, 0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x51, - 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0xad, 0x01, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x9f, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x52, 0x3a, 0x01, 0x2a, 0x22, 0x4d, 0x2f, 0x76, - 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, - 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x2f, - 0x2a, 0x7d, 0x3a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x51, - 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x46, 0x2f, 0x76, 0x31, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, - 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x75, - 0x6c, 0x65, 0x73, 0x1a, 0x4b, 0xca, 0x41, 0x17, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, - 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, - 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x42, 0x6a, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3e, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x7b, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x64, + 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x73, 0x12, 0xaf, 0x01, 0x0a, 0x0b, 0x52, 0x75, 0x6e, + 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x36, 0x3a, 0x01, 0x2a, 0x22, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, + 0x61, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x75, 0x6e, 0x12, 0xad, 0x01, 0x0a, 0x0e, 0x47, + 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x12, 0x2f, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, + 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, + 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x22, 0x43, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x73, + 0x2f, 0x2a, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xc0, 0x01, 0x0a, 0x10, 0x4c, + 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x12, + 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, + 0x53, 0x63, 0x61, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x12, 0xc1, 0x02, + 0x0a, 0x18, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, - 0x42, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x50, 0x01, 0x5a, 0x38, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, - 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x70, - 0x62, 0x3b, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, + 0x6c, 0x69, 0x74, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xad, 0x01, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x9f, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x52, 0x3a, 0x01, 0x2a, 0x22, 0x4d, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, + 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, + 0x61, 0x53, 0x63, 0x61, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x6a, 0x6f, 0x62, 0x73, 0x2f, 0x2a, 0x7d, + 0x3a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, + 0x6c, 0x69, 0x74, 0x79, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x46, 0x2f, 0x76, 0x31, 0x2f, 0x7b, + 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, + 0x53, 0x63, 0x61, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x75, 0x6c, 0x65, + 0x73, 0x1a, 0x4b, 0xca, 0x41, 0x17, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, + 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x6a, + 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x42, 0x0e, + 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x38, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2f, 0x61, + 0x70, 0x69, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x70, 0x62, 0x3b, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -2263,10 +2371,12 @@ var file_google_cloud_dataplex_v1_datascans_proto_goTypes = []any{ (*DataSource)(nil), // 26: google.cloud.dataplex.v1.DataSource (*DataQualitySpec)(nil), // 27: google.cloud.dataplex.v1.DataQualitySpec (*DataProfileSpec)(nil), // 28: google.cloud.dataplex.v1.DataProfileSpec - (*DataQualityResult)(nil), // 29: google.cloud.dataplex.v1.DataQualityResult - (*DataProfileResult)(nil), // 30: google.cloud.dataplex.v1.DataProfileResult - (*Trigger)(nil), // 31: google.cloud.dataplex.v1.Trigger - (*longrunningpb.Operation)(nil), // 32: google.longrunning.Operation + (*DataDiscoverySpec)(nil), // 29: google.cloud.dataplex.v1.DataDiscoverySpec + (*DataQualityResult)(nil), // 30: google.cloud.dataplex.v1.DataQualityResult + (*DataProfileResult)(nil), // 31: google.cloud.dataplex.v1.DataProfileResult + (*DataDiscoveryResult)(nil), // 32: google.cloud.dataplex.v1.DataDiscoveryResult + (*Trigger)(nil), // 33: google.cloud.dataplex.v1.Trigger + (*longrunningpb.Operation)(nil), // 34: google.longrunning.Operation } var file_google_cloud_dataplex_v1_datascans_proto_depIdxs = []int32{ 17, // 0: google.cloud.dataplex.v1.CreateDataScanRequest.data_scan:type_name -> google.cloud.dataplex.v1.DataScan @@ -2288,43 +2398,48 @@ var file_google_cloud_dataplex_v1_datascans_proto_depIdxs = []int32{ 0, // 16: google.cloud.dataplex.v1.DataScan.type:type_name -> google.cloud.dataplex.v1.DataScanType 27, // 17: google.cloud.dataplex.v1.DataScan.data_quality_spec:type_name -> google.cloud.dataplex.v1.DataQualitySpec 28, // 18: google.cloud.dataplex.v1.DataScan.data_profile_spec:type_name -> google.cloud.dataplex.v1.DataProfileSpec - 29, // 19: google.cloud.dataplex.v1.DataScan.data_quality_result:type_name -> google.cloud.dataplex.v1.DataQualityResult - 30, // 20: google.cloud.dataplex.v1.DataScan.data_profile_result:type_name -> google.cloud.dataplex.v1.DataProfileResult - 25, // 21: google.cloud.dataplex.v1.DataScanJob.start_time:type_name -> google.protobuf.Timestamp - 25, // 22: google.cloud.dataplex.v1.DataScanJob.end_time:type_name -> google.protobuf.Timestamp - 3, // 23: google.cloud.dataplex.v1.DataScanJob.state:type_name -> google.cloud.dataplex.v1.DataScanJob.State - 0, // 24: google.cloud.dataplex.v1.DataScanJob.type:type_name -> google.cloud.dataplex.v1.DataScanType - 27, // 25: google.cloud.dataplex.v1.DataScanJob.data_quality_spec:type_name -> google.cloud.dataplex.v1.DataQualitySpec - 28, // 26: google.cloud.dataplex.v1.DataScanJob.data_profile_spec:type_name -> google.cloud.dataplex.v1.DataProfileSpec - 29, // 27: google.cloud.dataplex.v1.DataScanJob.data_quality_result:type_name -> google.cloud.dataplex.v1.DataQualityResult - 30, // 28: google.cloud.dataplex.v1.DataScanJob.data_profile_result:type_name -> google.cloud.dataplex.v1.DataProfileResult - 31, // 29: google.cloud.dataplex.v1.DataScan.ExecutionSpec.trigger:type_name -> google.cloud.dataplex.v1.Trigger - 25, // 30: google.cloud.dataplex.v1.DataScan.ExecutionStatus.latest_job_start_time:type_name -> google.protobuf.Timestamp - 25, // 31: google.cloud.dataplex.v1.DataScan.ExecutionStatus.latest_job_end_time:type_name -> google.protobuf.Timestamp - 25, // 32: google.cloud.dataplex.v1.DataScan.ExecutionStatus.latest_job_create_time:type_name -> google.protobuf.Timestamp - 4, // 33: google.cloud.dataplex.v1.DataScanService.CreateDataScan:input_type -> google.cloud.dataplex.v1.CreateDataScanRequest - 5, // 34: google.cloud.dataplex.v1.DataScanService.UpdateDataScan:input_type -> google.cloud.dataplex.v1.UpdateDataScanRequest - 6, // 35: google.cloud.dataplex.v1.DataScanService.DeleteDataScan:input_type -> google.cloud.dataplex.v1.DeleteDataScanRequest - 7, // 36: google.cloud.dataplex.v1.DataScanService.GetDataScan:input_type -> google.cloud.dataplex.v1.GetDataScanRequest - 8, // 37: google.cloud.dataplex.v1.DataScanService.ListDataScans:input_type -> google.cloud.dataplex.v1.ListDataScansRequest - 10, // 38: google.cloud.dataplex.v1.DataScanService.RunDataScan:input_type -> google.cloud.dataplex.v1.RunDataScanRequest - 12, // 39: google.cloud.dataplex.v1.DataScanService.GetDataScanJob:input_type -> google.cloud.dataplex.v1.GetDataScanJobRequest - 13, // 40: google.cloud.dataplex.v1.DataScanService.ListDataScanJobs:input_type -> google.cloud.dataplex.v1.ListDataScanJobsRequest - 15, // 41: google.cloud.dataplex.v1.DataScanService.GenerateDataQualityRules:input_type -> google.cloud.dataplex.v1.GenerateDataQualityRulesRequest - 32, // 42: google.cloud.dataplex.v1.DataScanService.CreateDataScan:output_type -> google.longrunning.Operation - 32, // 43: google.cloud.dataplex.v1.DataScanService.UpdateDataScan:output_type -> google.longrunning.Operation - 32, // 44: google.cloud.dataplex.v1.DataScanService.DeleteDataScan:output_type -> google.longrunning.Operation - 17, // 45: google.cloud.dataplex.v1.DataScanService.GetDataScan:output_type -> google.cloud.dataplex.v1.DataScan - 9, // 46: google.cloud.dataplex.v1.DataScanService.ListDataScans:output_type -> google.cloud.dataplex.v1.ListDataScansResponse - 11, // 47: google.cloud.dataplex.v1.DataScanService.RunDataScan:output_type -> google.cloud.dataplex.v1.RunDataScanResponse - 18, // 48: google.cloud.dataplex.v1.DataScanService.GetDataScanJob:output_type -> google.cloud.dataplex.v1.DataScanJob - 14, // 49: google.cloud.dataplex.v1.DataScanService.ListDataScanJobs:output_type -> google.cloud.dataplex.v1.ListDataScanJobsResponse - 16, // 50: google.cloud.dataplex.v1.DataScanService.GenerateDataQualityRules:output_type -> google.cloud.dataplex.v1.GenerateDataQualityRulesResponse - 42, // [42:51] is the sub-list for method output_type - 33, // [33:42] is the sub-list for method input_type - 33, // [33:33] is the sub-list for extension type_name - 33, // [33:33] is the sub-list for extension extendee - 0, // [0:33] is the sub-list for field type_name + 29, // 19: google.cloud.dataplex.v1.DataScan.data_discovery_spec:type_name -> google.cloud.dataplex.v1.DataDiscoverySpec + 30, // 20: google.cloud.dataplex.v1.DataScan.data_quality_result:type_name -> google.cloud.dataplex.v1.DataQualityResult + 31, // 21: google.cloud.dataplex.v1.DataScan.data_profile_result:type_name -> google.cloud.dataplex.v1.DataProfileResult + 32, // 22: google.cloud.dataplex.v1.DataScan.data_discovery_result:type_name -> google.cloud.dataplex.v1.DataDiscoveryResult + 25, // 23: google.cloud.dataplex.v1.DataScanJob.create_time:type_name -> google.protobuf.Timestamp + 25, // 24: google.cloud.dataplex.v1.DataScanJob.start_time:type_name -> google.protobuf.Timestamp + 25, // 25: google.cloud.dataplex.v1.DataScanJob.end_time:type_name -> google.protobuf.Timestamp + 3, // 26: google.cloud.dataplex.v1.DataScanJob.state:type_name -> google.cloud.dataplex.v1.DataScanJob.State + 0, // 27: google.cloud.dataplex.v1.DataScanJob.type:type_name -> google.cloud.dataplex.v1.DataScanType + 27, // 28: google.cloud.dataplex.v1.DataScanJob.data_quality_spec:type_name -> google.cloud.dataplex.v1.DataQualitySpec + 28, // 29: google.cloud.dataplex.v1.DataScanJob.data_profile_spec:type_name -> google.cloud.dataplex.v1.DataProfileSpec + 29, // 30: google.cloud.dataplex.v1.DataScanJob.data_discovery_spec:type_name -> google.cloud.dataplex.v1.DataDiscoverySpec + 30, // 31: google.cloud.dataplex.v1.DataScanJob.data_quality_result:type_name -> google.cloud.dataplex.v1.DataQualityResult + 31, // 32: google.cloud.dataplex.v1.DataScanJob.data_profile_result:type_name -> google.cloud.dataplex.v1.DataProfileResult + 32, // 33: google.cloud.dataplex.v1.DataScanJob.data_discovery_result:type_name -> google.cloud.dataplex.v1.DataDiscoveryResult + 33, // 34: google.cloud.dataplex.v1.DataScan.ExecutionSpec.trigger:type_name -> google.cloud.dataplex.v1.Trigger + 25, // 35: google.cloud.dataplex.v1.DataScan.ExecutionStatus.latest_job_start_time:type_name -> google.protobuf.Timestamp + 25, // 36: google.cloud.dataplex.v1.DataScan.ExecutionStatus.latest_job_end_time:type_name -> google.protobuf.Timestamp + 25, // 37: google.cloud.dataplex.v1.DataScan.ExecutionStatus.latest_job_create_time:type_name -> google.protobuf.Timestamp + 4, // 38: google.cloud.dataplex.v1.DataScanService.CreateDataScan:input_type -> google.cloud.dataplex.v1.CreateDataScanRequest + 5, // 39: google.cloud.dataplex.v1.DataScanService.UpdateDataScan:input_type -> google.cloud.dataplex.v1.UpdateDataScanRequest + 6, // 40: google.cloud.dataplex.v1.DataScanService.DeleteDataScan:input_type -> google.cloud.dataplex.v1.DeleteDataScanRequest + 7, // 41: google.cloud.dataplex.v1.DataScanService.GetDataScan:input_type -> google.cloud.dataplex.v1.GetDataScanRequest + 8, // 42: google.cloud.dataplex.v1.DataScanService.ListDataScans:input_type -> google.cloud.dataplex.v1.ListDataScansRequest + 10, // 43: google.cloud.dataplex.v1.DataScanService.RunDataScan:input_type -> google.cloud.dataplex.v1.RunDataScanRequest + 12, // 44: google.cloud.dataplex.v1.DataScanService.GetDataScanJob:input_type -> google.cloud.dataplex.v1.GetDataScanJobRequest + 13, // 45: google.cloud.dataplex.v1.DataScanService.ListDataScanJobs:input_type -> google.cloud.dataplex.v1.ListDataScanJobsRequest + 15, // 46: google.cloud.dataplex.v1.DataScanService.GenerateDataQualityRules:input_type -> google.cloud.dataplex.v1.GenerateDataQualityRulesRequest + 34, // 47: google.cloud.dataplex.v1.DataScanService.CreateDataScan:output_type -> google.longrunning.Operation + 34, // 48: google.cloud.dataplex.v1.DataScanService.UpdateDataScan:output_type -> google.longrunning.Operation + 34, // 49: google.cloud.dataplex.v1.DataScanService.DeleteDataScan:output_type -> google.longrunning.Operation + 17, // 50: google.cloud.dataplex.v1.DataScanService.GetDataScan:output_type -> google.cloud.dataplex.v1.DataScan + 9, // 51: google.cloud.dataplex.v1.DataScanService.ListDataScans:output_type -> google.cloud.dataplex.v1.ListDataScansResponse + 11, // 52: google.cloud.dataplex.v1.DataScanService.RunDataScan:output_type -> google.cloud.dataplex.v1.RunDataScanResponse + 18, // 53: google.cloud.dataplex.v1.DataScanService.GetDataScanJob:output_type -> google.cloud.dataplex.v1.DataScanJob + 14, // 54: google.cloud.dataplex.v1.DataScanService.ListDataScanJobs:output_type -> google.cloud.dataplex.v1.ListDataScanJobsResponse + 16, // 55: google.cloud.dataplex.v1.DataScanService.GenerateDataQualityRules:output_type -> google.cloud.dataplex.v1.GenerateDataQualityRulesResponse + 47, // [47:56] is the sub-list for method output_type + 38, // [38:47] is the sub-list for method input_type + 38, // [38:38] is the sub-list for extension type_name + 38, // [38:38] is the sub-list for extension extendee + 0, // [0:38] is the sub-list for field type_name } func init() { file_google_cloud_dataplex_v1_datascans_proto_init() } @@ -2332,6 +2447,7 @@ func file_google_cloud_dataplex_v1_datascans_proto_init() { if File_google_cloud_dataplex_v1_datascans_proto != nil { return } + file_google_cloud_dataplex_v1_data_discovery_proto_init() file_google_cloud_dataplex_v1_data_profile_proto_init() file_google_cloud_dataplex_v1_data_quality_proto_init() file_google_cloud_dataplex_v1_processing_proto_init() @@ -2546,14 +2662,18 @@ func file_google_cloud_dataplex_v1_datascans_proto_init() { file_google_cloud_dataplex_v1_datascans_proto_msgTypes[13].OneofWrappers = []any{ (*DataScan_DataQualitySpec)(nil), (*DataScan_DataProfileSpec)(nil), + (*DataScan_DataDiscoverySpec)(nil), (*DataScan_DataQualityResult)(nil), (*DataScan_DataProfileResult)(nil), + (*DataScan_DataDiscoveryResult)(nil), } file_google_cloud_dataplex_v1_datascans_proto_msgTypes[14].OneofWrappers = []any{ (*DataScanJob_DataQualitySpec)(nil), (*DataScanJob_DataProfileSpec)(nil), + (*DataScanJob_DataDiscoverySpec)(nil), (*DataScanJob_DataQualityResult)(nil), (*DataScanJob_DataProfileResult)(nil), + (*DataScanJob_DataDiscoveryResult)(nil), } file_google_cloud_dataplex_v1_datascans_proto_msgTypes[15].OneofWrappers = []any{ (*DataScan_ExecutionSpec_Field)(nil), diff --git a/dataplex/apiv1/dataplexpb/logs.pb.go b/dataplex/apiv1/dataplexpb/logs.pb.go index 1af605496fea..a61ae7bb370d 100755 --- a/dataplex/apiv1/dataplexpb/logs.pb.go +++ b/dataplex/apiv1/dataplexpb/logs.pb.go @@ -58,19 +58,31 @@ const ( DiscoveryEvent_PARTITION_UPDATED DiscoveryEvent_EventType = 6 // An event representing a partition being deleted. DiscoveryEvent_PARTITION_DELETED DiscoveryEvent_EventType = 7 + // An event representing a table being published. + DiscoveryEvent_TABLE_PUBLISHED DiscoveryEvent_EventType = 10 + // An event representing a table being updated. + DiscoveryEvent_TABLE_UPDATED DiscoveryEvent_EventType = 11 + // An event representing a table being skipped in publishing. + DiscoveryEvent_TABLE_IGNORED DiscoveryEvent_EventType = 12 + // An event representing a table being deleted. + DiscoveryEvent_TABLE_DELETED DiscoveryEvent_EventType = 13 ) // Enum value maps for DiscoveryEvent_EventType. var ( DiscoveryEvent_EventType_name = map[int32]string{ - 0: "EVENT_TYPE_UNSPECIFIED", - 1: "CONFIG", - 2: "ENTITY_CREATED", - 3: "ENTITY_UPDATED", - 4: "ENTITY_DELETED", - 5: "PARTITION_CREATED", - 6: "PARTITION_UPDATED", - 7: "PARTITION_DELETED", + 0: "EVENT_TYPE_UNSPECIFIED", + 1: "CONFIG", + 2: "ENTITY_CREATED", + 3: "ENTITY_UPDATED", + 4: "ENTITY_DELETED", + 5: "PARTITION_CREATED", + 6: "PARTITION_UPDATED", + 7: "PARTITION_DELETED", + 10: "TABLE_PUBLISHED", + 11: "TABLE_UPDATED", + 12: "TABLE_IGNORED", + 13: "TABLE_DELETED", } DiscoveryEvent_EventType_value = map[string]int32{ "EVENT_TYPE_UNSPECIFIED": 0, @@ -81,6 +93,10 @@ var ( "PARTITION_CREATED": 5, "PARTITION_UPDATED": 6, "PARTITION_DELETED": 7, + "TABLE_PUBLISHED": 10, + "TABLE_UPDATED": 11, + "TABLE_IGNORED": 12, + "TABLE_DELETED": 13, } ) @@ -164,6 +180,63 @@ func (DiscoveryEvent_EntityType) EnumDescriptor() ([]byte, []int) { return file_google_cloud_dataplex_v1_logs_proto_rawDescGZIP(), []int{0, 1} } +// The type of the published table. +type DiscoveryEvent_TableType int32 + +const ( + // An unspecified table type. + DiscoveryEvent_TABLE_TYPE_UNSPECIFIED DiscoveryEvent_TableType = 0 + // External table type. + DiscoveryEvent_EXTERNAL_TABLE DiscoveryEvent_TableType = 1 + // BigLake table type. + DiscoveryEvent_BIGLAKE_TABLE DiscoveryEvent_TableType = 2 + // Object table type for unstructured data. + DiscoveryEvent_OBJECT_TABLE DiscoveryEvent_TableType = 3 +) + +// Enum value maps for DiscoveryEvent_TableType. +var ( + DiscoveryEvent_TableType_name = map[int32]string{ + 0: "TABLE_TYPE_UNSPECIFIED", + 1: "EXTERNAL_TABLE", + 2: "BIGLAKE_TABLE", + 3: "OBJECT_TABLE", + } + DiscoveryEvent_TableType_value = map[string]int32{ + "TABLE_TYPE_UNSPECIFIED": 0, + "EXTERNAL_TABLE": 1, + "BIGLAKE_TABLE": 2, + "OBJECT_TABLE": 3, + } +) + +func (x DiscoveryEvent_TableType) Enum() *DiscoveryEvent_TableType { + p := new(DiscoveryEvent_TableType) + *p = x + return p +} + +func (x DiscoveryEvent_TableType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DiscoveryEvent_TableType) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_dataplex_v1_logs_proto_enumTypes[2].Descriptor() +} + +func (DiscoveryEvent_TableType) Type() protoreflect.EnumType { + return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[2] +} + +func (x DiscoveryEvent_TableType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DiscoveryEvent_TableType.Descriptor instead. +func (DiscoveryEvent_TableType) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_logs_proto_rawDescGZIP(), []int{0, 2} +} + // The type of the job. type JobEvent_Type int32 @@ -201,11 +274,11 @@ func (x JobEvent_Type) String() string { } func (JobEvent_Type) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_dataplex_v1_logs_proto_enumTypes[2].Descriptor() + return file_google_cloud_dataplex_v1_logs_proto_enumTypes[3].Descriptor() } func (JobEvent_Type) Type() protoreflect.EnumType { - return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[2] + return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[3] } func (x JobEvent_Type) Number() protoreflect.EnumNumber { @@ -262,11 +335,11 @@ func (x JobEvent_State) String() string { } func (JobEvent_State) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_dataplex_v1_logs_proto_enumTypes[3].Descriptor() + return file_google_cloud_dataplex_v1_logs_proto_enumTypes[4].Descriptor() } func (JobEvent_State) Type() protoreflect.EnumType { - return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[3] + return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[4] } func (x JobEvent_State) Number() protoreflect.EnumNumber { @@ -311,11 +384,11 @@ func (x JobEvent_Service) String() string { } func (JobEvent_Service) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_dataplex_v1_logs_proto_enumTypes[4].Descriptor() + return file_google_cloud_dataplex_v1_logs_proto_enumTypes[5].Descriptor() } func (JobEvent_Service) Type() protoreflect.EnumType { - return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[4] + return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[5] } func (x JobEvent_Service) Number() protoreflect.EnumNumber { @@ -365,11 +438,11 @@ func (x JobEvent_ExecutionTrigger) String() string { } func (JobEvent_ExecutionTrigger) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_dataplex_v1_logs_proto_enumTypes[5].Descriptor() + return file_google_cloud_dataplex_v1_logs_proto_enumTypes[6].Descriptor() } func (JobEvent_ExecutionTrigger) Type() protoreflect.EnumType { - return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[5] + return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[6] } func (x JobEvent_ExecutionTrigger) Number() protoreflect.EnumNumber { @@ -427,11 +500,11 @@ func (x SessionEvent_EventType) String() string { } func (SessionEvent_EventType) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_dataplex_v1_logs_proto_enumTypes[6].Descriptor() + return file_google_cloud_dataplex_v1_logs_proto_enumTypes[7].Descriptor() } func (SessionEvent_EventType) Type() protoreflect.EnumType { - return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[6] + return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[7] } func (x SessionEvent_EventType) Number() protoreflect.EnumNumber { @@ -480,11 +553,11 @@ func (x SessionEvent_QueryDetail_Engine) String() string { } func (SessionEvent_QueryDetail_Engine) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_dataplex_v1_logs_proto_enumTypes[7].Descriptor() + return file_google_cloud_dataplex_v1_logs_proto_enumTypes[8].Descriptor() } func (SessionEvent_QueryDetail_Engine) Type() protoreflect.EnumType { - return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[7] + return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[8] } func (x SessionEvent_QueryDetail_Engine) Number() protoreflect.EnumNumber { @@ -589,11 +662,11 @@ func (x GovernanceEvent_EventType) String() string { } func (GovernanceEvent_EventType) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_dataplex_v1_logs_proto_enumTypes[8].Descriptor() + return file_google_cloud_dataplex_v1_logs_proto_enumTypes[9].Descriptor() } func (GovernanceEvent_EventType) Type() protoreflect.EnumType { - return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[8] + return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[9] } func (x GovernanceEvent_EventType) Number() protoreflect.EnumNumber { @@ -642,11 +715,11 @@ func (x GovernanceEvent_Entity_EntityType) String() string { } func (GovernanceEvent_Entity_EntityType) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_dataplex_v1_logs_proto_enumTypes[9].Descriptor() + return file_google_cloud_dataplex_v1_logs_proto_enumTypes[10].Descriptor() } func (GovernanceEvent_Entity_EntityType) Type() protoreflect.EnumType { - return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[9] + return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[10] } func (x GovernanceEvent_Entity_EntityType) Number() protoreflect.EnumNumber { @@ -668,6 +741,8 @@ const ( DataScanEvent_DATA_PROFILE DataScanEvent_ScanType = 1 // Data scan for data quality. DataScanEvent_DATA_QUALITY DataScanEvent_ScanType = 2 + // Data scan for data discovery. + DataScanEvent_DATA_DISCOVERY DataScanEvent_ScanType = 4 ) // Enum value maps for DataScanEvent_ScanType. @@ -676,11 +751,13 @@ var ( 0: "SCAN_TYPE_UNSPECIFIED", 1: "DATA_PROFILE", 2: "DATA_QUALITY", + 4: "DATA_DISCOVERY", } DataScanEvent_ScanType_value = map[string]int32{ "SCAN_TYPE_UNSPECIFIED": 0, "DATA_PROFILE": 1, "DATA_QUALITY": 2, + "DATA_DISCOVERY": 4, } ) @@ -695,11 +772,11 @@ func (x DataScanEvent_ScanType) String() string { } func (DataScanEvent_ScanType) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_dataplex_v1_logs_proto_enumTypes[10].Descriptor() + return file_google_cloud_dataplex_v1_logs_proto_enumTypes[11].Descriptor() } func (DataScanEvent_ScanType) Type() protoreflect.EnumType { - return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[10] + return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[11] } func (x DataScanEvent_ScanType) Number() protoreflect.EnumNumber { @@ -760,11 +837,11 @@ func (x DataScanEvent_State) String() string { } func (DataScanEvent_State) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_dataplex_v1_logs_proto_enumTypes[11].Descriptor() + return file_google_cloud_dataplex_v1_logs_proto_enumTypes[12].Descriptor() } func (DataScanEvent_State) Type() protoreflect.EnumType { - return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[11] + return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[12] } func (x DataScanEvent_State) Number() protoreflect.EnumNumber { @@ -813,11 +890,11 @@ func (x DataScanEvent_Trigger) String() string { } func (DataScanEvent_Trigger) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_dataplex_v1_logs_proto_enumTypes[12].Descriptor() + return file_google_cloud_dataplex_v1_logs_proto_enumTypes[13].Descriptor() } func (DataScanEvent_Trigger) Type() protoreflect.EnumType { - return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[12] + return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[13] } func (x DataScanEvent_Trigger) Number() protoreflect.EnumNumber { @@ -866,11 +943,11 @@ func (x DataScanEvent_Scope) String() string { } func (DataScanEvent_Scope) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_dataplex_v1_logs_proto_enumTypes[13].Descriptor() + return file_google_cloud_dataplex_v1_logs_proto_enumTypes[14].Descriptor() } func (DataScanEvent_Scope) Type() protoreflect.EnumType { - return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[13] + return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[14] } func (x DataScanEvent_Scope) Number() protoreflect.EnumNumber { @@ -924,11 +1001,11 @@ func (x DataScanEvent_PostScanActionsResult_BigQueryExportResult_State) String() } func (DataScanEvent_PostScanActionsResult_BigQueryExportResult_State) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_dataplex_v1_logs_proto_enumTypes[14].Descriptor() + return file_google_cloud_dataplex_v1_logs_proto_enumTypes[15].Descriptor() } func (DataScanEvent_PostScanActionsResult_BigQueryExportResult_State) Type() protoreflect.EnumType { - return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[14] + return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[15] } func (x DataScanEvent_PostScanActionsResult_BigQueryExportResult_State) Number() protoreflect.EnumNumber { @@ -1014,11 +1091,11 @@ func (x DataQualityScanRuleResult_RuleType) String() string { } func (DataQualityScanRuleResult_RuleType) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_dataplex_v1_logs_proto_enumTypes[15].Descriptor() + return file_google_cloud_dataplex_v1_logs_proto_enumTypes[16].Descriptor() } func (DataQualityScanRuleResult_RuleType) Type() protoreflect.EnumType { - return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[15] + return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[16] } func (x DataQualityScanRuleResult_RuleType) Number() protoreflect.EnumNumber { @@ -1067,11 +1144,11 @@ func (x DataQualityScanRuleResult_EvaluationType) String() string { } func (DataQualityScanRuleResult_EvaluationType) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_dataplex_v1_logs_proto_enumTypes[16].Descriptor() + return file_google_cloud_dataplex_v1_logs_proto_enumTypes[17].Descriptor() } func (DataQualityScanRuleResult_EvaluationType) Type() protoreflect.EnumType { - return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[16] + return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[17] } func (x DataQualityScanRuleResult_EvaluationType) Number() protoreflect.EnumNumber { @@ -1120,11 +1197,11 @@ func (x DataQualityScanRuleResult_Result) String() string { } func (DataQualityScanRuleResult_Result) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_dataplex_v1_logs_proto_enumTypes[17].Descriptor() + return file_google_cloud_dataplex_v1_logs_proto_enumTypes[18].Descriptor() } func (DataQualityScanRuleResult_Result) Type() protoreflect.EnumType { - return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[17] + return &file_google_cloud_dataplex_v1_logs_proto_enumTypes[18] } func (x DataQualityScanRuleResult_Result) Number() protoreflect.EnumNumber { @@ -1152,6 +1229,8 @@ type DiscoveryEvent struct { AssetId string `protobuf:"bytes,4,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` // The data location associated with the event. DataLocation string `protobuf:"bytes,5,opt,name=data_location,json=dataLocation,proto3" json:"data_location,omitempty"` + // The id of the associated datascan for standalone discovery. + DatascanId string `protobuf:"bytes,6,opt,name=datascan_id,json=datascanId,proto3" json:"datascan_id,omitempty"` // The type of the event being logged. Type DiscoveryEvent_EventType `protobuf:"varint,10,opt,name=type,proto3,enum=google.cloud.dataplex.v1.DiscoveryEvent_EventType" json:"type,omitempty"` // Additional details about the event. @@ -1162,6 +1241,7 @@ type DiscoveryEvent struct { // *DiscoveryEvent_Entity // *DiscoveryEvent_Partition // *DiscoveryEvent_Action + // *DiscoveryEvent_Table Details isDiscoveryEvent_Details `protobuf_oneof:"details"` } @@ -1232,6 +1312,13 @@ func (x *DiscoveryEvent) GetDataLocation() string { return "" } +func (x *DiscoveryEvent) GetDatascanId() string { + if x != nil { + return x.DatascanId + } + return "" +} + func (x *DiscoveryEvent) GetType() DiscoveryEvent_EventType { if x != nil { return x.Type @@ -1274,6 +1361,13 @@ func (x *DiscoveryEvent) GetAction() *DiscoveryEvent_ActionDetails { return nil } +func (x *DiscoveryEvent) GetTable() *DiscoveryEvent_TableDetails { + if x, ok := x.GetDetails().(*DiscoveryEvent_Table); ok { + return x.Table + } + return nil +} + type isDiscoveryEvent_Details interface { isDiscoveryEvent_Details() } @@ -1298,6 +1392,11 @@ type DiscoveryEvent_Action struct { Action *DiscoveryEvent_ActionDetails `protobuf:"bytes,23,opt,name=action,proto3,oneof"` } +type DiscoveryEvent_Table struct { + // Details about the BigQuery table publishing associated with the event. + Table *DiscoveryEvent_TableDetails `protobuf:"bytes,24,opt,name=table,proto3,oneof"` +} + func (*DiscoveryEvent_Config) isDiscoveryEvent_Details() {} func (*DiscoveryEvent_Entity) isDiscoveryEvent_Details() {} @@ -1306,6 +1405,8 @@ func (*DiscoveryEvent_Partition) isDiscoveryEvent_Details() {} func (*DiscoveryEvent_Action) isDiscoveryEvent_Details() {} +func (*DiscoveryEvent_Table) isDiscoveryEvent_Details() {} + // The payload associated with Job logs that contains events describing jobs // that have run within a Lake. type JobEvent struct { @@ -1644,7 +1745,6 @@ func (x *GovernanceEvent) GetEntity() *GovernanceEvent_Entity { // These messages contain information about the execution of a datascan. // The monitored resource is 'DataScan' -// Next ID: 13 type DataScanEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2156,6 +2256,64 @@ func (x *DiscoveryEvent_EntityDetails) GetType() DiscoveryEvent_EntityType { return DiscoveryEvent_ENTITY_TYPE_UNSPECIFIED } +// Details about the published table. +type DiscoveryEvent_TableDetails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The fully-qualified resource name of the table resource. + Table string `protobuf:"bytes,1,opt,name=table,proto3" json:"table,omitempty"` + // The type of the table resource. + Type DiscoveryEvent_TableType `protobuf:"varint,2,opt,name=type,proto3,enum=google.cloud.dataplex.v1.DiscoveryEvent_TableType" json:"type,omitempty"` +} + +func (x *DiscoveryEvent_TableDetails) Reset() { + *x = DiscoveryEvent_TableDetails{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DiscoveryEvent_TableDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DiscoveryEvent_TableDetails) ProtoMessage() {} + +func (x *DiscoveryEvent_TableDetails) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DiscoveryEvent_TableDetails.ProtoReflect.Descriptor instead. +func (*DiscoveryEvent_TableDetails) Descriptor() ([]byte, []int) { + return file_google_cloud_dataplex_v1_logs_proto_rawDescGZIP(), []int{0, 2} +} + +func (x *DiscoveryEvent_TableDetails) GetTable() string { + if x != nil { + return x.Table + } + return "" +} + +func (x *DiscoveryEvent_TableDetails) GetType() DiscoveryEvent_TableType { + if x != nil { + return x.Type + } + return DiscoveryEvent_TABLE_TYPE_UNSPECIFIED +} + // Details about the partition. type DiscoveryEvent_PartitionDetails struct { state protoimpl.MessageState @@ -2178,7 +2336,7 @@ type DiscoveryEvent_PartitionDetails struct { func (x *DiscoveryEvent_PartitionDetails) Reset() { *x = DiscoveryEvent_PartitionDetails{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[8] + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2191,7 +2349,7 @@ func (x *DiscoveryEvent_PartitionDetails) String() string { func (*DiscoveryEvent_PartitionDetails) ProtoMessage() {} func (x *DiscoveryEvent_PartitionDetails) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[8] + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2204,7 +2362,7 @@ func (x *DiscoveryEvent_PartitionDetails) ProtoReflect() protoreflect.Message { // Deprecated: Use DiscoveryEvent_PartitionDetails.ProtoReflect.Descriptor instead. func (*DiscoveryEvent_PartitionDetails) Descriptor() ([]byte, []int) { - return file_google_cloud_dataplex_v1_logs_proto_rawDescGZIP(), []int{0, 2} + return file_google_cloud_dataplex_v1_logs_proto_rawDescGZIP(), []int{0, 3} } func (x *DiscoveryEvent_PartitionDetails) GetPartition() string { @@ -2244,12 +2402,14 @@ type DiscoveryEvent_ActionDetails struct { // The type of action. // Eg. IncompatibleDataSchema, InvalidDataFormat Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + // The human readable issue associated with the action. + Issue string `protobuf:"bytes,2,opt,name=issue,proto3" json:"issue,omitempty"` } func (x *DiscoveryEvent_ActionDetails) Reset() { *x = DiscoveryEvent_ActionDetails{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[9] + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2262,7 +2422,7 @@ func (x *DiscoveryEvent_ActionDetails) String() string { func (*DiscoveryEvent_ActionDetails) ProtoMessage() {} func (x *DiscoveryEvent_ActionDetails) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[9] + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2275,7 +2435,7 @@ func (x *DiscoveryEvent_ActionDetails) ProtoReflect() protoreflect.Message { // Deprecated: Use DiscoveryEvent_ActionDetails.ProtoReflect.Descriptor instead. func (*DiscoveryEvent_ActionDetails) Descriptor() ([]byte, []int) { - return file_google_cloud_dataplex_v1_logs_proto_rawDescGZIP(), []int{0, 3} + return file_google_cloud_dataplex_v1_logs_proto_rawDescGZIP(), []int{0, 4} } func (x *DiscoveryEvent_ActionDetails) GetType() string { @@ -2285,6 +2445,13 @@ func (x *DiscoveryEvent_ActionDetails) GetType() string { return "" } +func (x *DiscoveryEvent_ActionDetails) GetIssue() string { + if x != nil { + return x.Issue + } + return "" +} + // Execution details of the query. type SessionEvent_QueryDetail struct { state protoimpl.MessageState @@ -2308,7 +2475,7 @@ type SessionEvent_QueryDetail struct { func (x *SessionEvent_QueryDetail) Reset() { *x = SessionEvent_QueryDetail{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[11] + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2321,7 +2488,7 @@ func (x *SessionEvent_QueryDetail) String() string { func (*SessionEvent_QueryDetail) ProtoMessage() {} func (x *SessionEvent_QueryDetail) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[11] + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2396,7 +2563,7 @@ type GovernanceEvent_Entity struct { func (x *GovernanceEvent_Entity) Reset() { *x = GovernanceEvent_Entity{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[12] + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2409,7 +2576,7 @@ func (x *GovernanceEvent_Entity) String() string { func (*GovernanceEvent_Entity) ProtoMessage() {} func (x *GovernanceEvent_Entity) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[12] + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2452,7 +2619,7 @@ type DataScanEvent_DataProfileResult struct { func (x *DataScanEvent_DataProfileResult) Reset() { *x = DataScanEvent_DataProfileResult{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[13] + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2465,7 +2632,7 @@ func (x *DataScanEvent_DataProfileResult) String() string { func (*DataScanEvent_DataProfileResult) ProtoMessage() {} func (x *DataScanEvent_DataProfileResult) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[13] + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2527,7 +2694,7 @@ type DataScanEvent_DataQualityResult struct { func (x *DataScanEvent_DataQualityResult) Reset() { *x = DataScanEvent_DataQualityResult{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[14] + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2540,7 +2707,7 @@ func (x *DataScanEvent_DataQualityResult) String() string { func (*DataScanEvent_DataQualityResult) ProtoMessage() {} func (x *DataScanEvent_DataQualityResult) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[14] + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2619,7 +2786,7 @@ type DataScanEvent_DataProfileAppliedConfigs struct { func (x *DataScanEvent_DataProfileAppliedConfigs) Reset() { *x = DataScanEvent_DataProfileAppliedConfigs{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[15] + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2632,7 +2799,7 @@ func (x *DataScanEvent_DataProfileAppliedConfigs) String() string { func (*DataScanEvent_DataProfileAppliedConfigs) ProtoMessage() {} func (x *DataScanEvent_DataProfileAppliedConfigs) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[15] + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2687,7 +2854,7 @@ type DataScanEvent_DataQualityAppliedConfigs struct { func (x *DataScanEvent_DataQualityAppliedConfigs) Reset() { *x = DataScanEvent_DataQualityAppliedConfigs{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[16] + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2700,7 +2867,7 @@ func (x *DataScanEvent_DataQualityAppliedConfigs) String() string { func (*DataScanEvent_DataQualityAppliedConfigs) ProtoMessage() {} func (x *DataScanEvent_DataQualityAppliedConfigs) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[16] + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2743,7 +2910,7 @@ type DataScanEvent_PostScanActionsResult struct { func (x *DataScanEvent_PostScanActionsResult) Reset() { *x = DataScanEvent_PostScanActionsResult{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[17] + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2756,7 +2923,7 @@ func (x *DataScanEvent_PostScanActionsResult) String() string { func (*DataScanEvent_PostScanActionsResult) ProtoMessage() {} func (x *DataScanEvent_PostScanActionsResult) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[17] + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2794,7 +2961,7 @@ type DataScanEvent_PostScanActionsResult_BigQueryExportResult struct { func (x *DataScanEvent_PostScanActionsResult_BigQueryExportResult) Reset() { *x = DataScanEvent_PostScanActionsResult_BigQueryExportResult{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[21] + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2807,7 +2974,7 @@ func (x *DataScanEvent_PostScanActionsResult_BigQueryExportResult) String() stri func (*DataScanEvent_PostScanActionsResult_BigQueryExportResult) ProtoMessage() {} func (x *DataScanEvent_PostScanActionsResult_BigQueryExportResult) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[21] + mi := &file_google_cloud_dataplex_v1_logs_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2851,7 +3018,7 @@ var file_google_cloud_dataplex_v1_logs_proto_rawDesc = []byte{ 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd4, 0x0a, 0x0a, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf8, 0x0d, 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x6c, 0x61, 0x6b, @@ -2861,33 +3028,40 @@ var file_google_cloud_dataplex_v1_logs_proto_rawDesc = []byte{ 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, - 0x61, 0x74, 0x61, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, - 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x12, 0x50, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x14, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x06, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x50, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, - 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, - 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, - 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x59, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, + 0x61, 0x74, 0x61, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x64, + 0x61, 0x74, 0x61, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x73, 0x63, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x17, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, - 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x06, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xb6, 0x01, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, + 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x50, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x14, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, + 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x06, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x50, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, + 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x59, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x17, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x18, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, + 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x05, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x1a, 0xb6, 0x01, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x66, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, @@ -2906,460 +3080,480 @@ var file_google_cloud_dataplex_v1_logs_proto_rawDesc = []byte{ 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x1a, - 0xc7, 0x01, 0x0a, 0x10, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x47, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x6c, 0x0a, 0x0c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x46, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x1a, 0xc7, 0x01, + 0x0a, 0x10, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x47, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x14, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x39, 0x0a, 0x0d, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x73, 0x73, + 0x75, 0x65, 0x22, 0x82, 0x02, 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, + 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x54, 0x49, + 0x54, 0x59, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, + 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x03, + 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, + 0x45, 0x44, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x41, 0x52, 0x54, 0x49, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x50, + 0x41, 0x52, 0x54, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, + 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x41, 0x52, 0x54, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x11, + 0x0a, 0x0d, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, + 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x49, 0x47, 0x4e, 0x4f, 0x52, + 0x45, 0x44, 0x10, 0x0c, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x45, + 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x0d, 0x22, 0x41, 0x0a, 0x0a, 0x45, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, + 0x07, 0x46, 0x49, 0x4c, 0x45, 0x53, 0x45, 0x54, 0x10, 0x02, 0x22, 0x60, 0x0a, 0x09, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, + 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x49, 0x47, 0x4c, 0x41, + 0x4b, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x42, + 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x42, 0x09, 0x0a, 0x07, + 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0xa6, 0x06, 0x0a, 0x08, 0x4a, 0x6f, 0x62, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x15, + 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, + 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, + 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x12, 0x3b, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x44, + 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x6a, 0x6f, 0x62, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x60, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, + 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x22, 0x35, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x50, 0x41, 0x52, 0x4b, 0x10, 0x01, + 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x4f, 0x54, 0x45, 0x42, 0x4f, 0x4f, 0x4b, 0x10, 0x02, 0x22, 0x55, + 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, + 0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, + 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, 0x4e, + 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x42, 0x4f, 0x52, + 0x54, 0x45, 0x44, 0x10, 0x04, 0x22, 0x30, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x17, 0x0a, 0x13, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x41, 0x54, + 0x41, 0x50, 0x52, 0x4f, 0x43, 0x10, 0x01, 0x22, 0x57, 0x0a, 0x10, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x1d, 0x45, + 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, + 0x0a, 0x0b, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x01, 0x12, + 0x0f, 0x0a, 0x0b, 0x52, 0x55, 0x4e, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x02, + 0x22, 0xe9, 0x06, 0x0a, 0x0c, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x4a, 0x0a, 0x05, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x14, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x23, 0x0a, 0x0d, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xb4, - 0x01, 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, - 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4f, 0x4e, 0x46, - 0x49, 0x47, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x43, - 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x54, 0x49, - 0x54, 0x59, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, - 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x04, - 0x12, 0x15, 0x0a, 0x11, 0x50, 0x41, 0x52, 0x54, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x52, - 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x41, 0x52, 0x54, 0x49, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x06, 0x12, 0x15, - 0x0a, 0x11, 0x50, 0x41, 0x52, 0x54, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c, 0x45, - 0x54, 0x45, 0x44, 0x10, 0x07, 0x22, 0x41, 0x0a, 0x0a, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x46, - 0x49, 0x4c, 0x45, 0x53, 0x45, 0x54, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x22, 0xa6, 0x06, 0x0a, 0x08, 0x4a, 0x6f, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x48, 0x00, 0x52, 0x05, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x73, + 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x12, 0x30, + 0x0a, 0x14, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x66, 0x61, + 0x73, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x12, 0x4a, 0x0a, 0x13, 0x75, 0x6e, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x75, 0x6e, 0x61, 0x73, 0x73, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xee, 0x02, 0x0a, + 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x19, 0x0a, 0x08, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x54, 0x65, 0x78, 0x74, 0x12, 0x51, 0x0a, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, + 0x65, 0x52, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x14, + 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x62, + 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x64, 0x61, 0x74, 0x61, + 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x3d, + 0x0a, 0x06, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x4e, 0x47, 0x49, + 0x4e, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x50, 0x41, 0x52, 0x4b, 0x5f, 0x53, 0x51, 0x4c, 0x10, 0x01, 0x12, + 0x0c, 0x0a, 0x08, 0x42, 0x49, 0x47, 0x51, 0x55, 0x45, 0x52, 0x59, 0x10, 0x02, 0x22, 0x53, 0x0a, + 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x56, + 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, + 0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x54, 0x4f, 0x50, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x51, + 0x55, 0x45, 0x52, 0x59, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, + 0x10, 0x04, 0x42, 0x08, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0xea, 0x07, 0x0a, + 0x0f, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, - 0x62, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, - 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, - 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, - 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3b, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x44, 0x0a, 0x07, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4a, 0x6f, - 0x62, 0x12, 0x60, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x52, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x22, 0x35, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x50, 0x41, 0x52, 0x4b, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, - 0x4e, 0x4f, 0x54, 0x45, 0x42, 0x4f, 0x4f, 0x4b, 0x10, 0x02, 0x22, 0x55, 0x0a, 0x05, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, - 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, - 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, - 0x45, 0x44, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x42, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, - 0x04, 0x22, 0x30, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x17, 0x0a, 0x13, - 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x41, 0x54, 0x41, 0x50, 0x52, 0x4f, - 0x43, 0x10, 0x01, 0x22, 0x57, 0x0a, 0x10, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x1d, 0x45, 0x58, 0x45, 0x43, 0x55, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x41, - 0x53, 0x4b, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x52, - 0x55, 0x4e, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x02, 0x22, 0xe9, 0x06, 0x0a, - 0x0c, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x44, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x4a, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x48, 0x00, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, - 0x65, 0x64, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x66, 0x61, - 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x66, 0x61, 0x73, 0x74, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x75, 0x70, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x13, - 0x75, 0x6e, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x75, 0x6e, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xee, 0x02, 0x0a, 0x0b, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x74, 0x65, 0x78, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x54, 0x65, - 0x78, 0x74, 0x12, 0x51, 0x0a, 0x06, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x2e, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x06, 0x65, - 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x53, - 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x61, 0x74, 0x61, - 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x64, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x63, - 0x65, 0x73, 0x73, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x3d, 0x0a, 0x06, 0x45, 0x6e, - 0x67, 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, - 0x53, 0x50, 0x41, 0x52, 0x4b, 0x5f, 0x53, 0x51, 0x4c, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x42, - 0x49, 0x47, 0x51, 0x55, 0x45, 0x52, 0x59, 0x10, 0x02, 0x22, 0x53, 0x0a, 0x09, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x08, 0x0a, - 0x04, 0x53, 0x54, 0x4f, 0x50, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x51, 0x55, 0x45, 0x52, 0x59, - 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x04, 0x42, 0x08, - 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0xea, 0x07, 0x0a, 0x0f, 0x47, 0x6f, 0x76, - 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x52, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x06, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, + 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x52, 0x0a, 0x0a, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, + 0x61, 0x6e, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4d, + 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, + 0x61, 0x6e, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x1a, 0xe6, 0x01, + 0x0a, 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x3b, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x23, 0xfa, 0x41, 0x20, 0x0a, 0x1e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x06, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x5c, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, 0x06, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x1a, 0xe6, 0x01, 0x0a, 0x06, 0x45, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x12, 0x3b, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x23, 0xfa, 0x41, 0x20, 0x0a, 0x1e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x65, 0x78, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x12, 0x5c, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, - 0x41, 0x0a, 0x0a, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, - 0x17, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x49, 0x4c, 0x45, 0x53, 0x45, 0x54, - 0x10, 0x02, 0x22, 0xa5, 0x04, 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, - 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x50, 0x4f, 0x4c, - 0x49, 0x43, 0x59, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, - 0x42, 0x49, 0x47, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, - 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x49, 0x47, 0x51, 0x55, - 0x45, 0x52, 0x59, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, - 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x49, 0x47, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x54, - 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x04, 0x12, 0x1e, 0x0a, - 0x1a, 0x42, 0x49, 0x47, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x05, 0x12, 0x1e, 0x0a, - 0x1a, 0x42, 0x49, 0x47, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x06, 0x12, 0x1e, 0x0a, - 0x1a, 0x42, 0x49, 0x47, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x07, 0x12, 0x1c, 0x0a, - 0x18, 0x42, 0x49, 0x47, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x54, 0x41, 0x58, 0x4f, 0x4e, 0x4f, - 0x4d, 0x59, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x0a, 0x12, 0x1e, 0x0a, 0x1a, 0x42, - 0x49, 0x47, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x54, - 0x41, 0x47, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x0b, 0x12, 0x1e, 0x0a, 0x1a, 0x42, - 0x49, 0x47, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x54, - 0x41, 0x47, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x0c, 0x12, 0x26, 0x0a, 0x22, 0x42, - 0x49, 0x47, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x54, - 0x41, 0x47, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, - 0x59, 0x10, 0x0d, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x4f, - 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x0e, 0x12, 0x25, 0x0a, - 0x21, 0x47, 0x4f, 0x56, 0x45, 0x52, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, - 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, - 0x45, 0x53, 0x10, 0x0f, 0x12, 0x28, 0x0a, 0x24, 0x47, 0x4f, 0x56, 0x45, 0x52, 0x4e, 0x41, 0x4e, - 0x43, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x5f, 0x4c, - 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x45, 0x44, 0x53, 0x10, 0x10, 0x12, 0x1a, - 0x0a, 0x16, 0x47, 0x4f, 0x56, 0x45, 0x52, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x52, 0x55, 0x4c, - 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x11, 0x12, 0x1e, 0x0a, 0x1a, 0x47, 0x4f, - 0x56, 0x45, 0x52, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x50, 0x52, - 0x4f, 0x43, 0x45, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x12, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0xaa, 0x16, 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, - 0x61, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, - 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, - 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0c, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2e, 0x45, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, + 0x79, 0x70, 0x65, 0x22, 0x41, 0x0a, 0x0a, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, + 0x0a, 0x05, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x49, 0x4c, + 0x45, 0x53, 0x45, 0x54, 0x10, 0x02, 0x22, 0xa5, 0x04, 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x49, 0x41, 0x4d, + 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x01, + 0x12, 0x19, 0x0a, 0x15, 0x42, 0x49, 0x47, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x42, + 0x49, 0x47, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x55, 0x50, + 0x44, 0x41, 0x54, 0x45, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x49, 0x47, 0x51, 0x55, 0x45, + 0x52, 0x59, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, + 0x04, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x49, 0x47, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x43, 0x4f, + 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, + 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x49, 0x47, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x43, 0x4f, + 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, + 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x49, 0x47, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x43, 0x4f, + 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, + 0x07, 0x12, 0x1c, 0x0a, 0x18, 0x42, 0x49, 0x47, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x54, 0x41, + 0x58, 0x4f, 0x4e, 0x4f, 0x4d, 0x59, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x0a, 0x12, + 0x1e, 0x0a, 0x1a, 0x42, 0x49, 0x47, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x50, 0x4f, 0x4c, 0x49, + 0x43, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x0b, 0x12, + 0x1e, 0x0a, 0x1a, 0x42, 0x49, 0x47, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x50, 0x4f, 0x4c, 0x49, + 0x43, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x0c, 0x12, + 0x26, 0x0a, 0x22, 0x42, 0x49, 0x47, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x50, 0x4f, 0x4c, 0x49, + 0x43, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x49, 0x41, 0x4d, 0x5f, 0x50, + 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x0d, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x43, 0x43, 0x45, 0x53, + 0x53, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, + 0x0e, 0x12, 0x25, 0x0a, 0x21, 0x47, 0x4f, 0x56, 0x45, 0x52, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, + 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x53, + 0x4f, 0x55, 0x52, 0x43, 0x45, 0x53, 0x10, 0x0f, 0x12, 0x28, 0x0a, 0x24, 0x47, 0x4f, 0x56, 0x45, + 0x52, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x53, 0x45, 0x41, 0x52, + 0x43, 0x48, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x45, 0x44, 0x53, + 0x10, 0x10, 0x12, 0x1a, 0x0a, 0x16, 0x47, 0x4f, 0x56, 0x45, 0x52, 0x4e, 0x41, 0x4e, 0x43, 0x45, + 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x11, 0x12, 0x1e, + 0x0a, 0x1a, 0x47, 0x4f, 0x56, 0x45, 0x52, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x52, 0x55, 0x4c, + 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x12, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0xbe, 0x16, 0x0a, 0x0d, 0x44, 0x61, + 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x64, + 0x61, 0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x15, 0x0a, 0x06, + 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, + 0x62, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x44, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x70, 0x65, 0x63, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, + 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x53, 0x63, 0x61, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x12, 0x43, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x70, 0x65, 0x63, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, + 0x70, 0x65, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x07, 0x74, 0x72, + 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x07, 0x74, 0x72, + 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, + 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x63, + 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x5e, 0x0a, 0x0c, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, - 0x53, 0x63, 0x61, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, - 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x5e, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x5e, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x71, - 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, + 0x53, 0x63, 0x61, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x64, + 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x5e, 0x0a, 0x0c, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x53, 0x63, 0x61, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x64, + 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x76, 0x0a, 0x14, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x73, 0x18, 0xc9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, + 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x48, 0x01, 0x52, 0x12, + 0x64, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x73, 0x12, 0x76, 0x0a, 0x14, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, + 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0xca, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, + 0x61, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, + 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x73, 0x48, 0x01, 0x52, 0x12, 0x64, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, + 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x76, 0x0a, 0x18, 0x70, 0x6f, + 0x73, 0x74, 0x5f, 0x73, 0x63, 0x61, 0x6e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, - 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x51, - 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x76, 0x0a, 0x14, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0xc9, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x44, - 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, - 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x48, 0x01, 0x52, 0x12, 0x64, 0x61, 0x74, 0x61, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x76, - 0x0a, 0x14, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0xca, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, - 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, - 0x74, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, - 0x48, 0x01, 0x52, 0x12, 0x64, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x76, 0x0a, 0x18, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x73, - 0x63, 0x61, 0x6e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x53, 0x63, 0x61, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x15, 0x70, 0x6f, 0x73, 0x74, 0x53, 0x63, 0x61, - 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1a, 0x30, - 0x0a, 0x11, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x1a, 0x87, 0x05, 0x0a, 0x11, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x77, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x6f, 0x77, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x12, 0x79, 0x0a, 0x10, 0x64, - 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x44, - 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x2e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x65, 0x64, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x50, 0x61, 0x73, 0x73, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x76, 0x0a, 0x0f, - 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x44, - 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x2e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x12, 0x6d, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x73, - 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x67, 0x6f, 0x6f, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x53, 0x63, 0x61, 0x6e, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x15, 0x70, 0x6f, 0x73, + 0x74, 0x53, 0x63, 0x61, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x1a, 0x30, 0x0a, 0x11, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x77, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x6f, 0x77, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x87, 0x05, 0x0a, 0x11, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, + 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, + 0x77, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, + 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x12, + 0x79, 0x0a, 0x10, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x73, + 0x73, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, + 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, + 0x73, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x64, 0x69, 0x6d, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x12, 0x76, 0x0a, 0x0f, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, + 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x6d, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, + 0x6d, 0x6e, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, + 0x61, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, + 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x75, + 0x6d, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x42, 0x0a, 0x14, 0x44, 0x69, 0x6d, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x73, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x44, + 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, + 0x0a, 0x10, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xa8, + 0x01, 0x0a, 0x19, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x29, 0x0a, 0x10, + 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, + 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x6f, 0x77, 0x5f, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x10, 0x72, 0x6f, 0x77, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x41, 0x70, + 0x70, 0x6c, 0x69, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x1a, 0x74, 0x0a, 0x19, 0x44, 0x61, 0x74, + 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, + 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x0f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x6f, 0x77, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x72, + 0x6f, 0x77, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x1a, + 0x8d, 0x03, 0x0a, 0x15, 0x50, 0x6f, 0x73, 0x74, 0x53, 0x63, 0x61, 0x6e, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x88, 0x01, 0x0a, 0x16, 0x62, 0x69, + 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x52, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x63, - 0x6f, 0x72, 0x65, 0x1a, 0x42, 0x0a, 0x14, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x50, 0x61, 0x73, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x44, 0x69, 0x6d, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x43, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xa8, 0x01, 0x0a, 0x19, 0x44, - 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, - 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x61, 0x6d, 0x70, - 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x02, 0x52, 0x0f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x63, - 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x6f, 0x77, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x10, 0x72, 0x6f, 0x77, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, - 0x64, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x13, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x41, 0x70, - 0x70, 0x6c, 0x69, 0x65, 0x64, 0x1a, 0x74, 0x0a, 0x19, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, - 0x6c, 0x69, 0x74, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, - 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x73, 0x61, - 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, - 0x12, 0x72, 0x6f, 0x77, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x72, 0x6f, 0x77, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x1a, 0x8d, 0x03, 0x0a, 0x15, - 0x50, 0x6f, 0x73, 0x74, 0x53, 0x63, 0x61, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x88, 0x01, 0x0a, 0x16, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x52, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, - 0x50, 0x6f, 0x73, 0x74, 0x53, 0x63, 0x61, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x14, 0x62, 0x69, 0x67, 0x71, + 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x53, 0x63, 0x61, 0x6e, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x14, + 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x1a, 0xe8, 0x01, 0x0a, 0x14, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x6e, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x58, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x53, 0x63, 0x61, 0x6e, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x1a, 0xe8, 0x01, 0x0a, 0x14, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x70, - 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x6e, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x58, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x46, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, + 0x45, 0x44, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, + 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x4b, 0x49, 0x50, 0x50, 0x45, 0x44, 0x10, 0x03, 0x22, + 0x5d, 0x0a, 0x08, 0x53, 0x63, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x53, + 0x43, 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x50, + 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x41, + 0x54, 0x41, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x59, 0x10, 0x04, 0x22, 0x62, + 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, + 0x0a, 0x07, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, + 0x55, 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, + 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, + 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, + 0x10, 0x05, 0x22, 0x3f, 0x0a, 0x07, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x17, 0x0a, + 0x13, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4d, + 0x41, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, + 0x45, 0x10, 0x02, 0x22, 0x39, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, + 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x0f, 0x0a, + 0x0b, 0x49, 0x4e, 0x43, 0x52, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x41, 0x4c, 0x10, 0x02, 0x42, 0x08, + 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, + 0x69, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x22, 0xc4, 0x08, 0x0a, 0x19, 0x44, + 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x75, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, + 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x75, 0x6c, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x63, 0x61, 0x6e, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x53, 0x63, 0x61, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x22, 0x46, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, - 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, - 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0b, - 0x0a, 0x07, 0x53, 0x4b, 0x49, 0x50, 0x50, 0x45, 0x44, 0x10, 0x03, 0x22, 0x49, 0x0a, 0x08, 0x53, - 0x63, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x43, 0x41, 0x4e, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, - 0x4c, 0x45, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x51, 0x55, 0x41, - 0x4c, 0x49, 0x54, 0x59, 0x10, 0x02, 0x22, 0x62, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, - 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, - 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0d, - 0x0a, 0x09, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0b, 0x0a, - 0x07, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x05, 0x22, 0x3f, 0x0a, 0x07, 0x54, 0x72, - 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, - 0x0a, 0x09, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4d, 0x41, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, - 0x08, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x10, 0x02, 0x22, 0x39, 0x0a, 0x05, 0x53, - 0x63, 0x6f, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x46, - 0x55, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x43, 0x52, 0x45, 0x4d, 0x45, - 0x4e, 0x54, 0x41, 0x4c, 0x10, 0x02, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x42, 0x10, 0x0a, 0x0e, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x73, 0x22, 0xc4, 0x08, 0x0a, 0x19, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, - 0x74, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x15, 0x0a, 0x06, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x6a, 0x6f, 0x62, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, - 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, - 0x6d, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, - 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x59, 0x0a, - 0x09, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, - 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, - 0x72, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x69, 0x0a, 0x0e, 0x65, 0x76, 0x61, 0x6c, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, - 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x6d, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x75, 0x6c, - 0x65, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x68, - 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, - 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x63, - 0x61, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x65, - 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, - 0x74, 0x65, 0x64, 0x52, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x70, - 0x61, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x52, 0x6f, 0x77, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x75, 0x6c, 0x6c, 0x5f, 0x72, 0x6f, - 0x77, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6e, - 0x75, 0x6c, 0x6c, 0x52, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x61, - 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x92, 0x02, 0x0a, 0x08, - 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x55, 0x4c, 0x45, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x4e, 0x4f, 0x4e, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x5f, - 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x15, 0x0a, - 0x11, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x45, 0x47, 0x45, 0x58, 0x5f, 0x45, 0x58, - 0x50, 0x45, 0x43, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x52, - 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x58, 0x50, - 0x45, 0x43, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x45, - 0x54, 0x5f, 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, - 0x1f, 0x0a, 0x1b, 0x53, 0x54, 0x41, 0x54, 0x49, 0x53, 0x54, 0x49, 0x43, 0x5f, 0x52, 0x41, 0x4e, - 0x47, 0x45, 0x5f, 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, - 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, - 0x07, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x4e, 0x49, 0x51, 0x55, 0x45, 0x4e, 0x45, 0x53, 0x53, 0x5f, - 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x08, 0x12, 0x11, 0x0a, - 0x0d, 0x53, 0x51, 0x4c, 0x5f, 0x41, 0x53, 0x53, 0x45, 0x52, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x09, - 0x22, 0x4d, 0x0a, 0x0e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x45, 0x56, 0x41, 0x4c, 0x55, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x57, 0x10, 0x01, - 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x47, 0x47, 0x52, 0x45, 0x47, 0x41, 0x54, 0x45, 0x10, 0x02, 0x22, - 0x38, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x53, - 0x55, 0x4c, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x41, 0x53, 0x53, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, - 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x42, 0x65, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x42, 0x09, 0x4c, 0x6f, 0x67, 0x73, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x65, 0x78, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x65, 0x78, 0x70, 0x62, 0x3b, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x70, 0x62, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, + 0x63, 0x61, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x52, 0x75, + 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x69, 0x0a, 0x0e, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, + 0x63, 0x61, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x45, 0x76, + 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x65, 0x76, + 0x61, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72, + 0x75, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x75, 0x6c, 0x65, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, + 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x10, 0x74, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, + 0x52, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x51, + 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x63, 0x61, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x72, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x11, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x77, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x72, 0x6f, + 0x77, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x70, + 0x61, 0x73, 0x73, 0x65, 0x64, 0x52, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, + 0x0e, 0x6e, 0x75, 0x6c, 0x6c, 0x5f, 0x72, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6e, 0x75, 0x6c, 0x6c, 0x52, 0x6f, 0x77, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x72, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x11, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x77, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x22, 0x92, 0x02, 0x0a, 0x08, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x19, 0x0a, 0x15, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x4e, + 0x4f, 0x4e, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x5f, 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, + 0x58, 0x50, 0x45, 0x43, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, + 0x52, 0x45, 0x47, 0x45, 0x58, 0x5f, 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x44, 0x49, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x45, 0x54, 0x5f, 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x54, 0x41, 0x54, 0x49, + 0x53, 0x54, 0x49, 0x43, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x58, 0x50, 0x45, 0x43, + 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x42, 0x4c, + 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x58, 0x50, 0x45, + 0x43, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x4e, 0x49, + 0x51, 0x55, 0x45, 0x4e, 0x45, 0x53, 0x53, 0x5f, 0x45, 0x58, 0x50, 0x45, 0x43, 0x54, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x51, 0x4c, 0x5f, 0x41, 0x53, 0x53, + 0x45, 0x52, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x09, 0x22, 0x4d, 0x0a, 0x0e, 0x45, 0x76, 0x61, 0x6c, + 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x45, 0x56, + 0x41, 0x4c, 0x55, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, + 0x45, 0x52, 0x5f, 0x52, 0x4f, 0x57, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x47, 0x47, 0x52, + 0x45, 0x47, 0x41, 0x54, 0x45, 0x10, 0x02, 0x22, 0x38, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x41, 0x53, + 0x53, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, + 0x02, 0x42, 0x65, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2e, 0x76, + 0x31, 0x42, 0x09, 0x4c, 0x6f, 0x67, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x38, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x2f, 0x61, 0x70, 0x69, + 0x76, 0x31, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x70, 0x62, 0x3b, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x65, 0x78, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3374,100 +3568,104 @@ func file_google_cloud_dataplex_v1_logs_proto_rawDescGZIP() []byte { return file_google_cloud_dataplex_v1_logs_proto_rawDescData } -var file_google_cloud_dataplex_v1_logs_proto_enumTypes = make([]protoimpl.EnumInfo, 18) -var file_google_cloud_dataplex_v1_logs_proto_msgTypes = make([]protoimpl.MessageInfo, 22) +var file_google_cloud_dataplex_v1_logs_proto_enumTypes = make([]protoimpl.EnumInfo, 19) +var file_google_cloud_dataplex_v1_logs_proto_msgTypes = make([]protoimpl.MessageInfo, 23) var file_google_cloud_dataplex_v1_logs_proto_goTypes = []any{ (DiscoveryEvent_EventType)(0), // 0: google.cloud.dataplex.v1.DiscoveryEvent.EventType (DiscoveryEvent_EntityType)(0), // 1: google.cloud.dataplex.v1.DiscoveryEvent.EntityType - (JobEvent_Type)(0), // 2: google.cloud.dataplex.v1.JobEvent.Type - (JobEvent_State)(0), // 3: google.cloud.dataplex.v1.JobEvent.State - (JobEvent_Service)(0), // 4: google.cloud.dataplex.v1.JobEvent.Service - (JobEvent_ExecutionTrigger)(0), // 5: google.cloud.dataplex.v1.JobEvent.ExecutionTrigger - (SessionEvent_EventType)(0), // 6: google.cloud.dataplex.v1.SessionEvent.EventType - (SessionEvent_QueryDetail_Engine)(0), // 7: google.cloud.dataplex.v1.SessionEvent.QueryDetail.Engine - (GovernanceEvent_EventType)(0), // 8: google.cloud.dataplex.v1.GovernanceEvent.EventType - (GovernanceEvent_Entity_EntityType)(0), // 9: google.cloud.dataplex.v1.GovernanceEvent.Entity.EntityType - (DataScanEvent_ScanType)(0), // 10: google.cloud.dataplex.v1.DataScanEvent.ScanType - (DataScanEvent_State)(0), // 11: google.cloud.dataplex.v1.DataScanEvent.State - (DataScanEvent_Trigger)(0), // 12: google.cloud.dataplex.v1.DataScanEvent.Trigger - (DataScanEvent_Scope)(0), // 13: google.cloud.dataplex.v1.DataScanEvent.Scope - (DataScanEvent_PostScanActionsResult_BigQueryExportResult_State)(0), // 14: google.cloud.dataplex.v1.DataScanEvent.PostScanActionsResult.BigQueryExportResult.State - (DataQualityScanRuleResult_RuleType)(0), // 15: google.cloud.dataplex.v1.DataQualityScanRuleResult.RuleType - (DataQualityScanRuleResult_EvaluationType)(0), // 16: google.cloud.dataplex.v1.DataQualityScanRuleResult.EvaluationType - (DataQualityScanRuleResult_Result)(0), // 17: google.cloud.dataplex.v1.DataQualityScanRuleResult.Result - (*DiscoveryEvent)(nil), // 18: google.cloud.dataplex.v1.DiscoveryEvent - (*JobEvent)(nil), // 19: google.cloud.dataplex.v1.JobEvent - (*SessionEvent)(nil), // 20: google.cloud.dataplex.v1.SessionEvent - (*GovernanceEvent)(nil), // 21: google.cloud.dataplex.v1.GovernanceEvent - (*DataScanEvent)(nil), // 22: google.cloud.dataplex.v1.DataScanEvent - (*DataQualityScanRuleResult)(nil), // 23: google.cloud.dataplex.v1.DataQualityScanRuleResult - (*DiscoveryEvent_ConfigDetails)(nil), // 24: google.cloud.dataplex.v1.DiscoveryEvent.ConfigDetails - (*DiscoveryEvent_EntityDetails)(nil), // 25: google.cloud.dataplex.v1.DiscoveryEvent.EntityDetails - (*DiscoveryEvent_PartitionDetails)(nil), // 26: google.cloud.dataplex.v1.DiscoveryEvent.PartitionDetails - (*DiscoveryEvent_ActionDetails)(nil), // 27: google.cloud.dataplex.v1.DiscoveryEvent.ActionDetails - nil, // 28: google.cloud.dataplex.v1.DiscoveryEvent.ConfigDetails.ParametersEntry - (*SessionEvent_QueryDetail)(nil), // 29: google.cloud.dataplex.v1.SessionEvent.QueryDetail - (*GovernanceEvent_Entity)(nil), // 30: google.cloud.dataplex.v1.GovernanceEvent.Entity - (*DataScanEvent_DataProfileResult)(nil), // 31: google.cloud.dataplex.v1.DataScanEvent.DataProfileResult - (*DataScanEvent_DataQualityResult)(nil), // 32: google.cloud.dataplex.v1.DataScanEvent.DataQualityResult - (*DataScanEvent_DataProfileAppliedConfigs)(nil), // 33: google.cloud.dataplex.v1.DataScanEvent.DataProfileAppliedConfigs - (*DataScanEvent_DataQualityAppliedConfigs)(nil), // 34: google.cloud.dataplex.v1.DataScanEvent.DataQualityAppliedConfigs - (*DataScanEvent_PostScanActionsResult)(nil), // 35: google.cloud.dataplex.v1.DataScanEvent.PostScanActionsResult - nil, // 36: google.cloud.dataplex.v1.DataScanEvent.DataQualityResult.DimensionPassedEntry - nil, // 37: google.cloud.dataplex.v1.DataScanEvent.DataQualityResult.DimensionScoreEntry - nil, // 38: google.cloud.dataplex.v1.DataScanEvent.DataQualityResult.ColumnScoreEntry - (*DataScanEvent_PostScanActionsResult_BigQueryExportResult)(nil), // 39: google.cloud.dataplex.v1.DataScanEvent.PostScanActionsResult.BigQueryExportResult - (*timestamppb.Timestamp)(nil), // 40: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 41: google.protobuf.Duration + (DiscoveryEvent_TableType)(0), // 2: google.cloud.dataplex.v1.DiscoveryEvent.TableType + (JobEvent_Type)(0), // 3: google.cloud.dataplex.v1.JobEvent.Type + (JobEvent_State)(0), // 4: google.cloud.dataplex.v1.JobEvent.State + (JobEvent_Service)(0), // 5: google.cloud.dataplex.v1.JobEvent.Service + (JobEvent_ExecutionTrigger)(0), // 6: google.cloud.dataplex.v1.JobEvent.ExecutionTrigger + (SessionEvent_EventType)(0), // 7: google.cloud.dataplex.v1.SessionEvent.EventType + (SessionEvent_QueryDetail_Engine)(0), // 8: google.cloud.dataplex.v1.SessionEvent.QueryDetail.Engine + (GovernanceEvent_EventType)(0), // 9: google.cloud.dataplex.v1.GovernanceEvent.EventType + (GovernanceEvent_Entity_EntityType)(0), // 10: google.cloud.dataplex.v1.GovernanceEvent.Entity.EntityType + (DataScanEvent_ScanType)(0), // 11: google.cloud.dataplex.v1.DataScanEvent.ScanType + (DataScanEvent_State)(0), // 12: google.cloud.dataplex.v1.DataScanEvent.State + (DataScanEvent_Trigger)(0), // 13: google.cloud.dataplex.v1.DataScanEvent.Trigger + (DataScanEvent_Scope)(0), // 14: google.cloud.dataplex.v1.DataScanEvent.Scope + (DataScanEvent_PostScanActionsResult_BigQueryExportResult_State)(0), // 15: google.cloud.dataplex.v1.DataScanEvent.PostScanActionsResult.BigQueryExportResult.State + (DataQualityScanRuleResult_RuleType)(0), // 16: google.cloud.dataplex.v1.DataQualityScanRuleResult.RuleType + (DataQualityScanRuleResult_EvaluationType)(0), // 17: google.cloud.dataplex.v1.DataQualityScanRuleResult.EvaluationType + (DataQualityScanRuleResult_Result)(0), // 18: google.cloud.dataplex.v1.DataQualityScanRuleResult.Result + (*DiscoveryEvent)(nil), // 19: google.cloud.dataplex.v1.DiscoveryEvent + (*JobEvent)(nil), // 20: google.cloud.dataplex.v1.JobEvent + (*SessionEvent)(nil), // 21: google.cloud.dataplex.v1.SessionEvent + (*GovernanceEvent)(nil), // 22: google.cloud.dataplex.v1.GovernanceEvent + (*DataScanEvent)(nil), // 23: google.cloud.dataplex.v1.DataScanEvent + (*DataQualityScanRuleResult)(nil), // 24: google.cloud.dataplex.v1.DataQualityScanRuleResult + (*DiscoveryEvent_ConfigDetails)(nil), // 25: google.cloud.dataplex.v1.DiscoveryEvent.ConfigDetails + (*DiscoveryEvent_EntityDetails)(nil), // 26: google.cloud.dataplex.v1.DiscoveryEvent.EntityDetails + (*DiscoveryEvent_TableDetails)(nil), // 27: google.cloud.dataplex.v1.DiscoveryEvent.TableDetails + (*DiscoveryEvent_PartitionDetails)(nil), // 28: google.cloud.dataplex.v1.DiscoveryEvent.PartitionDetails + (*DiscoveryEvent_ActionDetails)(nil), // 29: google.cloud.dataplex.v1.DiscoveryEvent.ActionDetails + nil, // 30: google.cloud.dataplex.v1.DiscoveryEvent.ConfigDetails.ParametersEntry + (*SessionEvent_QueryDetail)(nil), // 31: google.cloud.dataplex.v1.SessionEvent.QueryDetail + (*GovernanceEvent_Entity)(nil), // 32: google.cloud.dataplex.v1.GovernanceEvent.Entity + (*DataScanEvent_DataProfileResult)(nil), // 33: google.cloud.dataplex.v1.DataScanEvent.DataProfileResult + (*DataScanEvent_DataQualityResult)(nil), // 34: google.cloud.dataplex.v1.DataScanEvent.DataQualityResult + (*DataScanEvent_DataProfileAppliedConfigs)(nil), // 35: google.cloud.dataplex.v1.DataScanEvent.DataProfileAppliedConfigs + (*DataScanEvent_DataQualityAppliedConfigs)(nil), // 36: google.cloud.dataplex.v1.DataScanEvent.DataQualityAppliedConfigs + (*DataScanEvent_PostScanActionsResult)(nil), // 37: google.cloud.dataplex.v1.DataScanEvent.PostScanActionsResult + nil, // 38: google.cloud.dataplex.v1.DataScanEvent.DataQualityResult.DimensionPassedEntry + nil, // 39: google.cloud.dataplex.v1.DataScanEvent.DataQualityResult.DimensionScoreEntry + nil, // 40: google.cloud.dataplex.v1.DataScanEvent.DataQualityResult.ColumnScoreEntry + (*DataScanEvent_PostScanActionsResult_BigQueryExportResult)(nil), // 41: google.cloud.dataplex.v1.DataScanEvent.PostScanActionsResult.BigQueryExportResult + (*timestamppb.Timestamp)(nil), // 42: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 43: google.protobuf.Duration } var file_google_cloud_dataplex_v1_logs_proto_depIdxs = []int32{ 0, // 0: google.cloud.dataplex.v1.DiscoveryEvent.type:type_name -> google.cloud.dataplex.v1.DiscoveryEvent.EventType - 24, // 1: google.cloud.dataplex.v1.DiscoveryEvent.config:type_name -> google.cloud.dataplex.v1.DiscoveryEvent.ConfigDetails - 25, // 2: google.cloud.dataplex.v1.DiscoveryEvent.entity:type_name -> google.cloud.dataplex.v1.DiscoveryEvent.EntityDetails - 26, // 3: google.cloud.dataplex.v1.DiscoveryEvent.partition:type_name -> google.cloud.dataplex.v1.DiscoveryEvent.PartitionDetails - 27, // 4: google.cloud.dataplex.v1.DiscoveryEvent.action:type_name -> google.cloud.dataplex.v1.DiscoveryEvent.ActionDetails - 40, // 5: google.cloud.dataplex.v1.JobEvent.start_time:type_name -> google.protobuf.Timestamp - 40, // 6: google.cloud.dataplex.v1.JobEvent.end_time:type_name -> google.protobuf.Timestamp - 3, // 7: google.cloud.dataplex.v1.JobEvent.state:type_name -> google.cloud.dataplex.v1.JobEvent.State - 2, // 8: google.cloud.dataplex.v1.JobEvent.type:type_name -> google.cloud.dataplex.v1.JobEvent.Type - 4, // 9: google.cloud.dataplex.v1.JobEvent.service:type_name -> google.cloud.dataplex.v1.JobEvent.Service - 5, // 10: google.cloud.dataplex.v1.JobEvent.execution_trigger:type_name -> google.cloud.dataplex.v1.JobEvent.ExecutionTrigger - 6, // 11: google.cloud.dataplex.v1.SessionEvent.type:type_name -> google.cloud.dataplex.v1.SessionEvent.EventType - 29, // 12: google.cloud.dataplex.v1.SessionEvent.query:type_name -> google.cloud.dataplex.v1.SessionEvent.QueryDetail - 41, // 13: google.cloud.dataplex.v1.SessionEvent.unassigned_duration:type_name -> google.protobuf.Duration - 8, // 14: google.cloud.dataplex.v1.GovernanceEvent.event_type:type_name -> google.cloud.dataplex.v1.GovernanceEvent.EventType - 30, // 15: google.cloud.dataplex.v1.GovernanceEvent.entity:type_name -> google.cloud.dataplex.v1.GovernanceEvent.Entity - 40, // 16: google.cloud.dataplex.v1.DataScanEvent.create_time:type_name -> google.protobuf.Timestamp - 40, // 17: google.cloud.dataplex.v1.DataScanEvent.start_time:type_name -> google.protobuf.Timestamp - 40, // 18: google.cloud.dataplex.v1.DataScanEvent.end_time:type_name -> google.protobuf.Timestamp - 10, // 19: google.cloud.dataplex.v1.DataScanEvent.type:type_name -> google.cloud.dataplex.v1.DataScanEvent.ScanType - 11, // 20: google.cloud.dataplex.v1.DataScanEvent.state:type_name -> google.cloud.dataplex.v1.DataScanEvent.State - 12, // 21: google.cloud.dataplex.v1.DataScanEvent.trigger:type_name -> google.cloud.dataplex.v1.DataScanEvent.Trigger - 13, // 22: google.cloud.dataplex.v1.DataScanEvent.scope:type_name -> google.cloud.dataplex.v1.DataScanEvent.Scope - 31, // 23: google.cloud.dataplex.v1.DataScanEvent.data_profile:type_name -> google.cloud.dataplex.v1.DataScanEvent.DataProfileResult - 32, // 24: google.cloud.dataplex.v1.DataScanEvent.data_quality:type_name -> google.cloud.dataplex.v1.DataScanEvent.DataQualityResult - 33, // 25: google.cloud.dataplex.v1.DataScanEvent.data_profile_configs:type_name -> google.cloud.dataplex.v1.DataScanEvent.DataProfileAppliedConfigs - 34, // 26: google.cloud.dataplex.v1.DataScanEvent.data_quality_configs:type_name -> google.cloud.dataplex.v1.DataScanEvent.DataQualityAppliedConfigs - 35, // 27: google.cloud.dataplex.v1.DataScanEvent.post_scan_actions_result:type_name -> google.cloud.dataplex.v1.DataScanEvent.PostScanActionsResult - 15, // 28: google.cloud.dataplex.v1.DataQualityScanRuleResult.rule_type:type_name -> google.cloud.dataplex.v1.DataQualityScanRuleResult.RuleType - 16, // 29: google.cloud.dataplex.v1.DataQualityScanRuleResult.evalution_type:type_name -> google.cloud.dataplex.v1.DataQualityScanRuleResult.EvaluationType - 17, // 30: google.cloud.dataplex.v1.DataQualityScanRuleResult.result:type_name -> google.cloud.dataplex.v1.DataQualityScanRuleResult.Result - 28, // 31: google.cloud.dataplex.v1.DiscoveryEvent.ConfigDetails.parameters:type_name -> google.cloud.dataplex.v1.DiscoveryEvent.ConfigDetails.ParametersEntry - 1, // 32: google.cloud.dataplex.v1.DiscoveryEvent.EntityDetails.type:type_name -> google.cloud.dataplex.v1.DiscoveryEvent.EntityType - 1, // 33: google.cloud.dataplex.v1.DiscoveryEvent.PartitionDetails.type:type_name -> google.cloud.dataplex.v1.DiscoveryEvent.EntityType - 7, // 34: google.cloud.dataplex.v1.SessionEvent.QueryDetail.engine:type_name -> google.cloud.dataplex.v1.SessionEvent.QueryDetail.Engine - 41, // 35: google.cloud.dataplex.v1.SessionEvent.QueryDetail.duration:type_name -> google.protobuf.Duration - 9, // 36: google.cloud.dataplex.v1.GovernanceEvent.Entity.entity_type:type_name -> google.cloud.dataplex.v1.GovernanceEvent.Entity.EntityType - 36, // 37: google.cloud.dataplex.v1.DataScanEvent.DataQualityResult.dimension_passed:type_name -> google.cloud.dataplex.v1.DataScanEvent.DataQualityResult.DimensionPassedEntry - 37, // 38: google.cloud.dataplex.v1.DataScanEvent.DataQualityResult.dimension_score:type_name -> google.cloud.dataplex.v1.DataScanEvent.DataQualityResult.DimensionScoreEntry - 38, // 39: google.cloud.dataplex.v1.DataScanEvent.DataQualityResult.column_score:type_name -> google.cloud.dataplex.v1.DataScanEvent.DataQualityResult.ColumnScoreEntry - 39, // 40: google.cloud.dataplex.v1.DataScanEvent.PostScanActionsResult.bigquery_export_result:type_name -> google.cloud.dataplex.v1.DataScanEvent.PostScanActionsResult.BigQueryExportResult - 14, // 41: google.cloud.dataplex.v1.DataScanEvent.PostScanActionsResult.BigQueryExportResult.state:type_name -> google.cloud.dataplex.v1.DataScanEvent.PostScanActionsResult.BigQueryExportResult.State - 42, // [42:42] is the sub-list for method output_type - 42, // [42:42] is the sub-list for method input_type - 42, // [42:42] is the sub-list for extension type_name - 42, // [42:42] is the sub-list for extension extendee - 0, // [0:42] is the sub-list for field type_name + 25, // 1: google.cloud.dataplex.v1.DiscoveryEvent.config:type_name -> google.cloud.dataplex.v1.DiscoveryEvent.ConfigDetails + 26, // 2: google.cloud.dataplex.v1.DiscoveryEvent.entity:type_name -> google.cloud.dataplex.v1.DiscoveryEvent.EntityDetails + 28, // 3: google.cloud.dataplex.v1.DiscoveryEvent.partition:type_name -> google.cloud.dataplex.v1.DiscoveryEvent.PartitionDetails + 29, // 4: google.cloud.dataplex.v1.DiscoveryEvent.action:type_name -> google.cloud.dataplex.v1.DiscoveryEvent.ActionDetails + 27, // 5: google.cloud.dataplex.v1.DiscoveryEvent.table:type_name -> google.cloud.dataplex.v1.DiscoveryEvent.TableDetails + 42, // 6: google.cloud.dataplex.v1.JobEvent.start_time:type_name -> google.protobuf.Timestamp + 42, // 7: google.cloud.dataplex.v1.JobEvent.end_time:type_name -> google.protobuf.Timestamp + 4, // 8: google.cloud.dataplex.v1.JobEvent.state:type_name -> google.cloud.dataplex.v1.JobEvent.State + 3, // 9: google.cloud.dataplex.v1.JobEvent.type:type_name -> google.cloud.dataplex.v1.JobEvent.Type + 5, // 10: google.cloud.dataplex.v1.JobEvent.service:type_name -> google.cloud.dataplex.v1.JobEvent.Service + 6, // 11: google.cloud.dataplex.v1.JobEvent.execution_trigger:type_name -> google.cloud.dataplex.v1.JobEvent.ExecutionTrigger + 7, // 12: google.cloud.dataplex.v1.SessionEvent.type:type_name -> google.cloud.dataplex.v1.SessionEvent.EventType + 31, // 13: google.cloud.dataplex.v1.SessionEvent.query:type_name -> google.cloud.dataplex.v1.SessionEvent.QueryDetail + 43, // 14: google.cloud.dataplex.v1.SessionEvent.unassigned_duration:type_name -> google.protobuf.Duration + 9, // 15: google.cloud.dataplex.v1.GovernanceEvent.event_type:type_name -> google.cloud.dataplex.v1.GovernanceEvent.EventType + 32, // 16: google.cloud.dataplex.v1.GovernanceEvent.entity:type_name -> google.cloud.dataplex.v1.GovernanceEvent.Entity + 42, // 17: google.cloud.dataplex.v1.DataScanEvent.create_time:type_name -> google.protobuf.Timestamp + 42, // 18: google.cloud.dataplex.v1.DataScanEvent.start_time:type_name -> google.protobuf.Timestamp + 42, // 19: google.cloud.dataplex.v1.DataScanEvent.end_time:type_name -> google.protobuf.Timestamp + 11, // 20: google.cloud.dataplex.v1.DataScanEvent.type:type_name -> google.cloud.dataplex.v1.DataScanEvent.ScanType + 12, // 21: google.cloud.dataplex.v1.DataScanEvent.state:type_name -> google.cloud.dataplex.v1.DataScanEvent.State + 13, // 22: google.cloud.dataplex.v1.DataScanEvent.trigger:type_name -> google.cloud.dataplex.v1.DataScanEvent.Trigger + 14, // 23: google.cloud.dataplex.v1.DataScanEvent.scope:type_name -> google.cloud.dataplex.v1.DataScanEvent.Scope + 33, // 24: google.cloud.dataplex.v1.DataScanEvent.data_profile:type_name -> google.cloud.dataplex.v1.DataScanEvent.DataProfileResult + 34, // 25: google.cloud.dataplex.v1.DataScanEvent.data_quality:type_name -> google.cloud.dataplex.v1.DataScanEvent.DataQualityResult + 35, // 26: google.cloud.dataplex.v1.DataScanEvent.data_profile_configs:type_name -> google.cloud.dataplex.v1.DataScanEvent.DataProfileAppliedConfigs + 36, // 27: google.cloud.dataplex.v1.DataScanEvent.data_quality_configs:type_name -> google.cloud.dataplex.v1.DataScanEvent.DataQualityAppliedConfigs + 37, // 28: google.cloud.dataplex.v1.DataScanEvent.post_scan_actions_result:type_name -> google.cloud.dataplex.v1.DataScanEvent.PostScanActionsResult + 16, // 29: google.cloud.dataplex.v1.DataQualityScanRuleResult.rule_type:type_name -> google.cloud.dataplex.v1.DataQualityScanRuleResult.RuleType + 17, // 30: google.cloud.dataplex.v1.DataQualityScanRuleResult.evalution_type:type_name -> google.cloud.dataplex.v1.DataQualityScanRuleResult.EvaluationType + 18, // 31: google.cloud.dataplex.v1.DataQualityScanRuleResult.result:type_name -> google.cloud.dataplex.v1.DataQualityScanRuleResult.Result + 30, // 32: google.cloud.dataplex.v1.DiscoveryEvent.ConfigDetails.parameters:type_name -> google.cloud.dataplex.v1.DiscoveryEvent.ConfigDetails.ParametersEntry + 1, // 33: google.cloud.dataplex.v1.DiscoveryEvent.EntityDetails.type:type_name -> google.cloud.dataplex.v1.DiscoveryEvent.EntityType + 2, // 34: google.cloud.dataplex.v1.DiscoveryEvent.TableDetails.type:type_name -> google.cloud.dataplex.v1.DiscoveryEvent.TableType + 1, // 35: google.cloud.dataplex.v1.DiscoveryEvent.PartitionDetails.type:type_name -> google.cloud.dataplex.v1.DiscoveryEvent.EntityType + 8, // 36: google.cloud.dataplex.v1.SessionEvent.QueryDetail.engine:type_name -> google.cloud.dataplex.v1.SessionEvent.QueryDetail.Engine + 43, // 37: google.cloud.dataplex.v1.SessionEvent.QueryDetail.duration:type_name -> google.protobuf.Duration + 10, // 38: google.cloud.dataplex.v1.GovernanceEvent.Entity.entity_type:type_name -> google.cloud.dataplex.v1.GovernanceEvent.Entity.EntityType + 38, // 39: google.cloud.dataplex.v1.DataScanEvent.DataQualityResult.dimension_passed:type_name -> google.cloud.dataplex.v1.DataScanEvent.DataQualityResult.DimensionPassedEntry + 39, // 40: google.cloud.dataplex.v1.DataScanEvent.DataQualityResult.dimension_score:type_name -> google.cloud.dataplex.v1.DataScanEvent.DataQualityResult.DimensionScoreEntry + 40, // 41: google.cloud.dataplex.v1.DataScanEvent.DataQualityResult.column_score:type_name -> google.cloud.dataplex.v1.DataScanEvent.DataQualityResult.ColumnScoreEntry + 41, // 42: google.cloud.dataplex.v1.DataScanEvent.PostScanActionsResult.bigquery_export_result:type_name -> google.cloud.dataplex.v1.DataScanEvent.PostScanActionsResult.BigQueryExportResult + 15, // 43: google.cloud.dataplex.v1.DataScanEvent.PostScanActionsResult.BigQueryExportResult.state:type_name -> google.cloud.dataplex.v1.DataScanEvent.PostScanActionsResult.BigQueryExportResult.State + 44, // [44:44] is the sub-list for method output_type + 44, // [44:44] is the sub-list for method input_type + 44, // [44:44] is the sub-list for extension type_name + 44, // [44:44] is the sub-list for extension extendee + 0, // [0:44] is the sub-list for field type_name } func init() { file_google_cloud_dataplex_v1_logs_proto_init() } @@ -3573,7 +3771,7 @@ func file_google_cloud_dataplex_v1_logs_proto_init() { } } file_google_cloud_dataplex_v1_logs_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DiscoveryEvent_PartitionDetails); i { + switch v := v.(*DiscoveryEvent_TableDetails); i { case 0: return &v.state case 1: @@ -3585,6 +3783,18 @@ func file_google_cloud_dataplex_v1_logs_proto_init() { } } file_google_cloud_dataplex_v1_logs_proto_msgTypes[9].Exporter = func(v any, i int) any { + switch v := v.(*DiscoveryEvent_PartitionDetails); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dataplex_v1_logs_proto_msgTypes[10].Exporter = func(v any, i int) any { switch v := v.(*DiscoveryEvent_ActionDetails); i { case 0: return &v.state @@ -3596,7 +3806,7 @@ func file_google_cloud_dataplex_v1_logs_proto_init() { return nil } } - file_google_cloud_dataplex_v1_logs_proto_msgTypes[11].Exporter = func(v any, i int) any { + file_google_cloud_dataplex_v1_logs_proto_msgTypes[12].Exporter = func(v any, i int) any { switch v := v.(*SessionEvent_QueryDetail); i { case 0: return &v.state @@ -3608,7 +3818,7 @@ func file_google_cloud_dataplex_v1_logs_proto_init() { return nil } } - file_google_cloud_dataplex_v1_logs_proto_msgTypes[12].Exporter = func(v any, i int) any { + file_google_cloud_dataplex_v1_logs_proto_msgTypes[13].Exporter = func(v any, i int) any { switch v := v.(*GovernanceEvent_Entity); i { case 0: return &v.state @@ -3620,7 +3830,7 @@ func file_google_cloud_dataplex_v1_logs_proto_init() { return nil } } - file_google_cloud_dataplex_v1_logs_proto_msgTypes[13].Exporter = func(v any, i int) any { + file_google_cloud_dataplex_v1_logs_proto_msgTypes[14].Exporter = func(v any, i int) any { switch v := v.(*DataScanEvent_DataProfileResult); i { case 0: return &v.state @@ -3632,7 +3842,7 @@ func file_google_cloud_dataplex_v1_logs_proto_init() { return nil } } - file_google_cloud_dataplex_v1_logs_proto_msgTypes[14].Exporter = func(v any, i int) any { + file_google_cloud_dataplex_v1_logs_proto_msgTypes[15].Exporter = func(v any, i int) any { switch v := v.(*DataScanEvent_DataQualityResult); i { case 0: return &v.state @@ -3644,7 +3854,7 @@ func file_google_cloud_dataplex_v1_logs_proto_init() { return nil } } - file_google_cloud_dataplex_v1_logs_proto_msgTypes[15].Exporter = func(v any, i int) any { + file_google_cloud_dataplex_v1_logs_proto_msgTypes[16].Exporter = func(v any, i int) any { switch v := v.(*DataScanEvent_DataProfileAppliedConfigs); i { case 0: return &v.state @@ -3656,7 +3866,7 @@ func file_google_cloud_dataplex_v1_logs_proto_init() { return nil } } - file_google_cloud_dataplex_v1_logs_proto_msgTypes[16].Exporter = func(v any, i int) any { + file_google_cloud_dataplex_v1_logs_proto_msgTypes[17].Exporter = func(v any, i int) any { switch v := v.(*DataScanEvent_DataQualityAppliedConfigs); i { case 0: return &v.state @@ -3668,7 +3878,7 @@ func file_google_cloud_dataplex_v1_logs_proto_init() { return nil } } - file_google_cloud_dataplex_v1_logs_proto_msgTypes[17].Exporter = func(v any, i int) any { + file_google_cloud_dataplex_v1_logs_proto_msgTypes[18].Exporter = func(v any, i int) any { switch v := v.(*DataScanEvent_PostScanActionsResult); i { case 0: return &v.state @@ -3680,7 +3890,7 @@ func file_google_cloud_dataplex_v1_logs_proto_init() { return nil } } - file_google_cloud_dataplex_v1_logs_proto_msgTypes[21].Exporter = func(v any, i int) any { + file_google_cloud_dataplex_v1_logs_proto_msgTypes[22].Exporter = func(v any, i int) any { switch v := v.(*DataScanEvent_PostScanActionsResult_BigQueryExportResult); i { case 0: return &v.state @@ -3698,6 +3908,7 @@ func file_google_cloud_dataplex_v1_logs_proto_init() { (*DiscoveryEvent_Entity)(nil), (*DiscoveryEvent_Partition)(nil), (*DiscoveryEvent_Action)(nil), + (*DiscoveryEvent_Table)(nil), } file_google_cloud_dataplex_v1_logs_proto_msgTypes[2].OneofWrappers = []any{ (*SessionEvent_Query)(nil), @@ -3714,8 +3925,8 @@ func file_google_cloud_dataplex_v1_logs_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_dataplex_v1_logs_proto_rawDesc, - NumEnums: 18, - NumMessages: 22, + NumEnums: 19, + NumMessages: 23, NumExtensions: 0, NumServices: 0, }, diff --git a/dataplex/apiv1/dataplexpb/tasks.pb.go b/dataplex/apiv1/dataplexpb/tasks.pb.go index e97b3305f138..a651e041a96b 100755 --- a/dataplex/apiv1/dataplexpb/tasks.pb.go +++ b/dataplex/apiv1/dataplexpb/tasks.pb.go @@ -1105,10 +1105,9 @@ type Task_SparkTaskConfig_PythonScriptFile struct { } type Task_SparkTaskConfig_SqlScriptFile struct { - // A reference to a query file. This can be the Cloud Storage URI of the - // query file or it can the path to a SqlScript Content. The execution - // args are used to declare a set of script variables - // (`set key="value";`). + // A reference to a query file. This should be the Cloud Storage URI of + // the query file. The execution args are used to declare a set of script + // variables (`set key="value";`). SqlScriptFile string `protobuf:"bytes,104,opt,name=sql_script_file,json=sqlScriptFile,proto3,oneof"` } diff --git a/dataplex/apiv1/gapic_metadata.json b/dataplex/apiv1/gapic_metadata.json index 0b04b92ed8b1..60e1af55bc6b 100644 --- a/dataplex/apiv1/gapic_metadata.json +++ b/dataplex/apiv1/gapic_metadata.json @@ -10,6 +10,11 @@ "grpc": { "libraryClient": "CatalogClient", "rpcs": { + "CancelMetadataJob": { + "methods": [ + "CancelMetadataJob" + ] + }, "CancelOperation": { "methods": [ "CancelOperation" @@ -35,6 +40,11 @@ "CreateEntryType" ] }, + "CreateMetadataJob": { + "methods": [ + "CreateMetadataJob" + ] + }, "DeleteAspectType": { "methods": [ "DeleteAspectType" @@ -85,6 +95,11 @@ "GetLocation" ] }, + "GetMetadataJob": { + "methods": [ + "GetMetadataJob" + ] + }, "GetOperation": { "methods": [ "GetOperation" @@ -115,6 +130,11 @@ "ListLocations" ] }, + "ListMetadataJobs": { + "methods": [ + "ListMetadataJobs" + ] + }, "ListOperations": { "methods": [ "ListOperations" diff --git a/developerconnect/apiv1/developerconnectpb/developer_connect.pb.go b/developerconnect/apiv1/developerconnectpb/developer_connect.pb.go index 106c12700250..32c3ed86504b 100755 --- a/developerconnect/apiv1/developerconnectpb/developer_connect.pb.go +++ b/developerconnect/apiv1/developerconnectpb/developer_connect.pb.go @@ -103,7 +103,7 @@ func (x InstallationState_Stage) Number() protoreflect.EnumNumber { // Deprecated: Use InstallationState_Stage.Descriptor instead. func (InstallationState_Stage) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{1, 0} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{2, 0} } // Represents the various GitHub Applications that can be installed to a @@ -157,7 +157,7 @@ func (x GitHubConfig_GitHubApp) Number() protoreflect.EnumNumber { // Deprecated: Use GitHubConfig_GitHubApp.Descriptor instead. func (GitHubConfig_GitHubApp) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{2, 0} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{3, 0} } // Type of refs. @@ -210,7 +210,7 @@ func (x FetchGitRefsRequest_RefType) Number() protoreflect.EnumNumber { // Deprecated: Use FetchGitRefsRequest_RefType.Descriptor instead. func (FetchGitRefsRequest_RefType) EnumDescriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{26, 0} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{32, 0} } // Message describing Connection object @@ -224,6 +224,9 @@ type Connection struct { // Types that are assignable to ConnectionConfig: // // *Connection_GithubConfig + // *Connection_GithubEnterpriseConfig + // *Connection_GitlabConfig + // *Connection_GitlabEnterpriseConfig ConnectionConfig isConnection_ConnectionConfig `protobuf_oneof:"connection_config"` // Identifier. The resource name of the connection, in the format // `projects/{project}/locations/{location}/connections/{connection_id}`. @@ -254,6 +257,9 @@ type Connection struct { // Output only. A system-assigned unique identifier for a the // GitRepositoryLink. Uid string `protobuf:"bytes,12,opt,name=uid,proto3" json:"uid,omitempty"` + // Optional. The crypto key configuration. This field is used by the + // Customer-Managed Encryption Keys (CMEK) feature. + CryptoKeyConfig *CryptoKeyConfig `protobuf:"bytes,15,opt,name=crypto_key_config,json=cryptoKeyConfig,proto3" json:"crypto_key_config,omitempty"` } func (x *Connection) Reset() { @@ -302,6 +308,27 @@ func (x *Connection) GetGithubConfig() *GitHubConfig { return nil } +func (x *Connection) GetGithubEnterpriseConfig() *GitHubEnterpriseConfig { + if x, ok := x.GetConnectionConfig().(*Connection_GithubEnterpriseConfig); ok { + return x.GithubEnterpriseConfig + } + return nil +} + +func (x *Connection) GetGitlabConfig() *GitLabConfig { + if x, ok := x.GetConnectionConfig().(*Connection_GitlabConfig); ok { + return x.GitlabConfig + } + return nil +} + +func (x *Connection) GetGitlabEnterpriseConfig() *GitLabEnterpriseConfig { + if x, ok := x.GetConnectionConfig().(*Connection_GitlabEnterpriseConfig); ok { + return x.GitlabEnterpriseConfig + } + return nil +} + func (x *Connection) GetName() string { if x != nil { return x.Name @@ -379,6 +406,13 @@ func (x *Connection) GetUid() string { return "" } +func (x *Connection) GetCryptoKeyConfig() *CryptoKeyConfig { + if x != nil { + return x.CryptoKeyConfig + } + return nil +} + type isConnection_ConnectionConfig interface { isConnection_ConnectionConfig() } @@ -388,8 +422,81 @@ type Connection_GithubConfig struct { GithubConfig *GitHubConfig `protobuf:"bytes,5,opt,name=github_config,json=githubConfig,proto3,oneof"` } +type Connection_GithubEnterpriseConfig struct { + // Configuration for connections to an instance of GitHub Enterprise. + GithubEnterpriseConfig *GitHubEnterpriseConfig `protobuf:"bytes,13,opt,name=github_enterprise_config,json=githubEnterpriseConfig,proto3,oneof"` +} + +type Connection_GitlabConfig struct { + // Configuration for connections to gitlab.com. + GitlabConfig *GitLabConfig `protobuf:"bytes,14,opt,name=gitlab_config,json=gitlabConfig,proto3,oneof"` +} + +type Connection_GitlabEnterpriseConfig struct { + // Configuration for connections to an instance of GitLab Enterprise. + GitlabEnterpriseConfig *GitLabEnterpriseConfig `protobuf:"bytes,16,opt,name=gitlab_enterprise_config,json=gitlabEnterpriseConfig,proto3,oneof"` +} + func (*Connection_GithubConfig) isConnection_ConnectionConfig() {} +func (*Connection_GithubEnterpriseConfig) isConnection_ConnectionConfig() {} + +func (*Connection_GitlabConfig) isConnection_ConnectionConfig() {} + +func (*Connection_GitlabEnterpriseConfig) isConnection_ConnectionConfig() {} + +// The crypto key configuration. This field is used by the Customer-managed +// encryption keys (CMEK) feature. +type CryptoKeyConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The name of the key which is used to encrypt/decrypt customer + // data. For key in Cloud KMS, the key should be in the format of + // `projects/*/locations/*/keyRings/*/cryptoKeys/*`. + KeyReference string `protobuf:"bytes,1,opt,name=key_reference,json=keyReference,proto3" json:"key_reference,omitempty"` +} + +func (x *CryptoKeyConfig) Reset() { + *x = CryptoKeyConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CryptoKeyConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CryptoKeyConfig) ProtoMessage() {} + +func (x *CryptoKeyConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CryptoKeyConfig.ProtoReflect.Descriptor instead. +func (*CryptoKeyConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{1} +} + +func (x *CryptoKeyConfig) GetKeyReference() string { + if x != nil { + return x.KeyReference + } + return "" +} + // Describes stage and necessary actions to be taken by the // user to complete the installation. Used for GitHub and GitHub Enterprise // based connections. @@ -411,7 +518,7 @@ type InstallationState struct { func (x *InstallationState) Reset() { *x = InstallationState{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[1] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -424,7 +531,7 @@ func (x *InstallationState) String() string { func (*InstallationState) ProtoMessage() {} func (x *InstallationState) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[1] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -437,7 +544,7 @@ func (x *InstallationState) ProtoReflect() protoreflect.Message { // Deprecated: Use InstallationState.ProtoReflect.Descriptor instead. func (*InstallationState) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{1} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{2} } func (x *InstallationState) GetStage() InstallationState_Stage { @@ -484,7 +591,7 @@ type GitHubConfig struct { func (x *GitHubConfig) Reset() { *x = GitHubConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[2] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -497,7 +604,7 @@ func (x *GitHubConfig) String() string { func (*GitHubConfig) ProtoMessage() {} func (x *GitHubConfig) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[2] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -510,7 +617,7 @@ func (x *GitHubConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use GitHubConfig.ProtoReflect.Descriptor instead. func (*GitHubConfig) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{2} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{3} } func (x *GitHubConfig) GetGithubApp() GitHubConfig_GitHubApp { @@ -541,37 +648,58 @@ func (x *GitHubConfig) GetInstallationUri() string { return "" } -// Represents an OAuth token of the account that authorized the Connection, -// and associated metadata. -type OAuthCredential struct { +// Configuration for connections to an instance of GitHub Enterprise. +type GitHubEnterpriseConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. A SecretManager resource containing the OAuth token that - // authorizes the connection. Format: `projects/*/secrets/*/versions/*`. - OauthTokenSecretVersion string `protobuf:"bytes,1,opt,name=oauth_token_secret_version,json=oauthTokenSecretVersion,proto3" json:"oauth_token_secret_version,omitempty"` - // Output only. The username associated with this token. - Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` -} - -func (x *OAuthCredential) Reset() { - *x = OAuthCredential{} + // Required. The URI of the GitHub Enterprise host this connection is for. + HostUri string `protobuf:"bytes,1,opt,name=host_uri,json=hostUri,proto3" json:"host_uri,omitempty"` + // Optional. ID of the GitHub App created from the manifest. + AppId int64 `protobuf:"varint,2,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` + // Output only. The URL-friendly name of the GitHub App. + AppSlug string `protobuf:"bytes,3,opt,name=app_slug,json=appSlug,proto3" json:"app_slug,omitempty"` + // Optional. SecretManager resource containing the private key of the GitHub + // App, formatted as `projects/*/secrets/*/versions/*`. + PrivateKeySecretVersion string `protobuf:"bytes,4,opt,name=private_key_secret_version,json=privateKeySecretVersion,proto3" json:"private_key_secret_version,omitempty"` + // Optional. SecretManager resource containing the webhook secret of the + // GitHub App, formatted as `projects/*/secrets/*/versions/*`. + WebhookSecretSecretVersion string `protobuf:"bytes,5,opt,name=webhook_secret_secret_version,json=webhookSecretSecretVersion,proto3" json:"webhook_secret_secret_version,omitempty"` + // Optional. ID of the installation of the GitHub App. + AppInstallationId int64 `protobuf:"varint,8,opt,name=app_installation_id,json=appInstallationId,proto3" json:"app_installation_id,omitempty"` + // Output only. The URI to navigate to in order to manage the installation + // associated with this GitHubEnterpriseConfig. + InstallationUri string `protobuf:"bytes,9,opt,name=installation_uri,json=installationUri,proto3" json:"installation_uri,omitempty"` + // Optional. Configuration for using Service Directory to privately connect to + // a GitHub Enterprise server. This should only be set if the GitHub + // Enterprise server is hosted on-premises and not reachable by public + // internet. If this field is left empty, calls to the GitHub Enterprise + // server will be made over the public internet. + ServiceDirectoryConfig *ServiceDirectoryConfig `protobuf:"bytes,10,opt,name=service_directory_config,json=serviceDirectoryConfig,proto3" json:"service_directory_config,omitempty"` + // Output only. GitHub Enterprise version installed at the host_uri. + ServerVersion string `protobuf:"bytes,12,opt,name=server_version,json=serverVersion,proto3" json:"server_version,omitempty"` + // Optional. SSL certificate to use for requests to GitHub Enterprise. + SslCaCertificate string `protobuf:"bytes,14,opt,name=ssl_ca_certificate,json=sslCaCertificate,proto3" json:"ssl_ca_certificate,omitempty"` +} + +func (x *GitHubEnterpriseConfig) Reset() { + *x = GitHubEnterpriseConfig{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[3] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *OAuthCredential) String() string { +func (x *GitHubEnterpriseConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OAuthCredential) ProtoMessage() {} +func (*GitHubEnterpriseConfig) ProtoMessage() {} -func (x *OAuthCredential) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[3] +func (x *GitHubEnterpriseConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -582,127 +710,96 @@ func (x *OAuthCredential) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OAuthCredential.ProtoReflect.Descriptor instead. -func (*OAuthCredential) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{3} +// Deprecated: Use GitHubEnterpriseConfig.ProtoReflect.Descriptor instead. +func (*GitHubEnterpriseConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{4} } -func (x *OAuthCredential) GetOauthTokenSecretVersion() string { +func (x *GitHubEnterpriseConfig) GetHostUri() string { if x != nil { - return x.OauthTokenSecretVersion + return x.HostUri } return "" } -func (x *OAuthCredential) GetUsername() string { +func (x *GitHubEnterpriseConfig) GetAppId() int64 { if x != nil { - return x.Username + return x.AppId } - return "" -} - -// Message for requesting list of Connections -type ListConnectionsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Required. Parent value for ListConnectionsRequest - Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Optional. Requested page size. Server may return fewer items than - // requested. If unspecified, server will pick an appropriate default. - PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` - // Optional. A token identifying a page of results the server should return. - PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` - // Optional. Filtering results - Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` - // Optional. Hint for how to order the results - OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` + return 0 } -func (x *ListConnectionsRequest) Reset() { - *x = ListConnectionsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *GitHubEnterpriseConfig) GetAppSlug() string { + if x != nil { + return x.AppSlug } + return "" } -func (x *ListConnectionsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ListConnectionsRequest) ProtoMessage() {} - -func (x *ListConnectionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *GitHubEnterpriseConfig) GetPrivateKeySecretVersion() string { + if x != nil { + return x.PrivateKeySecretVersion } - return mi.MessageOf(x) -} - -// Deprecated: Use ListConnectionsRequest.ProtoReflect.Descriptor instead. -func (*ListConnectionsRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{4} + return "" } -func (x *ListConnectionsRequest) GetParent() string { +func (x *GitHubEnterpriseConfig) GetWebhookSecretSecretVersion() string { if x != nil { - return x.Parent + return x.WebhookSecretSecretVersion } return "" } -func (x *ListConnectionsRequest) GetPageSize() int32 { +func (x *GitHubEnterpriseConfig) GetAppInstallationId() int64 { if x != nil { - return x.PageSize + return x.AppInstallationId } return 0 } -func (x *ListConnectionsRequest) GetPageToken() string { +func (x *GitHubEnterpriseConfig) GetInstallationUri() string { if x != nil { - return x.PageToken + return x.InstallationUri } return "" } -func (x *ListConnectionsRequest) GetFilter() string { +func (x *GitHubEnterpriseConfig) GetServiceDirectoryConfig() *ServiceDirectoryConfig { if x != nil { - return x.Filter + return x.ServiceDirectoryConfig + } + return nil +} + +func (x *GitHubEnterpriseConfig) GetServerVersion() string { + if x != nil { + return x.ServerVersion } return "" } -func (x *ListConnectionsRequest) GetOrderBy() string { +func (x *GitHubEnterpriseConfig) GetSslCaCertificate() string { if x != nil { - return x.OrderBy + return x.SslCaCertificate } return "" } -// Message for response to listing Connections -type ListConnectionsResponse struct { +// ServiceDirectoryConfig represents Service Directory configuration for a +// connection. +type ServiceDirectoryConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The list of Connection - Connections []*Connection `protobuf:"bytes,1,rep,name=connections,proto3" json:"connections,omitempty"` - // A token identifying a page of results the server should return. - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` - // Locations that could not be reached. - Unreachable []string `protobuf:"bytes,3,rep,name=unreachable,proto3" json:"unreachable,omitempty"` + // Required. The Service Directory service name. + // Format: + // projects/{project}/locations/{location}/namespaces/{namespace}/services/{service}. + Service string `protobuf:"bytes,1,opt,name=service,proto3" json:"service,omitempty"` } -func (x *ListConnectionsResponse) Reset() { - *x = ListConnectionsResponse{} +func (x *ServiceDirectoryConfig) Reset() { + *x = ServiceDirectoryConfig{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -710,13 +807,13 @@ func (x *ListConnectionsResponse) Reset() { } } -func (x *ListConnectionsResponse) String() string { +func (x *ServiceDirectoryConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListConnectionsResponse) ProtoMessage() {} +func (*ServiceDirectoryConfig) ProtoMessage() {} -func (x *ListConnectionsResponse) ProtoReflect() protoreflect.Message { +func (x *ServiceDirectoryConfig) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -728,44 +825,34 @@ func (x *ListConnectionsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListConnectionsResponse.ProtoReflect.Descriptor instead. -func (*ListConnectionsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ServiceDirectoryConfig.ProtoReflect.Descriptor instead. +func (*ServiceDirectoryConfig) Descriptor() ([]byte, []int) { return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{5} } -func (x *ListConnectionsResponse) GetConnections() []*Connection { - if x != nil { - return x.Connections - } - return nil -} - -func (x *ListConnectionsResponse) GetNextPageToken() string { +func (x *ServiceDirectoryConfig) GetService() string { if x != nil { - return x.NextPageToken + return x.Service } return "" } -func (x *ListConnectionsResponse) GetUnreachable() []string { - if x != nil { - return x.Unreachable - } - return nil -} - -// Message for getting a Connection -type GetConnectionRequest struct { +// Represents an OAuth token of the account that authorized the Connection, +// and associated metadata. +type OAuthCredential struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Name of the resource - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Required. A SecretManager resource containing the OAuth token that + // authorizes the connection. Format: `projects/*/secrets/*/versions/*`. + OauthTokenSecretVersion string `protobuf:"bytes,1,opt,name=oauth_token_secret_version,json=oauthTokenSecretVersion,proto3" json:"oauth_token_secret_version,omitempty"` + // Output only. The username associated with this token. + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` } -func (x *GetConnectionRequest) Reset() { - *x = GetConnectionRequest{} +func (x *OAuthCredential) Reset() { + *x = OAuthCredential{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -773,13 +860,13 @@ func (x *GetConnectionRequest) Reset() { } } -func (x *GetConnectionRequest) String() string { +func (x *OAuthCredential) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetConnectionRequest) ProtoMessage() {} +func (*OAuthCredential) ProtoMessage() {} -func (x *GetConnectionRequest) ProtoReflect() protoreflect.Message { +func (x *OAuthCredential) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -791,37 +878,499 @@ func (x *GetConnectionRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetConnectionRequest.ProtoReflect.Descriptor instead. -func (*GetConnectionRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use OAuthCredential.ProtoReflect.Descriptor instead. +func (*OAuthCredential) Descriptor() ([]byte, []int) { return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{6} } -func (x *GetConnectionRequest) GetName() string { +func (x *OAuthCredential) GetOauthTokenSecretVersion() string { if x != nil { - return x.Name + return x.OauthTokenSecretVersion } return "" } -// Message for creating a Connection -type CreateConnectionRequest struct { +func (x *OAuthCredential) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +// Configuration for connections to gitlab.com. +type GitLabConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Required. Value for parent. - Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - // Required. Id of the requesting object - // If auto-generating Id server-side, remove this field and - // connection_id from the method_signature of Create RPC - ConnectionId string `protobuf:"bytes,2,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty"` - // Required. The resource being created - Connection *Connection `protobuf:"bytes,3,opt,name=connection,proto3" json:"connection,omitempty"` - // Optional. An optional request ID to identify requests. Specify a unique - // request ID so that if you must retry your request, the server will know to - // ignore the request if it has already been completed. The server will - // guarantee that for at least 60 minutes since the first request. - // + // Required. Immutable. SecretManager resource containing the webhook secret + // of a GitLab project, formatted as `projects/*/secrets/*/versions/*`. This + // is used to validate webhooks. + WebhookSecretSecretVersion string `protobuf:"bytes,1,opt,name=webhook_secret_secret_version,json=webhookSecretSecretVersion,proto3" json:"webhook_secret_secret_version,omitempty"` + // Required. A GitLab personal access token with the minimum `read_api` scope + // access and a minimum role of `reporter`. The GitLab Projects visible to + // this Personal Access Token will control which Projects Developer Connect + // has access to. + ReadAuthorizerCredential *UserCredential `protobuf:"bytes,2,opt,name=read_authorizer_credential,json=readAuthorizerCredential,proto3" json:"read_authorizer_credential,omitempty"` + // Required. A GitLab personal access token with the minimum `api` scope + // access and a minimum role of `maintainer`. The GitLab Projects visible to + // this Personal Access Token will control which Projects Developer Connect + // has access to. + AuthorizerCredential *UserCredential `protobuf:"bytes,3,opt,name=authorizer_credential,json=authorizerCredential,proto3" json:"authorizer_credential,omitempty"` +} + +func (x *GitLabConfig) Reset() { + *x = GitLabConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GitLabConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GitLabConfig) ProtoMessage() {} + +func (x *GitLabConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GitLabConfig.ProtoReflect.Descriptor instead. +func (*GitLabConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{7} +} + +func (x *GitLabConfig) GetWebhookSecretSecretVersion() string { + if x != nil { + return x.WebhookSecretSecretVersion + } + return "" +} + +func (x *GitLabConfig) GetReadAuthorizerCredential() *UserCredential { + if x != nil { + return x.ReadAuthorizerCredential + } + return nil +} + +func (x *GitLabConfig) GetAuthorizerCredential() *UserCredential { + if x != nil { + return x.AuthorizerCredential + } + return nil +} + +// Represents a personal access token that authorized the Connection, +// and associated metadata. +type UserCredential struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. A SecretManager resource containing the user token that + // authorizes the Developer Connect connection. Format: + // `projects/*/secrets/*/versions/*`. + UserTokenSecretVersion string `protobuf:"bytes,1,opt,name=user_token_secret_version,json=userTokenSecretVersion,proto3" json:"user_token_secret_version,omitempty"` + // Output only. The username associated with this token. + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` +} + +func (x *UserCredential) Reset() { + *x = UserCredential{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UserCredential) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UserCredential) ProtoMessage() {} + +func (x *UserCredential) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UserCredential.ProtoReflect.Descriptor instead. +func (*UserCredential) Descriptor() ([]byte, []int) { + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{8} +} + +func (x *UserCredential) GetUserTokenSecretVersion() string { + if x != nil { + return x.UserTokenSecretVersion + } + return "" +} + +func (x *UserCredential) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +// Configuration for connections to an instance of GitLab Enterprise. +type GitLabEnterpriseConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. The URI of the GitLab Enterprise host this connection is for. + HostUri string `protobuf:"bytes,1,opt,name=host_uri,json=hostUri,proto3" json:"host_uri,omitempty"` + // Required. Immutable. SecretManager resource containing the webhook secret + // of a GitLab project, formatted as `projects/*/secrets/*/versions/*`. This + // is used to validate webhooks. + WebhookSecretSecretVersion string `protobuf:"bytes,2,opt,name=webhook_secret_secret_version,json=webhookSecretSecretVersion,proto3" json:"webhook_secret_secret_version,omitempty"` + // Required. A GitLab personal access token with the minimum `read_api` scope + // access and a minimum role of `reporter`. The GitLab Projects visible to + // this Personal Access Token will control which Projects Developer Connect + // has access to. + ReadAuthorizerCredential *UserCredential `protobuf:"bytes,3,opt,name=read_authorizer_credential,json=readAuthorizerCredential,proto3" json:"read_authorizer_credential,omitempty"` + // Required. A GitLab personal access token with the minimum `api` scope + // access and a minimum role of `maintainer`. The GitLab Projects visible to + // this Personal Access Token will control which Projects Developer Connect + // has access to. + AuthorizerCredential *UserCredential `protobuf:"bytes,4,opt,name=authorizer_credential,json=authorizerCredential,proto3" json:"authorizer_credential,omitempty"` + // Optional. Configuration for using Service Directory to privately connect to + // a GitLab Enterprise instance. This should only be set if the GitLab + // Enterprise server is hosted on-premises and not reachable by public + // internet. If this field is left empty, calls to the GitLab Enterprise + // server will be made over the public internet. + ServiceDirectoryConfig *ServiceDirectoryConfig `protobuf:"bytes,5,opt,name=service_directory_config,json=serviceDirectoryConfig,proto3" json:"service_directory_config,omitempty"` + // Optional. SSL Certificate Authority certificate to use for requests to + // GitLab Enterprise instance. + SslCaCertificate string `protobuf:"bytes,6,opt,name=ssl_ca_certificate,json=sslCaCertificate,proto3" json:"ssl_ca_certificate,omitempty"` + // Output only. Version of the GitLab Enterprise server running on the + // `host_uri`. + ServerVersion string `protobuf:"bytes,7,opt,name=server_version,json=serverVersion,proto3" json:"server_version,omitempty"` +} + +func (x *GitLabEnterpriseConfig) Reset() { + *x = GitLabEnterpriseConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GitLabEnterpriseConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GitLabEnterpriseConfig) ProtoMessage() {} + +func (x *GitLabEnterpriseConfig) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GitLabEnterpriseConfig.ProtoReflect.Descriptor instead. +func (*GitLabEnterpriseConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{9} +} + +func (x *GitLabEnterpriseConfig) GetHostUri() string { + if x != nil { + return x.HostUri + } + return "" +} + +func (x *GitLabEnterpriseConfig) GetWebhookSecretSecretVersion() string { + if x != nil { + return x.WebhookSecretSecretVersion + } + return "" +} + +func (x *GitLabEnterpriseConfig) GetReadAuthorizerCredential() *UserCredential { + if x != nil { + return x.ReadAuthorizerCredential + } + return nil +} + +func (x *GitLabEnterpriseConfig) GetAuthorizerCredential() *UserCredential { + if x != nil { + return x.AuthorizerCredential + } + return nil +} + +func (x *GitLabEnterpriseConfig) GetServiceDirectoryConfig() *ServiceDirectoryConfig { + if x != nil { + return x.ServiceDirectoryConfig + } + return nil +} + +func (x *GitLabEnterpriseConfig) GetSslCaCertificate() string { + if x != nil { + return x.SslCaCertificate + } + return "" +} + +func (x *GitLabEnterpriseConfig) GetServerVersion() string { + if x != nil { + return x.ServerVersion + } + return "" +} + +// Message for requesting list of Connections +type ListConnectionsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Parent value for ListConnectionsRequest + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Optional. Requested page size. Server may return fewer items than + // requested. If unspecified, server will pick an appropriate default. + PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` + // Optional. A token identifying a page of results the server should return. + PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` + // Optional. Filtering results + Filter string `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` + // Optional. Hint for how to order the results + OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` +} + +func (x *ListConnectionsRequest) Reset() { + *x = ListConnectionsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListConnectionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListConnectionsRequest) ProtoMessage() {} + +func (x *ListConnectionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListConnectionsRequest.ProtoReflect.Descriptor instead. +func (*ListConnectionsRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{10} +} + +func (x *ListConnectionsRequest) GetParent() string { + if x != nil { + return x.Parent + } + return "" +} + +func (x *ListConnectionsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +func (x *ListConnectionsRequest) GetPageToken() string { + if x != nil { + return x.PageToken + } + return "" +} + +func (x *ListConnectionsRequest) GetFilter() string { + if x != nil { + return x.Filter + } + return "" +} + +func (x *ListConnectionsRequest) GetOrderBy() string { + if x != nil { + return x.OrderBy + } + return "" +} + +// Message for response to listing Connections +type ListConnectionsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The list of Connection + Connections []*Connection `protobuf:"bytes,1,rep,name=connections,proto3" json:"connections,omitempty"` + // A token identifying a page of results the server should return. + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` + // Locations that could not be reached. + Unreachable []string `protobuf:"bytes,3,rep,name=unreachable,proto3" json:"unreachable,omitempty"` +} + +func (x *ListConnectionsResponse) Reset() { + *x = ListConnectionsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListConnectionsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListConnectionsResponse) ProtoMessage() {} + +func (x *ListConnectionsResponse) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListConnectionsResponse.ProtoReflect.Descriptor instead. +func (*ListConnectionsResponse) Descriptor() ([]byte, []int) { + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{11} +} + +func (x *ListConnectionsResponse) GetConnections() []*Connection { + if x != nil { + return x.Connections + } + return nil +} + +func (x *ListConnectionsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken + } + return "" +} + +func (x *ListConnectionsResponse) GetUnreachable() []string { + if x != nil { + return x.Unreachable + } + return nil +} + +// Message for getting a Connection +type GetConnectionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Name of the resource + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetConnectionRequest) Reset() { + *x = GetConnectionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetConnectionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetConnectionRequest) ProtoMessage() {} + +func (x *GetConnectionRequest) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetConnectionRequest.ProtoReflect.Descriptor instead. +func (*GetConnectionRequest) Descriptor() ([]byte, []int) { + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{12} +} + +func (x *GetConnectionRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// Message for creating a Connection +type CreateConnectionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Required. Value for parent. + Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // Required. Id of the requesting object + // If auto-generating Id server-side, remove this field and + // connection_id from the method_signature of Create RPC + ConnectionId string `protobuf:"bytes,2,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty"` + // Required. The resource being created + Connection *Connection `protobuf:"bytes,3,opt,name=connection,proto3" json:"connection,omitempty"` + // Optional. An optional request ID to identify requests. Specify a unique + // request ID so that if you must retry your request, the server will know to + // ignore the request if it has already been completed. The server will + // guarantee that for at least 60 minutes since the first request. + // // For example, consider a situation where you make an initial request and the // request times out. If you make the request again with the same request // ID, the server can check if original operation with the same request ID @@ -838,7 +1387,7 @@ type CreateConnectionRequest struct { func (x *CreateConnectionRequest) Reset() { *x = CreateConnectionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[7] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -851,7 +1400,7 @@ func (x *CreateConnectionRequest) String() string { func (*CreateConnectionRequest) ProtoMessage() {} func (x *CreateConnectionRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[7] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -864,7 +1413,7 @@ func (x *CreateConnectionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateConnectionRequest.ProtoReflect.Descriptor instead. func (*CreateConnectionRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{7} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{13} } func (x *CreateConnectionRequest) GetParent() string { @@ -943,7 +1492,7 @@ type UpdateConnectionRequest struct { func (x *UpdateConnectionRequest) Reset() { *x = UpdateConnectionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[8] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -956,7 +1505,7 @@ func (x *UpdateConnectionRequest) String() string { func (*UpdateConnectionRequest) ProtoMessage() {} func (x *UpdateConnectionRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[8] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -969,7 +1518,7 @@ func (x *UpdateConnectionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateConnectionRequest.ProtoReflect.Descriptor instead. func (*UpdateConnectionRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{8} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{14} } func (x *UpdateConnectionRequest) GetUpdateMask() *fieldmaskpb.FieldMask { @@ -1040,7 +1589,7 @@ type DeleteConnectionRequest struct { func (x *DeleteConnectionRequest) Reset() { *x = DeleteConnectionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[9] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1053,7 +1602,7 @@ func (x *DeleteConnectionRequest) String() string { func (*DeleteConnectionRequest) ProtoMessage() {} func (x *DeleteConnectionRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[9] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1066,7 +1615,7 @@ func (x *DeleteConnectionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteConnectionRequest.ProtoReflect.Descriptor instead. func (*DeleteConnectionRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{9} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{15} } func (x *DeleteConnectionRequest) GetName() string { @@ -1115,9 +1664,10 @@ type OperationMetadata struct { StatusMessage string `protobuf:"bytes,5,opt,name=status_message,json=statusMessage,proto3" json:"status_message,omitempty"` // Output only. Identifies whether the user has requested cancellation // of the operation. Operations that have been cancelled successfully - // have [Operation.error][] value with a - // [google.rpc.Status.code][google.rpc.Status.code] of 1, corresponding to - // `Code.CANCELLED`. + // have + // [google.longrunning.Operation.error][google.longrunning.Operation.error] + // value with a [google.rpc.Status.code][google.rpc.Status.code] of 1, + // corresponding to `Code.CANCELLED`. RequestedCancellation bool `protobuf:"varint,6,opt,name=requested_cancellation,json=requestedCancellation,proto3" json:"requested_cancellation,omitempty"` // Output only. API version used to start the operation. ApiVersion string `protobuf:"bytes,7,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"` @@ -1126,7 +1676,7 @@ type OperationMetadata struct { func (x *OperationMetadata) Reset() { *x = OperationMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[10] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1139,7 +1689,7 @@ func (x *OperationMetadata) String() string { func (*OperationMetadata) ProtoMessage() {} func (x *OperationMetadata) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[10] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1152,7 +1702,7 @@ func (x *OperationMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use OperationMetadata.ProtoReflect.Descriptor instead. func (*OperationMetadata) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{10} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{16} } func (x *OperationMetadata) GetCreateTime() *timestamppb.Timestamp { @@ -1235,12 +1785,14 @@ type GitRepositoryLink struct { // Output only. A system-assigned unique identifier for a the // GitRepositoryLink. Uid string `protobuf:"bytes,10,opt,name=uid,proto3" json:"uid,omitempty"` + // Output only. External ID of the webhook created for the repository. + WebhookId string `protobuf:"bytes,11,opt,name=webhook_id,json=webhookId,proto3" json:"webhook_id,omitempty"` } func (x *GitRepositoryLink) Reset() { *x = GitRepositoryLink{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[11] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1253,7 +1805,7 @@ func (x *GitRepositoryLink) String() string { func (*GitRepositoryLink) ProtoMessage() {} func (x *GitRepositoryLink) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[11] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1266,7 +1818,7 @@ func (x *GitRepositoryLink) ProtoReflect() protoreflect.Message { // Deprecated: Use GitRepositoryLink.ProtoReflect.Descriptor instead. func (*GitRepositoryLink) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{11} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{17} } func (x *GitRepositoryLink) GetName() string { @@ -1339,6 +1891,13 @@ func (x *GitRepositoryLink) GetUid() string { return "" } +func (x *GitRepositoryLink) GetWebhookId() string { + if x != nil { + return x.WebhookId + } + return "" +} + // Message for creating a GitRepositoryLink type CreateGitRepositoryLinkRequest struct { state protoimpl.MessageState @@ -1375,7 +1934,7 @@ type CreateGitRepositoryLinkRequest struct { func (x *CreateGitRepositoryLinkRequest) Reset() { *x = CreateGitRepositoryLinkRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[12] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1388,7 +1947,7 @@ func (x *CreateGitRepositoryLinkRequest) String() string { func (*CreateGitRepositoryLinkRequest) ProtoMessage() {} func (x *CreateGitRepositoryLinkRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[12] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1401,7 +1960,7 @@ func (x *CreateGitRepositoryLinkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateGitRepositoryLinkRequest.ProtoReflect.Descriptor instead. func (*CreateGitRepositoryLinkRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{12} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{18} } func (x *CreateGitRepositoryLinkRequest) GetParent() string { @@ -1472,7 +2031,7 @@ type DeleteGitRepositoryLinkRequest struct { func (x *DeleteGitRepositoryLinkRequest) Reset() { *x = DeleteGitRepositoryLinkRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[13] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1485,7 +2044,7 @@ func (x *DeleteGitRepositoryLinkRequest) String() string { func (*DeleteGitRepositoryLinkRequest) ProtoMessage() {} func (x *DeleteGitRepositoryLinkRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[13] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1498,7 +2057,7 @@ func (x *DeleteGitRepositoryLinkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteGitRepositoryLinkRequest.ProtoReflect.Descriptor instead. func (*DeleteGitRepositoryLinkRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{13} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{19} } func (x *DeleteGitRepositoryLinkRequest) GetName() string { @@ -1551,7 +2110,7 @@ type ListGitRepositoryLinksRequest struct { func (x *ListGitRepositoryLinksRequest) Reset() { *x = ListGitRepositoryLinksRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[14] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1564,7 +2123,7 @@ func (x *ListGitRepositoryLinksRequest) String() string { func (*ListGitRepositoryLinksRequest) ProtoMessage() {} func (x *ListGitRepositoryLinksRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[14] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1577,7 +2136,7 @@ func (x *ListGitRepositoryLinksRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListGitRepositoryLinksRequest.ProtoReflect.Descriptor instead. func (*ListGitRepositoryLinksRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{14} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{20} } func (x *ListGitRepositoryLinksRequest) GetParent() string { @@ -1632,7 +2191,7 @@ type ListGitRepositoryLinksResponse struct { func (x *ListGitRepositoryLinksResponse) Reset() { *x = ListGitRepositoryLinksResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[15] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1645,7 +2204,7 @@ func (x *ListGitRepositoryLinksResponse) String() string { func (*ListGitRepositoryLinksResponse) ProtoMessage() {} func (x *ListGitRepositoryLinksResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[15] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1658,7 +2217,7 @@ func (x *ListGitRepositoryLinksResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListGitRepositoryLinksResponse.ProtoReflect.Descriptor instead. func (*ListGitRepositoryLinksResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{15} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{21} } func (x *ListGitRepositoryLinksResponse) GetGitRepositoryLinks() []*GitRepositoryLink { @@ -1695,7 +2254,7 @@ type GetGitRepositoryLinkRequest struct { func (x *GetGitRepositoryLinkRequest) Reset() { *x = GetGitRepositoryLinkRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[16] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1708,7 +2267,7 @@ func (x *GetGitRepositoryLinkRequest) String() string { func (*GetGitRepositoryLinkRequest) ProtoMessage() {} func (x *GetGitRepositoryLinkRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[16] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1721,7 +2280,7 @@ func (x *GetGitRepositoryLinkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGitRepositoryLinkRequest.ProtoReflect.Descriptor instead. func (*GetGitRepositoryLinkRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{16} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{22} } func (x *GetGitRepositoryLinkRequest) GetName() string { @@ -1745,7 +2304,7 @@ type FetchReadWriteTokenRequest struct { func (x *FetchReadWriteTokenRequest) Reset() { *x = FetchReadWriteTokenRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[17] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1758,7 +2317,7 @@ func (x *FetchReadWriteTokenRequest) String() string { func (*FetchReadWriteTokenRequest) ProtoMessage() {} func (x *FetchReadWriteTokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[17] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1771,7 +2330,7 @@ func (x *FetchReadWriteTokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchReadWriteTokenRequest.ProtoReflect.Descriptor instead. func (*FetchReadWriteTokenRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{17} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{23} } func (x *FetchReadWriteTokenRequest) GetGitRepositoryLink() string { @@ -1795,7 +2354,7 @@ type FetchReadTokenRequest struct { func (x *FetchReadTokenRequest) Reset() { *x = FetchReadTokenRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[18] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1808,7 +2367,7 @@ func (x *FetchReadTokenRequest) String() string { func (*FetchReadTokenRequest) ProtoMessage() {} func (x *FetchReadTokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[18] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1821,7 +2380,7 @@ func (x *FetchReadTokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchReadTokenRequest.ProtoReflect.Descriptor instead. func (*FetchReadTokenRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{18} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{24} } func (x *FetchReadTokenRequest) GetGitRepositoryLink() string { @@ -1850,7 +2409,7 @@ type FetchReadTokenResponse struct { func (x *FetchReadTokenResponse) Reset() { *x = FetchReadTokenResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[19] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1863,7 +2422,7 @@ func (x *FetchReadTokenResponse) String() string { func (*FetchReadTokenResponse) ProtoMessage() {} func (x *FetchReadTokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[19] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1876,7 +2435,7 @@ func (x *FetchReadTokenResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchReadTokenResponse.ProtoReflect.Descriptor instead. func (*FetchReadTokenResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{19} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{25} } func (x *FetchReadTokenResponse) GetToken() string { @@ -1919,7 +2478,7 @@ type FetchReadWriteTokenResponse struct { func (x *FetchReadWriteTokenResponse) Reset() { *x = FetchReadWriteTokenResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[20] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1932,7 +2491,7 @@ func (x *FetchReadWriteTokenResponse) String() string { func (*FetchReadWriteTokenResponse) ProtoMessage() {} func (x *FetchReadWriteTokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[20] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1945,7 +2504,7 @@ func (x *FetchReadWriteTokenResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchReadWriteTokenResponse.ProtoReflect.Descriptor instead. func (*FetchReadWriteTokenResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{20} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{26} } func (x *FetchReadWriteTokenResponse) GetToken() string { @@ -1987,7 +2546,7 @@ type FetchLinkableGitRepositoriesRequest struct { func (x *FetchLinkableGitRepositoriesRequest) Reset() { *x = FetchLinkableGitRepositoriesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[21] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2000,7 +2559,7 @@ func (x *FetchLinkableGitRepositoriesRequest) String() string { func (*FetchLinkableGitRepositoriesRequest) ProtoMessage() {} func (x *FetchLinkableGitRepositoriesRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[21] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2013,7 +2572,7 @@ func (x *FetchLinkableGitRepositoriesRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use FetchLinkableGitRepositoriesRequest.ProtoReflect.Descriptor instead. func (*FetchLinkableGitRepositoriesRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{21} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{27} } func (x *FetchLinkableGitRepositoriesRequest) GetConnection() string { @@ -2052,7 +2611,7 @@ type FetchLinkableGitRepositoriesResponse struct { func (x *FetchLinkableGitRepositoriesResponse) Reset() { *x = FetchLinkableGitRepositoriesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[22] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2065,7 +2624,7 @@ func (x *FetchLinkableGitRepositoriesResponse) String() string { func (*FetchLinkableGitRepositoriesResponse) ProtoMessage() {} func (x *FetchLinkableGitRepositoriesResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[22] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2078,7 +2637,7 @@ func (x *FetchLinkableGitRepositoriesResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use FetchLinkableGitRepositoriesResponse.ProtoReflect.Descriptor instead. func (*FetchLinkableGitRepositoriesResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{22} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{28} } func (x *FetchLinkableGitRepositoriesResponse) GetLinkableGitRepositories() []*LinkableGitRepository { @@ -2109,7 +2668,7 @@ type LinkableGitRepository struct { func (x *LinkableGitRepository) Reset() { *x = LinkableGitRepository{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[23] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2122,7 +2681,7 @@ func (x *LinkableGitRepository) String() string { func (*LinkableGitRepository) ProtoMessage() {} func (x *LinkableGitRepository) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[23] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2135,7 +2694,7 @@ func (x *LinkableGitRepository) ProtoReflect() protoreflect.Message { // Deprecated: Use LinkableGitRepository.ProtoReflect.Descriptor instead. func (*LinkableGitRepository) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{23} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{29} } func (x *LinkableGitRepository) GetCloneUri() string { @@ -2159,7 +2718,7 @@ type FetchGitHubInstallationsRequest struct { func (x *FetchGitHubInstallationsRequest) Reset() { *x = FetchGitHubInstallationsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[24] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2172,7 +2731,7 @@ func (x *FetchGitHubInstallationsRequest) String() string { func (*FetchGitHubInstallationsRequest) ProtoMessage() {} func (x *FetchGitHubInstallationsRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[24] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2185,7 +2744,7 @@ func (x *FetchGitHubInstallationsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchGitHubInstallationsRequest.ProtoReflect.Descriptor instead. func (*FetchGitHubInstallationsRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{24} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{30} } func (x *FetchGitHubInstallationsRequest) GetConnection() string { @@ -2209,7 +2768,7 @@ type FetchGitHubInstallationsResponse struct { func (x *FetchGitHubInstallationsResponse) Reset() { *x = FetchGitHubInstallationsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[25] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2222,7 +2781,7 @@ func (x *FetchGitHubInstallationsResponse) String() string { func (*FetchGitHubInstallationsResponse) ProtoMessage() {} func (x *FetchGitHubInstallationsResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[25] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2235,7 +2794,7 @@ func (x *FetchGitHubInstallationsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchGitHubInstallationsResponse.ProtoReflect.Descriptor instead. func (*FetchGitHubInstallationsResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{25} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{31} } func (x *FetchGitHubInstallationsResponse) GetInstallations() []*FetchGitHubInstallationsResponse_Installation { @@ -2265,7 +2824,7 @@ type FetchGitRefsRequest struct { func (x *FetchGitRefsRequest) Reset() { *x = FetchGitRefsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[26] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2278,7 +2837,7 @@ func (x *FetchGitRefsRequest) String() string { func (*FetchGitRefsRequest) ProtoMessage() {} func (x *FetchGitRefsRequest) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[26] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2291,7 +2850,7 @@ func (x *FetchGitRefsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchGitRefsRequest.ProtoReflect.Descriptor instead. func (*FetchGitRefsRequest) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{26} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{32} } func (x *FetchGitRefsRequest) GetGitRepositoryLink() string { @@ -2337,7 +2896,7 @@ type FetchGitRefsResponse struct { func (x *FetchGitRefsResponse) Reset() { *x = FetchGitRefsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[27] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2350,7 +2909,7 @@ func (x *FetchGitRefsResponse) String() string { func (*FetchGitRefsResponse) ProtoMessage() {} func (x *FetchGitRefsResponse) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[27] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2363,7 +2922,7 @@ func (x *FetchGitRefsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use FetchGitRefsResponse.ProtoReflect.Descriptor instead. func (*FetchGitRefsResponse) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{27} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{33} } func (x *FetchGitRefsResponse) GetRefNames() []string { @@ -2397,7 +2956,7 @@ type FetchGitHubInstallationsResponse_Installation struct { func (x *FetchGitHubInstallationsResponse_Installation) Reset() { *x = FetchGitHubInstallationsResponse_Installation{} if protoimpl.UnsafeEnabled { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[32] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2410,7 +2969,7 @@ func (x *FetchGitHubInstallationsResponse_Installation) String() string { func (*FetchGitHubInstallationsResponse_Installation) ProtoMessage() {} func (x *FetchGitHubInstallationsResponse_Installation) ProtoReflect() protoreflect.Message { - mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[32] + mi := &file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2423,7 +2982,7 @@ func (x *FetchGitHubInstallationsResponse_Installation) ProtoReflect() protorefl // Deprecated: Use FetchGitHubInstallationsResponse_Installation.ProtoReflect.Descriptor instead. func (*FetchGitHubInstallationsResponse_Installation) Descriptor() ([]byte, []int) { - return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{25, 0} + return file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP(), []int{31, 0} } func (x *FetchGitHubInstallationsResponse_Installation) GetId() int64 { @@ -2473,725 +3032,895 @@ var file_google_cloud_developerconnect_v1_developer_connect_proto_rawDesc = []by 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0x89, 0x08, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x6f, 0x22, 0xb0, 0x0b, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x0d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0c, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x55, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x67, 0x0a, - 0x12, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x74, 0x0a, 0x18, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x5f, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, - 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, - 0xe0, 0x41, 0x03, 0x52, 0x11, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x6e, - 0x63, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x64, - 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x1d, 0x0a, - 0x03, 0x75, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xe0, 0x41, 0x03, 0xe2, - 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, 0x03, 0x75, 0x69, 0x64, 0x1a, 0x39, 0x0a, 0x0b, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x8e, 0x01, 0xea, 0x41, 0x8a, 0x01, 0x0a, 0x2a, - 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x7b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2a, 0x0b, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x32, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xa3, 0x02, - 0x0a, 0x11, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x54, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x69, 0x22, 0x75, 0x0a, 0x05, - 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, - 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x41, - 0x50, 0x50, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, - 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4f, 0x41, 0x55, 0x54, 0x48, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, - 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x5f, - 0x41, 0x50, 0x50, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, - 0x45, 0x10, 0x0a, 0x22, 0x90, 0x03, 0x0a, 0x0c, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5f, 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x5f, 0x61, - 0x70, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, - 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x48, - 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x41, - 0x70, 0x70, 0x42, 0x06, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0x52, 0x09, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x41, 0x70, 0x70, 0x12, 0x6b, 0x0a, 0x15, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x7a, 0x65, 0x72, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, + 0x48, 0x75, 0x62, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x16, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x45, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x55, 0x0a, + 0x0d, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x14, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x13, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x11, 0x61, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x69, 0x22, 0x4d, 0x0a, 0x09, 0x47, 0x69, 0x74, 0x48, 0x75, - 0x62, 0x41, 0x70, 0x70, 0x12, 0x1b, 0x0a, 0x17, 0x47, 0x49, 0x54, 0x5f, 0x48, 0x55, 0x42, 0x5f, - 0x41, 0x50, 0x50, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x15, 0x0a, 0x11, 0x44, 0x45, 0x56, 0x45, 0x4c, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x43, - 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x49, 0x52, 0x45, - 0x42, 0x41, 0x53, 0x45, 0x10, 0x02, 0x22, 0xa3, 0x01, 0x0a, 0x0f, 0x4f, 0x41, 0x75, 0x74, 0x68, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x6f, 0x0a, 0x1a, 0x6f, 0x61, - 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, - 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x17, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, - 0x63, 0x72, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xe7, 0x01, 0x0a, - 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2c, 0x12, - 0x2a, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, - 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, - 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0xb3, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, - 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, - 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x5e, 0x0a, 0x14, - 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x64, 0x65, 0x76, 0x65, - 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x02, 0x0a, - 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2c, - 0x12, 0x2a, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x51, - 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xe0, 0x41, 0x01, 0xe2, 0x8c, 0xcf, 0xd7, 0x08, 0x02, - 0x08, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, - 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0xae, 0x02, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, - 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x51, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x4c, 0x61, 0x62, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0c, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x74, 0x0a, 0x18, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x5f, 0x65, + 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x4c, 0x61, 0x62, + 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x48, 0x00, 0x52, 0x16, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x55, 0x0a, 0x06, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xe0, 0x41, - 0x01, 0xe2, 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x28, - 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0xd0, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x64, 0x65, 0x76, 0x65, - 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0a, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x0b, 0xe0, 0x41, 0x01, 0xe2, 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, 0x09, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, - 0x6c, 0x79, 0x12, 0x17, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x22, 0xd5, 0x02, 0x0a, 0x11, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x1b, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x04, - 0x76, 0x65, 0x72, 0x62, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, - 0x04, 0x76, 0x65, 0x72, 0x62, 0x12, 0x2a, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x3a, 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, - 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, - 0x64, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, - 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x22, 0x88, 0x07, 0x0a, 0x11, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x6e, - 0x65, 0x55, 0x72, 0x69, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x5c, 0x0a, 0x06, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x12, 0x67, 0x0a, 0x12, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, + 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x11, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x64, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0b, 0x72, 0x65, + 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x6e, + 0x67, 0x12, 0x64, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, + 0x12, 0x1d, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xe0, + 0x41, 0x03, 0xe2, 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, + 0x62, 0x0a, 0x11, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, + 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, + 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x0f, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, + 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x8e, + 0x01, 0xea, 0x41, 0x8a, 0x01, 0x0a, 0x2a, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x40, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x7d, 0x2a, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x32, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x01, 0x01, 0x42, + 0x13, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x22, 0x61, 0x0a, 0x0f, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, + 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4e, 0x0a, 0x0d, 0x6b, 0x65, 0x79, 0x5f, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, + 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6b, 0x6d, 0x73, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x52, 0x0c, 0x6b, 0x65, 0x79, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xa3, 0x02, 0x0a, 0x11, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x54, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, + 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x69, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x55, 0x72, 0x69, 0x22, 0x75, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, + 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, + 0x47, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x10, 0x01, 0x12, 0x16, + 0x0a, 0x12, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4f, + 0x41, 0x55, 0x54, 0x48, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, + 0x47, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x5f, 0x41, 0x50, 0x50, 0x10, 0x03, 0x12, + 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x0a, 0x22, 0x90, 0x03, + 0x0a, 0x0c, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5f, + 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x5f, 0x61, 0x70, 0x70, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x41, 0x70, 0x70, 0x42, 0x06, 0xe0, 0x41, + 0x02, 0xe0, 0x41, 0x05, 0x52, 0x09, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x41, 0x70, 0x70, 0x12, + 0x6b, 0x0a, 0x15, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x63, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, + 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x14, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x65, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x13, + 0x61, 0x70, 0x70, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x11, + 0x61, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x2e, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, + 0x52, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x72, + 0x69, 0x22, 0x4d, 0x0a, 0x09, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x41, 0x70, 0x70, 0x12, 0x1b, + 0x0a, 0x17, 0x47, 0x49, 0x54, 0x5f, 0x48, 0x55, 0x42, 0x5f, 0x41, 0x50, 0x50, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x44, + 0x45, 0x56, 0x45, 0x4c, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, + 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x49, 0x52, 0x45, 0x42, 0x41, 0x53, 0x45, 0x10, 0x02, + 0x22, 0x99, 0x05, 0x0a, 0x16, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x45, 0x6e, 0x74, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1e, 0x0a, 0x08, 0x68, + 0x6f, 0x73, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x55, 0x72, 0x69, 0x12, 0x1a, 0x0a, 0x06, 0x61, + 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x70, 0x70, 0x5f, 0x73, + 0x6c, 0x75, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, + 0x61, 0x70, 0x70, 0x53, 0x6c, 0x75, 0x67, 0x12, 0x6f, 0x0a, 0x1a, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x01, + 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x17, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x75, 0x0a, 0x1d, 0x77, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x32, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x1a, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x53, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x33, 0x0a, 0x13, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x11, 0x61, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x55, 0x72, 0x69, 0x12, 0x77, 0x0a, 0x18, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x16, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, + 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x73, 0x6c, + 0x5f, 0x63, 0x61, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x73, 0x73, 0x6c, 0x43, + 0x61, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x22, 0x63, 0x0a, 0x16, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x49, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2f, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x29, 0x0a, + 0x27, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x79, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x22, 0xa3, 0x01, 0x0a, 0x0f, 0x4f, 0x41, 0x75, 0x74, 0x68, 0x43, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x6f, 0x0a, 0x1a, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x2c, 0x0a, 0x2a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x6f, + 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, 0x75, + 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xe9, 0x02, 0x0a, 0x0c, 0x47, 0x69, 0x74, 0x4c, + 0x61, 0x62, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x78, 0x0a, 0x1d, 0x77, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x35, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x1a, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x73, 0x0a, 0x1a, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x18, 0x72, + 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x72, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x6a, 0x0a, 0x15, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x14, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x22, 0xa0, 0x01, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x6d, 0x0a, 0x19, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x2c, 0x0a, 0x2a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x75, + 0x73, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xeb, 0x04, 0x0a, 0x16, 0x47, 0x69, 0x74, 0x4c, 0x61, + 0x62, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x1e, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x68, 0x6f, 0x73, 0x74, 0x55, 0x72, + 0x69, 0x12, 0x78, 0x0a, 0x1d, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x73, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x35, 0xe0, 0x41, 0x02, 0xe0, 0x41, 0x05, + 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x1a, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x53, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x73, 0x0a, 0x1a, 0x72, + 0x65, 0x61, 0x64, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x63, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, + 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x18, 0x72, 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x12, 0x6a, 0x0a, 0x15, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x72, 0x5f, 0x63, + 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, + 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x14, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x65, 0x72, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x77, 0x0a, 0x18, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, + 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x16, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x31, 0x0a, 0x12, 0x73, 0x73, 0x6c, 0x5f, 0x63, 0x61, 0x5f, + 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x73, 0x73, 0x6c, 0x43, 0x61, 0x43, 0x65, 0x72, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xe7, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x4a, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2c, 0x12, 0x2a, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, + 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, + 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1e, + 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0xb3, + 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0b, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, + 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, + 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, + 0x61, 0x62, 0x6c, 0x65, 0x22, 0x5e, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, + 0x41, 0x2c, 0x0a, 0x2a, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x02, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x4a, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2c, 0x12, 0x2a, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, + 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0d, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x51, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, - 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, - 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x2e, - 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x65, 0x74, 0x61, - 0x67, 0x12, 0x25, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x6e, 0x67, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x72, 0x65, 0x63, - 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x6b, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, - 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, - 0x6e, 0x6b, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0b, 0xe0, 0x41, 0x03, 0xe2, 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, - 0x03, 0x75, 0x69, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0x3e, 0x0a, 0x10, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, - 0xcc, 0x01, 0xea, 0x41, 0xc8, 0x01, 0x0a, 0x31, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, - 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x69, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x52, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x2f, 0x7b, - 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, - 0x69, 0x6e, 0x6b, 0x7d, 0x2a, 0x12, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x32, 0x11, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x01, 0x01, 0x22, 0xed, - 0x02, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x51, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x39, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x33, 0x12, 0x31, 0x64, 0x65, 0x76, 0x65, 0x6c, - 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x69, 0x74, 0x52, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x12, 0x68, 0x0a, 0x13, 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xe0, + 0x41, 0x01, 0xe2, 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, + 0xae, 0x02, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x51, 0x0a, + 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x11, 0x67, 0x69, 0x74, - 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x38, - 0x0a, 0x16, 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x13, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xe0, 0x41, - 0x01, 0xe2, 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, - 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, - 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0xde, - 0x01, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x4d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x39, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x33, 0x0a, 0x31, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, - 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xe0, 0x41, 0x01, 0xe2, 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0d, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x17, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x22, - 0xf5, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x51, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x39, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x33, 0x12, 0x31, 0x64, 0x65, 0x76, 0x65, 0x6c, - 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x69, 0x74, 0x52, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, - 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x22, 0xd1, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, + 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, + 0x22, 0xd0, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, + 0x41, 0x2c, 0x0a, 0x2a, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xe0, 0x41, 0x01, 0xe2, 0x8c, 0xcf, + 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, + 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, + 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x17, 0x0a, 0x04, 0x65, 0x74, + 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x65, + 0x74, 0x61, 0x67, 0x22, 0xd5, 0x02, 0x0a, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, + 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, + 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x06, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x76, 0x65, 0x72, 0x62, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x04, 0x76, 0x65, 0x72, 0x62, 0x12, 0x2a, 0x0a, + 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x16, 0x72, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x15, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x0a, 0x61, 0x70, 0x69, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xac, 0x07, 0x0a, 0x11, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, - 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x14, 0x67, 0x69, - 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6e, - 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, - 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x52, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x12, 0x67, - 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, - 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, - 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x72, - 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, - 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x6c, 0x0a, 0x1b, 0x47, - 0x65, 0x74, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, - 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x33, - 0x0a, 0x31, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, - 0x69, 0x6e, 0x6b, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x87, 0x01, 0x0a, 0x1a, 0x46, 0x65, - 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x69, 0x0a, 0x13, 0x67, 0x69, 0x74, 0x5f, - 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x33, 0x0a, 0x31, 0x64, - 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, - 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, - 0x52, 0x11, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, - 0x69, 0x6e, 0x6b, 0x22, 0x82, 0x01, 0x0a, 0x15, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, - 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x69, 0x0a, - 0x13, 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, - 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xe0, 0x41, 0x02, 0xfa, - 0x41, 0x33, 0x0a, 0x31, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, + 0x6b, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x63, 0x6c, + 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x72, 0x69, 0x12, 0x40, 0x0a, 0x0b, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, + 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, + 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x40, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x5c, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x12, 0x17, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x12, 0x25, 0x0a, 0x0b, 0x72, 0x65, 0x63, + 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x6e, 0x67, + 0x12, 0x6b, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x2e, 0x41, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, + 0x03, 0x75, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xe0, 0x41, 0x03, 0xe2, + 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0a, + 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x49, 0x64, + 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x41, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0xcc, 0x01, 0xea, 0x41, + 0xc8, 0x01, 0x0a, 0x31, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x11, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x96, 0x01, 0x0a, 0x16, 0x46, 0x65, 0x74, - 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x43, 0x0a, 0x0f, 0x65, 0x78, 0x70, - 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, - 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21, - 0x0a, 0x0c, 0x67, 0x69, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x1b, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x43, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x65, 0x78, - 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, - 0x67, 0x69, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x67, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0xbf, 0x01, 0x0a, 0x23, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4c, 0x69, 0x6e, 0x6b, 0x61, 0x62, 0x6c, - 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x52, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, - 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x09, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, - 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, - 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x22, 0xc3, 0x01, 0x0a, 0x24, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4c, 0x69, 0x6e, 0x6b, 0x61, - 0x62, 0x6c, 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x19, 0x6c, 0x69, - 0x6e, 0x6b, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, + 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x69, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x2f, 0x7b, 0x67, 0x69, 0x74, 0x5f, + 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x7d, + 0x2a, 0x12, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, + 0x69, 0x6e, 0x6b, 0x73, 0x32, 0x11, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x01, 0x01, 0x22, 0xed, 0x02, 0x0a, 0x1e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, + 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xe0, + 0x41, 0x02, 0xfa, 0x41, 0x33, 0x12, 0x31, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x12, 0x68, 0x0a, 0x13, 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x17, 0x6c, 0x69, 0x6e, 0x6b, 0x61, 0x62, 0x6c, 0x65, - 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, - 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, - 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x34, 0x0a, 0x15, 0x4c, 0x69, 0x6e, 0x6b, 0x61, - 0x62, 0x6c, 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x72, 0x69, 0x22, 0x75, 0x0a, - 0x1f, 0x46, 0x65, 0x74, 0x63, 0x68, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x49, 0x6e, 0x73, 0x74, - 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x52, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x64, 0x65, + 0x2e, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, + 0x6e, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x11, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x38, 0x0a, 0x16, 0x67, 0x69, + 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6e, + 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x13, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, + 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xe0, 0x41, 0x01, 0xe2, 0x8c, 0xcf, + 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, + 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, + 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0xde, 0x01, 0x0a, 0x1e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xe0, 0x41, 0x02, + 0xfa, 0x41, 0x33, 0x0a, 0x31, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0a, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x0b, 0xe0, 0x41, 0x01, 0xe2, 0x8c, 0xcf, 0xd7, 0x08, 0x02, 0x08, 0x01, 0x52, 0x09, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x6e, + 0x6c, 0x79, 0x12, 0x17, 0x0a, 0x04, 0x65, 0x74, 0x61, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x65, 0x74, 0x61, 0x67, 0x22, 0xf5, 0x01, 0x0a, 0x1d, + 0x4c, 0x69, 0x73, 0x74, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, + 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xe0, + 0x41, 0x02, 0xfa, 0x41, 0x33, 0x12, 0x31, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x42, 0x79, 0x22, 0xd1, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x69, 0x74, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x14, 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x12, 0x67, 0x69, 0x74, 0x52, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x26, 0x0a, + 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x72, 0x65, 0x61, 0x63, 0x68, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x75, 0x6e, 0x72, 0x65, + 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x6c, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x47, 0x69, + 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x33, 0x0a, 0x31, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe1, 0x01, 0x0a, 0x20, 0x46, 0x65, 0x74, 0x63, 0x68, 0x47, 0x69, - 0x74, 0x48, 0x75, 0x62, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x0d, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x4f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x69, + 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x87, 0x01, 0x0a, 0x1a, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, + 0x65, 0x61, 0x64, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x69, 0x0a, 0x13, 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x39, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x33, 0x0a, 0x31, 0x64, 0x65, 0x76, 0x65, 0x6c, + 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x69, 0x74, 0x52, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x11, 0x67, 0x69, + 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x22, + 0x82, 0x01, 0x0a, 0x15, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x69, 0x0a, 0x13, 0x67, 0x69, 0x74, + 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x33, 0x0a, 0x31, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x1a, 0x46, 0x0a, 0x0c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xdf, 0x02, 0x0a, 0x13, 0x46, 0x65, 0x74, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, + 0x6b, 0x52, 0x11, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x96, 0x01, 0x0a, 0x16, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, + 0x61, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x43, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x67, 0x69, + 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x67, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9b, 0x01, + 0x0a, 0x1b, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x12, 0x43, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x67, 0x69, 0x74, 0x5f, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x67, 0x69, 0x74, 0x55, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xbf, 0x01, 0x0a, 0x23, + 0x46, 0x65, 0x74, 0x63, 0x68, 0x4c, 0x69, 0x6e, 0x6b, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x69, 0x74, + 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x52, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2c, 0x0a, + 0x2a, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, + 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xc3, 0x01, + 0x0a, 0x24, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4c, 0x69, 0x6e, 0x6b, 0x61, 0x62, 0x6c, 0x65, 0x47, + 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x19, 0x6c, 0x69, 0x6e, 0x6b, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, + 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, + 0x6b, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x52, 0x17, 0x6c, 0x69, 0x6e, 0x6b, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x69, 0x74, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, + 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x22, 0x34, 0x0a, 0x15, 0x4c, 0x69, 0x6e, 0x6b, 0x61, 0x62, 0x6c, 0x65, 0x47, + 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1b, 0x0a, 0x09, + 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x63, 0x6c, 0x6f, 0x6e, 0x65, 0x55, 0x72, 0x69, 0x22, 0x75, 0x0a, 0x1f, 0x46, 0x65, 0x74, + 0x63, 0x68, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x52, 0x0a, 0x0a, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x32, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2c, 0x0a, 0x2a, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, + 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0xe1, 0x01, 0x0a, 0x20, 0x46, 0x65, 0x74, 0x63, 0x68, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x75, 0x0a, 0x0d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4f, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, + 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x46, 0x65, 0x74, 0x63, 0x68, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x46, 0x0a, 0x0c, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x22, 0xdf, 0x02, 0x0a, 0x13, 0x46, 0x65, 0x74, 0x63, 0x68, 0x47, 0x69, + 0x74, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x69, 0x0a, 0x13, + 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, + 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x33, 0x0a, 0x31, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x11, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x5d, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, + 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x47, 0x69, 0x74, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x69, 0x0a, 0x13, 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x39, 0xe0, - 0x41, 0x02, 0xfa, 0x41, 0x33, 0x0a, 0x31, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x11, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x5d, 0x0a, 0x08, 0x72, - 0x65, 0x66, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, + 0x2e, 0x52, 0x65, 0x66, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x72, + 0x65, 0x66, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x38, 0x0a, 0x07, + 0x52, 0x65, 0x66, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x52, 0x45, 0x46, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x41, 0x47, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x52, + 0x41, 0x4e, 0x43, 0x48, 0x10, 0x02, 0x22, 0x5b, 0x0a, 0x14, 0x46, 0x65, 0x74, 0x63, 0x68, 0x47, + 0x69, 0x74, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, + 0x0a, 0x09, 0x72, 0x65, 0x66, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x08, 0x72, 0x65, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, + 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x32, 0xa7, 0x1c, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, + 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0xc8, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, + 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x40, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0xb5, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x47, 0x69, 0x74, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x66, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x52, 0x07, 0x72, 0x65, 0x66, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, - 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, - 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x22, 0x38, 0x0a, 0x07, 0x52, 0x65, 0x66, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x52, - 0x45, 0x46, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x41, 0x47, 0x10, 0x01, 0x12, 0x0a, - 0x0a, 0x06, 0x42, 0x52, 0x41, 0x4e, 0x43, 0x48, 0x10, 0x02, 0x22, 0x5b, 0x0a, 0x14, 0x46, 0x65, - 0x74, 0x63, 0x68, 0x47, 0x69, 0x74, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, - 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, - 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x32, 0xa7, 0x1c, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x65, - 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0xc8, 0x01, 0x0a, - 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3e, 0xda, 0x41, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, + 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xf6, 0x01, 0x0a, 0x10, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, - 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xb5, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, + 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x87, 0x01, 0xca, 0x41, 0x1f, + 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x11, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, + 0x41, 0x1f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x2c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x3a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xf8, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, - 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x3e, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, - 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, + 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x89, 0x01, 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x16, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x3a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x32, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, - 0xf6, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0xd9, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, + 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, - 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x87, - 0x01, 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0xda, 0x41, 0x1f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x3a, 0x0a, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xf8, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, - 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x89, 0x01, 0xca, 0x41, 0x1f, 0x0a, 0x0a, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x16, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x3a, 0x0a, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x2a, 0x7d, 0x12, 0xd9, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, - 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, - 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x6b, 0xca, 0x41, 0x2a, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, - 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x2a, 0x2f, - 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, - 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, - 0xbb, 0x02, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x40, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, - 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, - 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbe, 0x01, 0xca, - 0x41, 0x26, 0x0a, 0x11, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x31, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x2c, 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x2c, 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x5b, 0x3a, 0x13, 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0x44, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x52, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0xfd, 0x01, - 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, - 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, - 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x80, 0x01, 0xca, 0x41, 0x2a, - 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x2a, 0x44, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, - 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xf2, 0x01, - 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, - 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6b, + 0xca, 0x41, 0x2a, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x2a, 0x2f, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, + 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xbb, 0x02, 0x0a, 0x17, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, + 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbe, 0x01, 0xca, 0x41, 0x26, 0x0a, 0x11, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, - 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, - 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, - 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x55, 0xda, 0x41, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x12, 0x44, 0x2f, 0x76, - 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, - 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, - 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, - 0x6b, 0x73, 0x12, 0xdf, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x3d, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, - 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, - 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, - 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, - 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x22, - 0x53, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x12, 0x44, - 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, - 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x67, + 0x6b, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x31, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x67, 0x69, + 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6e, + 0x6b, 0x2c, 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5b, 0x3a, 0x13, + 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, + 0x69, 0x6e, 0x6b, 0x22, 0x44, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0xfd, 0x01, 0x0a, 0x17, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, - 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x9d, 0x02, 0x0a, 0x13, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, - 0x61, 0x64, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x3c, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, - 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, - 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, - 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x88, 0x01, 0xda, 0x41, 0x13, 0x67, - 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, - 0x6e, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6c, 0x3a, 0x01, 0x2a, 0x22, 0x67, 0x2f, 0x76, 0x31, - 0x2f, 0x7b, 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x80, 0x01, 0xca, 0x41, 0x2a, 0x0a, 0x15, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x12, 0x11, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x46, 0x2a, 0x44, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x2a, 0x2f, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xf2, 0x01, 0x0a, 0x16, 0x4c, 0x69, + 0x73, 0x74, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, + 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x69, 0x74, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x69, 0x74, + 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x55, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x12, 0x44, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, + 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0xdf, + 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x69, + 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x53, 0xda, 0x41, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x12, 0x44, 0x2f, 0x76, 0x31, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x2f, 0x2a, 0x7d, - 0x3a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x89, 0x02, 0x0a, 0x0e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, - 0x61, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, - 0x52, 0x65, 0x61, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x83, 0x01, 0xda, 0x41, 0x13, - 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, - 0x69, 0x6e, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x67, 0x3a, 0x01, 0x2a, 0x22, 0x62, 0x2f, 0x76, - 0x31, 0x2f, 0x7b, 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x67, 0x69, 0x74, 0x52, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x2f, 0x2a, - 0x7d, 0x3a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x12, 0x96, 0x02, 0x0a, 0x1c, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4c, 0x69, 0x6e, 0x6b, 0x61, 0x62, - 0x6c, 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, - 0x73, 0x12, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4c, 0x69, 0x6e, 0x6b, 0x61, 0x62, - 0x6c, 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x12, 0x9d, 0x02, 0x0a, 0x13, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x57, 0x72, + 0x69, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, - 0x68, 0x4c, 0x69, 0x6e, 0x6b, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x67, 0xda, 0x41, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x54, 0x12, 0x52, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, - 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x66, 0x65, 0x74, - 0x63, 0x68, 0x4c, 0x69, 0x6e, 0x6b, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x86, 0x02, 0x0a, 0x18, 0x46, 0x65, - 0x74, 0x63, 0x68, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x68, 0x52, 0x65, 0x61, 0x64, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x47, - 0x69, 0x74, 0x48, 0x75, 0x62, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, - 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, - 0x63, 0x68, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, 0xda, - 0x41, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x50, 0x12, 0x4e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x47, - 0x69, 0x74, 0x48, 0x75, 0x62, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x87, 0x02, 0x0a, 0x0c, 0x46, 0x65, 0x74, 0x63, 0x68, 0x47, 0x69, 0x74, 0x52, - 0x65, 0x66, 0x73, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, + 0x65, 0x61, 0x64, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x88, 0x01, 0xda, 0x41, 0x13, 0x67, 0x69, 0x74, 0x5f, 0x72, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x6c, 0x3a, 0x01, 0x2a, 0x22, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x67, 0x69, + 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6e, + 0x6b, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x66, 0x65, 0x74, + 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x89, 0x02, 0x0a, 0x0e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x47, 0x69, 0x74, 0x52, - 0x65, 0x66, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, - 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, - 0x74, 0x63, 0x68, 0x47, 0x69, 0x74, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x87, 0x01, 0xda, 0x41, 0x1c, 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x2c, 0x72, 0x65, 0x66, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x62, 0x12, 0x60, 0x2f, 0x76, 0x31, 0x2f, - 0x7b, 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, - 0x6c, 0x69, 0x6e, 0x6b, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, - 0x66, 0x65, 0x74, 0x63, 0x68, 0x47, 0x69, 0x74, 0x52, 0x65, 0x66, 0x73, 0x1a, 0x53, 0xca, 0x41, - 0x1f, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, - 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, - 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x42, 0xfe, 0x02, 0xea, 0x41, 0x6b, 0x0a, 0x2a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x2f, - 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x7d, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x7d, 0x0a, 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, + 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x46, 0x65, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x83, 0x01, 0xda, 0x41, 0x13, 0x67, 0x69, 0x74, 0x5f, + 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x67, 0x3a, 0x01, 0x2a, 0x22, 0x62, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x67, + 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, + 0x6e, 0x6b, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x66, 0x65, + 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x96, 0x02, 0x0a, + 0x1c, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4c, 0x69, 0x6e, 0x6b, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x69, + 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x45, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, + 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4c, 0x69, 0x6e, 0x6b, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x69, + 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4c, 0x69, 0x6e, + 0x6b, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x67, 0xda, 0x41, + 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x54, 0x12, 0x52, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x4c, 0x69, + 0x6e, 0x6b, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x86, 0x02, 0x0a, 0x18, 0x46, 0x65, 0x74, 0x63, 0x68, 0x47, + 0x69, 0x74, 0x48, 0x75, 0x62, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x47, 0x69, 0x74, 0x48, 0x75, + 0x62, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x15, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, - 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, - 0x01, 0x5a, 0x50, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x64, 0x65, - 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x70, 0x62, - 0x3b, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x70, 0x62, 0xa2, 0x02, 0x10, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0xaa, 0x02, 0x20, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x20, 0x47, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, - 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x23, 0x47, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x44, 0x65, - 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x3a, 0x3a, - 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x47, 0x69, + 0x74, 0x48, 0x75, 0x62, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, 0xda, 0x41, 0x0a, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x50, 0x12, 0x4e, + 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x66, 0x65, 0x74, 0x63, 0x68, 0x47, 0x69, 0x74, 0x48, 0x75, + 0x62, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x87, + 0x02, 0x0a, 0x0c, 0x46, 0x65, 0x74, 0x63, 0x68, 0x47, 0x69, 0x74, 0x52, 0x65, 0x66, 0x73, 0x12, + 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, + 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x47, 0x69, 0x74, 0x52, 0x65, 0x66, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x47, + 0x69, 0x74, 0x52, 0x65, 0x66, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x87, + 0x01, 0xda, 0x41, 0x1c, 0x67, 0x69, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x2c, 0x72, 0x65, 0x66, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x62, 0x12, 0x60, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x67, 0x69, 0x74, + 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x67, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x66, 0x65, 0x74, 0x63, + 0x68, 0x47, 0x69, 0x74, 0x52, 0x65, 0x66, 0x73, 0x1a, 0x53, 0xca, 0x41, 0x1f, 0x64, 0x65, 0x76, + 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, + 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0xf8, 0x04, + 0xea, 0x41, 0x6b, 0x0a, 0x2a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x7d, 0x2f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x7d, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x73, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x7d, 0xea, 0x41, + 0x78, 0x0a, 0x21, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x6b, 0x6d, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x72, 0x79, 0x70, 0x74, + 0x6f, 0x4b, 0x65, 0x79, 0x12, 0x53, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6b, 0x65, + 0x79, 0x52, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x69, 0x6e, 0x67, + 0x7d, 0x2f, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x4b, 0x65, 0x79, 0x73, 0x2f, 0x7b, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x6f, 0x5f, 0x6b, 0x65, 0x79, 0x7d, 0xea, 0x41, 0x7c, 0x0a, 0x27, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x51, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x7d, 0x0a, 0x24, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x65, 0x76, 0x65, 0x6c, + 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x15, + 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x50, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x65, 0x76, + 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2f, 0x61, 0x70, + 0x69, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x70, 0x62, 0x3b, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x70, 0x62, 0xa2, 0x02, 0x10, 0x44, 0x65, 0x76, 0x65, + 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0xaa, 0x02, 0x20, 0x47, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x65, 0x76, 0x65, + 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x56, 0x31, 0xca, + 0x02, 0x20, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x44, + 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5c, + 0x56, 0x31, 0xea, 0x02, 0x23, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x3a, 0x3a, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x72, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3207,110 +3936,126 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_rawDescGZIP() } var file_google_cloud_developerconnect_v1_developer_connect_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes = make([]protoimpl.MessageInfo, 33) +var file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes = make([]protoimpl.MessageInfo, 39) var file_google_cloud_developerconnect_v1_developer_connect_proto_goTypes = []any{ (InstallationState_Stage)(0), // 0: google.cloud.developerconnect.v1.InstallationState.Stage (GitHubConfig_GitHubApp)(0), // 1: google.cloud.developerconnect.v1.GitHubConfig.GitHubApp (FetchGitRefsRequest_RefType)(0), // 2: google.cloud.developerconnect.v1.FetchGitRefsRequest.RefType (*Connection)(nil), // 3: google.cloud.developerconnect.v1.Connection - (*InstallationState)(nil), // 4: google.cloud.developerconnect.v1.InstallationState - (*GitHubConfig)(nil), // 5: google.cloud.developerconnect.v1.GitHubConfig - (*OAuthCredential)(nil), // 6: google.cloud.developerconnect.v1.OAuthCredential - (*ListConnectionsRequest)(nil), // 7: google.cloud.developerconnect.v1.ListConnectionsRequest - (*ListConnectionsResponse)(nil), // 8: google.cloud.developerconnect.v1.ListConnectionsResponse - (*GetConnectionRequest)(nil), // 9: google.cloud.developerconnect.v1.GetConnectionRequest - (*CreateConnectionRequest)(nil), // 10: google.cloud.developerconnect.v1.CreateConnectionRequest - (*UpdateConnectionRequest)(nil), // 11: google.cloud.developerconnect.v1.UpdateConnectionRequest - (*DeleteConnectionRequest)(nil), // 12: google.cloud.developerconnect.v1.DeleteConnectionRequest - (*OperationMetadata)(nil), // 13: google.cloud.developerconnect.v1.OperationMetadata - (*GitRepositoryLink)(nil), // 14: google.cloud.developerconnect.v1.GitRepositoryLink - (*CreateGitRepositoryLinkRequest)(nil), // 15: google.cloud.developerconnect.v1.CreateGitRepositoryLinkRequest - (*DeleteGitRepositoryLinkRequest)(nil), // 16: google.cloud.developerconnect.v1.DeleteGitRepositoryLinkRequest - (*ListGitRepositoryLinksRequest)(nil), // 17: google.cloud.developerconnect.v1.ListGitRepositoryLinksRequest - (*ListGitRepositoryLinksResponse)(nil), // 18: google.cloud.developerconnect.v1.ListGitRepositoryLinksResponse - (*GetGitRepositoryLinkRequest)(nil), // 19: google.cloud.developerconnect.v1.GetGitRepositoryLinkRequest - (*FetchReadWriteTokenRequest)(nil), // 20: google.cloud.developerconnect.v1.FetchReadWriteTokenRequest - (*FetchReadTokenRequest)(nil), // 21: google.cloud.developerconnect.v1.FetchReadTokenRequest - (*FetchReadTokenResponse)(nil), // 22: google.cloud.developerconnect.v1.FetchReadTokenResponse - (*FetchReadWriteTokenResponse)(nil), // 23: google.cloud.developerconnect.v1.FetchReadWriteTokenResponse - (*FetchLinkableGitRepositoriesRequest)(nil), // 24: google.cloud.developerconnect.v1.FetchLinkableGitRepositoriesRequest - (*FetchLinkableGitRepositoriesResponse)(nil), // 25: google.cloud.developerconnect.v1.FetchLinkableGitRepositoriesResponse - (*LinkableGitRepository)(nil), // 26: google.cloud.developerconnect.v1.LinkableGitRepository - (*FetchGitHubInstallationsRequest)(nil), // 27: google.cloud.developerconnect.v1.FetchGitHubInstallationsRequest - (*FetchGitHubInstallationsResponse)(nil), // 28: google.cloud.developerconnect.v1.FetchGitHubInstallationsResponse - (*FetchGitRefsRequest)(nil), // 29: google.cloud.developerconnect.v1.FetchGitRefsRequest - (*FetchGitRefsResponse)(nil), // 30: google.cloud.developerconnect.v1.FetchGitRefsResponse - nil, // 31: google.cloud.developerconnect.v1.Connection.LabelsEntry - nil, // 32: google.cloud.developerconnect.v1.Connection.AnnotationsEntry - nil, // 33: google.cloud.developerconnect.v1.GitRepositoryLink.LabelsEntry - nil, // 34: google.cloud.developerconnect.v1.GitRepositoryLink.AnnotationsEntry - (*FetchGitHubInstallationsResponse_Installation)(nil), // 35: google.cloud.developerconnect.v1.FetchGitHubInstallationsResponse.Installation - (*timestamppb.Timestamp)(nil), // 36: google.protobuf.Timestamp - (*fieldmaskpb.FieldMask)(nil), // 37: google.protobuf.FieldMask - (*longrunningpb.Operation)(nil), // 38: google.longrunning.Operation + (*CryptoKeyConfig)(nil), // 4: google.cloud.developerconnect.v1.CryptoKeyConfig + (*InstallationState)(nil), // 5: google.cloud.developerconnect.v1.InstallationState + (*GitHubConfig)(nil), // 6: google.cloud.developerconnect.v1.GitHubConfig + (*GitHubEnterpriseConfig)(nil), // 7: google.cloud.developerconnect.v1.GitHubEnterpriseConfig + (*ServiceDirectoryConfig)(nil), // 8: google.cloud.developerconnect.v1.ServiceDirectoryConfig + (*OAuthCredential)(nil), // 9: google.cloud.developerconnect.v1.OAuthCredential + (*GitLabConfig)(nil), // 10: google.cloud.developerconnect.v1.GitLabConfig + (*UserCredential)(nil), // 11: google.cloud.developerconnect.v1.UserCredential + (*GitLabEnterpriseConfig)(nil), // 12: google.cloud.developerconnect.v1.GitLabEnterpriseConfig + (*ListConnectionsRequest)(nil), // 13: google.cloud.developerconnect.v1.ListConnectionsRequest + (*ListConnectionsResponse)(nil), // 14: google.cloud.developerconnect.v1.ListConnectionsResponse + (*GetConnectionRequest)(nil), // 15: google.cloud.developerconnect.v1.GetConnectionRequest + (*CreateConnectionRequest)(nil), // 16: google.cloud.developerconnect.v1.CreateConnectionRequest + (*UpdateConnectionRequest)(nil), // 17: google.cloud.developerconnect.v1.UpdateConnectionRequest + (*DeleteConnectionRequest)(nil), // 18: google.cloud.developerconnect.v1.DeleteConnectionRequest + (*OperationMetadata)(nil), // 19: google.cloud.developerconnect.v1.OperationMetadata + (*GitRepositoryLink)(nil), // 20: google.cloud.developerconnect.v1.GitRepositoryLink + (*CreateGitRepositoryLinkRequest)(nil), // 21: google.cloud.developerconnect.v1.CreateGitRepositoryLinkRequest + (*DeleteGitRepositoryLinkRequest)(nil), // 22: google.cloud.developerconnect.v1.DeleteGitRepositoryLinkRequest + (*ListGitRepositoryLinksRequest)(nil), // 23: google.cloud.developerconnect.v1.ListGitRepositoryLinksRequest + (*ListGitRepositoryLinksResponse)(nil), // 24: google.cloud.developerconnect.v1.ListGitRepositoryLinksResponse + (*GetGitRepositoryLinkRequest)(nil), // 25: google.cloud.developerconnect.v1.GetGitRepositoryLinkRequest + (*FetchReadWriteTokenRequest)(nil), // 26: google.cloud.developerconnect.v1.FetchReadWriteTokenRequest + (*FetchReadTokenRequest)(nil), // 27: google.cloud.developerconnect.v1.FetchReadTokenRequest + (*FetchReadTokenResponse)(nil), // 28: google.cloud.developerconnect.v1.FetchReadTokenResponse + (*FetchReadWriteTokenResponse)(nil), // 29: google.cloud.developerconnect.v1.FetchReadWriteTokenResponse + (*FetchLinkableGitRepositoriesRequest)(nil), // 30: google.cloud.developerconnect.v1.FetchLinkableGitRepositoriesRequest + (*FetchLinkableGitRepositoriesResponse)(nil), // 31: google.cloud.developerconnect.v1.FetchLinkableGitRepositoriesResponse + (*LinkableGitRepository)(nil), // 32: google.cloud.developerconnect.v1.LinkableGitRepository + (*FetchGitHubInstallationsRequest)(nil), // 33: google.cloud.developerconnect.v1.FetchGitHubInstallationsRequest + (*FetchGitHubInstallationsResponse)(nil), // 34: google.cloud.developerconnect.v1.FetchGitHubInstallationsResponse + (*FetchGitRefsRequest)(nil), // 35: google.cloud.developerconnect.v1.FetchGitRefsRequest + (*FetchGitRefsResponse)(nil), // 36: google.cloud.developerconnect.v1.FetchGitRefsResponse + nil, // 37: google.cloud.developerconnect.v1.Connection.LabelsEntry + nil, // 38: google.cloud.developerconnect.v1.Connection.AnnotationsEntry + nil, // 39: google.cloud.developerconnect.v1.GitRepositoryLink.LabelsEntry + nil, // 40: google.cloud.developerconnect.v1.GitRepositoryLink.AnnotationsEntry + (*FetchGitHubInstallationsResponse_Installation)(nil), // 41: google.cloud.developerconnect.v1.FetchGitHubInstallationsResponse.Installation + (*timestamppb.Timestamp)(nil), // 42: google.protobuf.Timestamp + (*fieldmaskpb.FieldMask)(nil), // 43: google.protobuf.FieldMask + (*longrunningpb.Operation)(nil), // 44: google.longrunning.Operation } var file_google_cloud_developerconnect_v1_developer_connect_proto_depIdxs = []int32{ - 5, // 0: google.cloud.developerconnect.v1.Connection.github_config:type_name -> google.cloud.developerconnect.v1.GitHubConfig - 36, // 1: google.cloud.developerconnect.v1.Connection.create_time:type_name -> google.protobuf.Timestamp - 36, // 2: google.cloud.developerconnect.v1.Connection.update_time:type_name -> google.protobuf.Timestamp - 36, // 3: google.cloud.developerconnect.v1.Connection.delete_time:type_name -> google.protobuf.Timestamp - 31, // 4: google.cloud.developerconnect.v1.Connection.labels:type_name -> google.cloud.developerconnect.v1.Connection.LabelsEntry - 4, // 5: google.cloud.developerconnect.v1.Connection.installation_state:type_name -> google.cloud.developerconnect.v1.InstallationState - 32, // 6: google.cloud.developerconnect.v1.Connection.annotations:type_name -> google.cloud.developerconnect.v1.Connection.AnnotationsEntry - 0, // 7: google.cloud.developerconnect.v1.InstallationState.stage:type_name -> google.cloud.developerconnect.v1.InstallationState.Stage - 1, // 8: google.cloud.developerconnect.v1.GitHubConfig.github_app:type_name -> google.cloud.developerconnect.v1.GitHubConfig.GitHubApp - 6, // 9: google.cloud.developerconnect.v1.GitHubConfig.authorizer_credential:type_name -> google.cloud.developerconnect.v1.OAuthCredential - 3, // 10: google.cloud.developerconnect.v1.ListConnectionsResponse.connections:type_name -> google.cloud.developerconnect.v1.Connection - 3, // 11: google.cloud.developerconnect.v1.CreateConnectionRequest.connection:type_name -> google.cloud.developerconnect.v1.Connection - 37, // 12: google.cloud.developerconnect.v1.UpdateConnectionRequest.update_mask:type_name -> google.protobuf.FieldMask - 3, // 13: google.cloud.developerconnect.v1.UpdateConnectionRequest.connection:type_name -> google.cloud.developerconnect.v1.Connection - 36, // 14: google.cloud.developerconnect.v1.OperationMetadata.create_time:type_name -> google.protobuf.Timestamp - 36, // 15: google.cloud.developerconnect.v1.OperationMetadata.end_time:type_name -> google.protobuf.Timestamp - 36, // 16: google.cloud.developerconnect.v1.GitRepositoryLink.create_time:type_name -> google.protobuf.Timestamp - 36, // 17: google.cloud.developerconnect.v1.GitRepositoryLink.update_time:type_name -> google.protobuf.Timestamp - 36, // 18: google.cloud.developerconnect.v1.GitRepositoryLink.delete_time:type_name -> google.protobuf.Timestamp - 33, // 19: google.cloud.developerconnect.v1.GitRepositoryLink.labels:type_name -> google.cloud.developerconnect.v1.GitRepositoryLink.LabelsEntry - 34, // 20: google.cloud.developerconnect.v1.GitRepositoryLink.annotations:type_name -> google.cloud.developerconnect.v1.GitRepositoryLink.AnnotationsEntry - 14, // 21: google.cloud.developerconnect.v1.CreateGitRepositoryLinkRequest.git_repository_link:type_name -> google.cloud.developerconnect.v1.GitRepositoryLink - 14, // 22: google.cloud.developerconnect.v1.ListGitRepositoryLinksResponse.git_repository_links:type_name -> google.cloud.developerconnect.v1.GitRepositoryLink - 36, // 23: google.cloud.developerconnect.v1.FetchReadTokenResponse.expiration_time:type_name -> google.protobuf.Timestamp - 36, // 24: google.cloud.developerconnect.v1.FetchReadWriteTokenResponse.expiration_time:type_name -> google.protobuf.Timestamp - 26, // 25: google.cloud.developerconnect.v1.FetchLinkableGitRepositoriesResponse.linkable_git_repositories:type_name -> google.cloud.developerconnect.v1.LinkableGitRepository - 35, // 26: google.cloud.developerconnect.v1.FetchGitHubInstallationsResponse.installations:type_name -> google.cloud.developerconnect.v1.FetchGitHubInstallationsResponse.Installation - 2, // 27: google.cloud.developerconnect.v1.FetchGitRefsRequest.ref_type:type_name -> google.cloud.developerconnect.v1.FetchGitRefsRequest.RefType - 7, // 28: google.cloud.developerconnect.v1.DeveloperConnect.ListConnections:input_type -> google.cloud.developerconnect.v1.ListConnectionsRequest - 9, // 29: google.cloud.developerconnect.v1.DeveloperConnect.GetConnection:input_type -> google.cloud.developerconnect.v1.GetConnectionRequest - 10, // 30: google.cloud.developerconnect.v1.DeveloperConnect.CreateConnection:input_type -> google.cloud.developerconnect.v1.CreateConnectionRequest - 11, // 31: google.cloud.developerconnect.v1.DeveloperConnect.UpdateConnection:input_type -> google.cloud.developerconnect.v1.UpdateConnectionRequest - 12, // 32: google.cloud.developerconnect.v1.DeveloperConnect.DeleteConnection:input_type -> google.cloud.developerconnect.v1.DeleteConnectionRequest - 15, // 33: google.cloud.developerconnect.v1.DeveloperConnect.CreateGitRepositoryLink:input_type -> google.cloud.developerconnect.v1.CreateGitRepositoryLinkRequest - 16, // 34: google.cloud.developerconnect.v1.DeveloperConnect.DeleteGitRepositoryLink:input_type -> google.cloud.developerconnect.v1.DeleteGitRepositoryLinkRequest - 17, // 35: google.cloud.developerconnect.v1.DeveloperConnect.ListGitRepositoryLinks:input_type -> google.cloud.developerconnect.v1.ListGitRepositoryLinksRequest - 19, // 36: google.cloud.developerconnect.v1.DeveloperConnect.GetGitRepositoryLink:input_type -> google.cloud.developerconnect.v1.GetGitRepositoryLinkRequest - 20, // 37: google.cloud.developerconnect.v1.DeveloperConnect.FetchReadWriteToken:input_type -> google.cloud.developerconnect.v1.FetchReadWriteTokenRequest - 21, // 38: google.cloud.developerconnect.v1.DeveloperConnect.FetchReadToken:input_type -> google.cloud.developerconnect.v1.FetchReadTokenRequest - 24, // 39: google.cloud.developerconnect.v1.DeveloperConnect.FetchLinkableGitRepositories:input_type -> google.cloud.developerconnect.v1.FetchLinkableGitRepositoriesRequest - 27, // 40: google.cloud.developerconnect.v1.DeveloperConnect.FetchGitHubInstallations:input_type -> google.cloud.developerconnect.v1.FetchGitHubInstallationsRequest - 29, // 41: google.cloud.developerconnect.v1.DeveloperConnect.FetchGitRefs:input_type -> google.cloud.developerconnect.v1.FetchGitRefsRequest - 8, // 42: google.cloud.developerconnect.v1.DeveloperConnect.ListConnections:output_type -> google.cloud.developerconnect.v1.ListConnectionsResponse - 3, // 43: google.cloud.developerconnect.v1.DeveloperConnect.GetConnection:output_type -> google.cloud.developerconnect.v1.Connection - 38, // 44: google.cloud.developerconnect.v1.DeveloperConnect.CreateConnection:output_type -> google.longrunning.Operation - 38, // 45: google.cloud.developerconnect.v1.DeveloperConnect.UpdateConnection:output_type -> google.longrunning.Operation - 38, // 46: google.cloud.developerconnect.v1.DeveloperConnect.DeleteConnection:output_type -> google.longrunning.Operation - 38, // 47: google.cloud.developerconnect.v1.DeveloperConnect.CreateGitRepositoryLink:output_type -> google.longrunning.Operation - 38, // 48: google.cloud.developerconnect.v1.DeveloperConnect.DeleteGitRepositoryLink:output_type -> google.longrunning.Operation - 18, // 49: google.cloud.developerconnect.v1.DeveloperConnect.ListGitRepositoryLinks:output_type -> google.cloud.developerconnect.v1.ListGitRepositoryLinksResponse - 14, // 50: google.cloud.developerconnect.v1.DeveloperConnect.GetGitRepositoryLink:output_type -> google.cloud.developerconnect.v1.GitRepositoryLink - 23, // 51: google.cloud.developerconnect.v1.DeveloperConnect.FetchReadWriteToken:output_type -> google.cloud.developerconnect.v1.FetchReadWriteTokenResponse - 22, // 52: google.cloud.developerconnect.v1.DeveloperConnect.FetchReadToken:output_type -> google.cloud.developerconnect.v1.FetchReadTokenResponse - 25, // 53: google.cloud.developerconnect.v1.DeveloperConnect.FetchLinkableGitRepositories:output_type -> google.cloud.developerconnect.v1.FetchLinkableGitRepositoriesResponse - 28, // 54: google.cloud.developerconnect.v1.DeveloperConnect.FetchGitHubInstallations:output_type -> google.cloud.developerconnect.v1.FetchGitHubInstallationsResponse - 30, // 55: google.cloud.developerconnect.v1.DeveloperConnect.FetchGitRefs:output_type -> google.cloud.developerconnect.v1.FetchGitRefsResponse - 42, // [42:56] is the sub-list for method output_type - 28, // [28:42] is the sub-list for method input_type - 28, // [28:28] is the sub-list for extension type_name - 28, // [28:28] is the sub-list for extension extendee - 0, // [0:28] is the sub-list for field type_name + 6, // 0: google.cloud.developerconnect.v1.Connection.github_config:type_name -> google.cloud.developerconnect.v1.GitHubConfig + 7, // 1: google.cloud.developerconnect.v1.Connection.github_enterprise_config:type_name -> google.cloud.developerconnect.v1.GitHubEnterpriseConfig + 10, // 2: google.cloud.developerconnect.v1.Connection.gitlab_config:type_name -> google.cloud.developerconnect.v1.GitLabConfig + 12, // 3: google.cloud.developerconnect.v1.Connection.gitlab_enterprise_config:type_name -> google.cloud.developerconnect.v1.GitLabEnterpriseConfig + 42, // 4: google.cloud.developerconnect.v1.Connection.create_time:type_name -> google.protobuf.Timestamp + 42, // 5: google.cloud.developerconnect.v1.Connection.update_time:type_name -> google.protobuf.Timestamp + 42, // 6: google.cloud.developerconnect.v1.Connection.delete_time:type_name -> google.protobuf.Timestamp + 37, // 7: google.cloud.developerconnect.v1.Connection.labels:type_name -> google.cloud.developerconnect.v1.Connection.LabelsEntry + 5, // 8: google.cloud.developerconnect.v1.Connection.installation_state:type_name -> google.cloud.developerconnect.v1.InstallationState + 38, // 9: google.cloud.developerconnect.v1.Connection.annotations:type_name -> google.cloud.developerconnect.v1.Connection.AnnotationsEntry + 4, // 10: google.cloud.developerconnect.v1.Connection.crypto_key_config:type_name -> google.cloud.developerconnect.v1.CryptoKeyConfig + 0, // 11: google.cloud.developerconnect.v1.InstallationState.stage:type_name -> google.cloud.developerconnect.v1.InstallationState.Stage + 1, // 12: google.cloud.developerconnect.v1.GitHubConfig.github_app:type_name -> google.cloud.developerconnect.v1.GitHubConfig.GitHubApp + 9, // 13: google.cloud.developerconnect.v1.GitHubConfig.authorizer_credential:type_name -> google.cloud.developerconnect.v1.OAuthCredential + 8, // 14: google.cloud.developerconnect.v1.GitHubEnterpriseConfig.service_directory_config:type_name -> google.cloud.developerconnect.v1.ServiceDirectoryConfig + 11, // 15: google.cloud.developerconnect.v1.GitLabConfig.read_authorizer_credential:type_name -> google.cloud.developerconnect.v1.UserCredential + 11, // 16: google.cloud.developerconnect.v1.GitLabConfig.authorizer_credential:type_name -> google.cloud.developerconnect.v1.UserCredential + 11, // 17: google.cloud.developerconnect.v1.GitLabEnterpriseConfig.read_authorizer_credential:type_name -> google.cloud.developerconnect.v1.UserCredential + 11, // 18: google.cloud.developerconnect.v1.GitLabEnterpriseConfig.authorizer_credential:type_name -> google.cloud.developerconnect.v1.UserCredential + 8, // 19: google.cloud.developerconnect.v1.GitLabEnterpriseConfig.service_directory_config:type_name -> google.cloud.developerconnect.v1.ServiceDirectoryConfig + 3, // 20: google.cloud.developerconnect.v1.ListConnectionsResponse.connections:type_name -> google.cloud.developerconnect.v1.Connection + 3, // 21: google.cloud.developerconnect.v1.CreateConnectionRequest.connection:type_name -> google.cloud.developerconnect.v1.Connection + 43, // 22: google.cloud.developerconnect.v1.UpdateConnectionRequest.update_mask:type_name -> google.protobuf.FieldMask + 3, // 23: google.cloud.developerconnect.v1.UpdateConnectionRequest.connection:type_name -> google.cloud.developerconnect.v1.Connection + 42, // 24: google.cloud.developerconnect.v1.OperationMetadata.create_time:type_name -> google.protobuf.Timestamp + 42, // 25: google.cloud.developerconnect.v1.OperationMetadata.end_time:type_name -> google.protobuf.Timestamp + 42, // 26: google.cloud.developerconnect.v1.GitRepositoryLink.create_time:type_name -> google.protobuf.Timestamp + 42, // 27: google.cloud.developerconnect.v1.GitRepositoryLink.update_time:type_name -> google.protobuf.Timestamp + 42, // 28: google.cloud.developerconnect.v1.GitRepositoryLink.delete_time:type_name -> google.protobuf.Timestamp + 39, // 29: google.cloud.developerconnect.v1.GitRepositoryLink.labels:type_name -> google.cloud.developerconnect.v1.GitRepositoryLink.LabelsEntry + 40, // 30: google.cloud.developerconnect.v1.GitRepositoryLink.annotations:type_name -> google.cloud.developerconnect.v1.GitRepositoryLink.AnnotationsEntry + 20, // 31: google.cloud.developerconnect.v1.CreateGitRepositoryLinkRequest.git_repository_link:type_name -> google.cloud.developerconnect.v1.GitRepositoryLink + 20, // 32: google.cloud.developerconnect.v1.ListGitRepositoryLinksResponse.git_repository_links:type_name -> google.cloud.developerconnect.v1.GitRepositoryLink + 42, // 33: google.cloud.developerconnect.v1.FetchReadTokenResponse.expiration_time:type_name -> google.protobuf.Timestamp + 42, // 34: google.cloud.developerconnect.v1.FetchReadWriteTokenResponse.expiration_time:type_name -> google.protobuf.Timestamp + 32, // 35: google.cloud.developerconnect.v1.FetchLinkableGitRepositoriesResponse.linkable_git_repositories:type_name -> google.cloud.developerconnect.v1.LinkableGitRepository + 41, // 36: google.cloud.developerconnect.v1.FetchGitHubInstallationsResponse.installations:type_name -> google.cloud.developerconnect.v1.FetchGitHubInstallationsResponse.Installation + 2, // 37: google.cloud.developerconnect.v1.FetchGitRefsRequest.ref_type:type_name -> google.cloud.developerconnect.v1.FetchGitRefsRequest.RefType + 13, // 38: google.cloud.developerconnect.v1.DeveloperConnect.ListConnections:input_type -> google.cloud.developerconnect.v1.ListConnectionsRequest + 15, // 39: google.cloud.developerconnect.v1.DeveloperConnect.GetConnection:input_type -> google.cloud.developerconnect.v1.GetConnectionRequest + 16, // 40: google.cloud.developerconnect.v1.DeveloperConnect.CreateConnection:input_type -> google.cloud.developerconnect.v1.CreateConnectionRequest + 17, // 41: google.cloud.developerconnect.v1.DeveloperConnect.UpdateConnection:input_type -> google.cloud.developerconnect.v1.UpdateConnectionRequest + 18, // 42: google.cloud.developerconnect.v1.DeveloperConnect.DeleteConnection:input_type -> google.cloud.developerconnect.v1.DeleteConnectionRequest + 21, // 43: google.cloud.developerconnect.v1.DeveloperConnect.CreateGitRepositoryLink:input_type -> google.cloud.developerconnect.v1.CreateGitRepositoryLinkRequest + 22, // 44: google.cloud.developerconnect.v1.DeveloperConnect.DeleteGitRepositoryLink:input_type -> google.cloud.developerconnect.v1.DeleteGitRepositoryLinkRequest + 23, // 45: google.cloud.developerconnect.v1.DeveloperConnect.ListGitRepositoryLinks:input_type -> google.cloud.developerconnect.v1.ListGitRepositoryLinksRequest + 25, // 46: google.cloud.developerconnect.v1.DeveloperConnect.GetGitRepositoryLink:input_type -> google.cloud.developerconnect.v1.GetGitRepositoryLinkRequest + 26, // 47: google.cloud.developerconnect.v1.DeveloperConnect.FetchReadWriteToken:input_type -> google.cloud.developerconnect.v1.FetchReadWriteTokenRequest + 27, // 48: google.cloud.developerconnect.v1.DeveloperConnect.FetchReadToken:input_type -> google.cloud.developerconnect.v1.FetchReadTokenRequest + 30, // 49: google.cloud.developerconnect.v1.DeveloperConnect.FetchLinkableGitRepositories:input_type -> google.cloud.developerconnect.v1.FetchLinkableGitRepositoriesRequest + 33, // 50: google.cloud.developerconnect.v1.DeveloperConnect.FetchGitHubInstallations:input_type -> google.cloud.developerconnect.v1.FetchGitHubInstallationsRequest + 35, // 51: google.cloud.developerconnect.v1.DeveloperConnect.FetchGitRefs:input_type -> google.cloud.developerconnect.v1.FetchGitRefsRequest + 14, // 52: google.cloud.developerconnect.v1.DeveloperConnect.ListConnections:output_type -> google.cloud.developerconnect.v1.ListConnectionsResponse + 3, // 53: google.cloud.developerconnect.v1.DeveloperConnect.GetConnection:output_type -> google.cloud.developerconnect.v1.Connection + 44, // 54: google.cloud.developerconnect.v1.DeveloperConnect.CreateConnection:output_type -> google.longrunning.Operation + 44, // 55: google.cloud.developerconnect.v1.DeveloperConnect.UpdateConnection:output_type -> google.longrunning.Operation + 44, // 56: google.cloud.developerconnect.v1.DeveloperConnect.DeleteConnection:output_type -> google.longrunning.Operation + 44, // 57: google.cloud.developerconnect.v1.DeveloperConnect.CreateGitRepositoryLink:output_type -> google.longrunning.Operation + 44, // 58: google.cloud.developerconnect.v1.DeveloperConnect.DeleteGitRepositoryLink:output_type -> google.longrunning.Operation + 24, // 59: google.cloud.developerconnect.v1.DeveloperConnect.ListGitRepositoryLinks:output_type -> google.cloud.developerconnect.v1.ListGitRepositoryLinksResponse + 20, // 60: google.cloud.developerconnect.v1.DeveloperConnect.GetGitRepositoryLink:output_type -> google.cloud.developerconnect.v1.GitRepositoryLink + 29, // 61: google.cloud.developerconnect.v1.DeveloperConnect.FetchReadWriteToken:output_type -> google.cloud.developerconnect.v1.FetchReadWriteTokenResponse + 28, // 62: google.cloud.developerconnect.v1.DeveloperConnect.FetchReadToken:output_type -> google.cloud.developerconnect.v1.FetchReadTokenResponse + 31, // 63: google.cloud.developerconnect.v1.DeveloperConnect.FetchLinkableGitRepositories:output_type -> google.cloud.developerconnect.v1.FetchLinkableGitRepositoriesResponse + 34, // 64: google.cloud.developerconnect.v1.DeveloperConnect.FetchGitHubInstallations:output_type -> google.cloud.developerconnect.v1.FetchGitHubInstallationsResponse + 36, // 65: google.cloud.developerconnect.v1.DeveloperConnect.FetchGitRefs:output_type -> google.cloud.developerconnect.v1.FetchGitRefsResponse + 52, // [52:66] is the sub-list for method output_type + 38, // [38:52] is the sub-list for method input_type + 38, // [38:38] is the sub-list for extension type_name + 38, // [38:38] is the sub-list for extension extendee + 0, // [0:38] is the sub-list for field type_name } func init() { file_google_cloud_developerconnect_v1_developer_connect_proto_init() } @@ -3332,7 +4077,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*InstallationState); i { + switch v := v.(*CryptoKeyConfig); i { case 0: return &v.state case 1: @@ -3344,7 +4089,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*GitHubConfig); i { + switch v := v.(*InstallationState); i { case 0: return &v.state case 1: @@ -3356,7 +4101,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*OAuthCredential); i { + switch v := v.(*GitHubConfig); i { case 0: return &v.state case 1: @@ -3368,7 +4113,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*ListConnectionsRequest); i { + switch v := v.(*GitHubEnterpriseConfig); i { case 0: return &v.state case 1: @@ -3380,7 +4125,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*ListConnectionsResponse); i { + switch v := v.(*ServiceDirectoryConfig); i { case 0: return &v.state case 1: @@ -3392,7 +4137,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*GetConnectionRequest); i { + switch v := v.(*OAuthCredential); i { case 0: return &v.state case 1: @@ -3404,7 +4149,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*CreateConnectionRequest); i { + switch v := v.(*GitLabConfig); i { case 0: return &v.state case 1: @@ -3416,7 +4161,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*UpdateConnectionRequest); i { + switch v := v.(*UserCredential); i { case 0: return &v.state case 1: @@ -3428,7 +4173,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeleteConnectionRequest); i { + switch v := v.(*GitLabEnterpriseConfig); i { case 0: return &v.state case 1: @@ -3440,7 +4185,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*OperationMetadata); i { + switch v := v.(*ListConnectionsRequest); i { case 0: return &v.state case 1: @@ -3452,7 +4197,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*GitRepositoryLink); i { + switch v := v.(*ListConnectionsResponse); i { case 0: return &v.state case 1: @@ -3464,7 +4209,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*CreateGitRepositoryLinkRequest); i { + switch v := v.(*GetConnectionRequest); i { case 0: return &v.state case 1: @@ -3476,7 +4221,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*DeleteGitRepositoryLinkRequest); i { + switch v := v.(*CreateConnectionRequest); i { case 0: return &v.state case 1: @@ -3488,7 +4233,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*ListGitRepositoryLinksRequest); i { + switch v := v.(*UpdateConnectionRequest); i { case 0: return &v.state case 1: @@ -3500,7 +4245,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*ListGitRepositoryLinksResponse); i { + switch v := v.(*DeleteConnectionRequest); i { case 0: return &v.state case 1: @@ -3512,7 +4257,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*GetGitRepositoryLinkRequest); i { + switch v := v.(*OperationMetadata); i { case 0: return &v.state case 1: @@ -3524,7 +4269,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*FetchReadWriteTokenRequest); i { + switch v := v.(*GitRepositoryLink); i { case 0: return &v.state case 1: @@ -3536,7 +4281,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*FetchReadTokenRequest); i { + switch v := v.(*CreateGitRepositoryLinkRequest); i { case 0: return &v.state case 1: @@ -3548,7 +4293,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*FetchReadTokenResponse); i { + switch v := v.(*DeleteGitRepositoryLinkRequest); i { case 0: return &v.state case 1: @@ -3560,7 +4305,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*FetchReadWriteTokenResponse); i { + switch v := v.(*ListGitRepositoryLinksRequest); i { case 0: return &v.state case 1: @@ -3572,7 +4317,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*FetchLinkableGitRepositoriesRequest); i { + switch v := v.(*ListGitRepositoryLinksResponse); i { case 0: return &v.state case 1: @@ -3584,7 +4329,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*FetchLinkableGitRepositoriesResponse); i { + switch v := v.(*GetGitRepositoryLinkRequest); i { case 0: return &v.state case 1: @@ -3596,7 +4341,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*LinkableGitRepository); i { + switch v := v.(*FetchReadWriteTokenRequest); i { case 0: return &v.state case 1: @@ -3608,7 +4353,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*FetchGitHubInstallationsRequest); i { + switch v := v.(*FetchReadTokenRequest); i { case 0: return &v.state case 1: @@ -3620,7 +4365,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[25].Exporter = func(v any, i int) any { - switch v := v.(*FetchGitHubInstallationsResponse); i { + switch v := v.(*FetchReadTokenResponse); i { case 0: return &v.state case 1: @@ -3632,7 +4377,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[26].Exporter = func(v any, i int) any { - switch v := v.(*FetchGitRefsRequest); i { + switch v := v.(*FetchReadWriteTokenResponse); i { case 0: return &v.state case 1: @@ -3644,7 +4389,55 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[27].Exporter = func(v any, i int) any { - switch v := v.(*FetchGitRefsResponse); i { + switch v := v.(*FetchLinkableGitRepositoriesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[28].Exporter = func(v any, i int) any { + switch v := v.(*FetchLinkableGitRepositoriesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[29].Exporter = func(v any, i int) any { + switch v := v.(*LinkableGitRepository); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[30].Exporter = func(v any, i int) any { + switch v := v.(*FetchGitHubInstallationsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[31].Exporter = func(v any, i int) any { + switch v := v.(*FetchGitHubInstallationsResponse); i { case 0: return &v.state case 1: @@ -3656,6 +4449,30 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[32].Exporter = func(v any, i int) any { + switch v := v.(*FetchGitRefsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[33].Exporter = func(v any, i int) any { + switch v := v.(*FetchGitRefsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[38].Exporter = func(v any, i int) any { switch v := v.(*FetchGitHubInstallationsResponse_Installation); i { case 0: return &v.state @@ -3670,6 +4487,9 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { } file_google_cloud_developerconnect_v1_developer_connect_proto_msgTypes[0].OneofWrappers = []any{ (*Connection_GithubConfig)(nil), + (*Connection_GithubEnterpriseConfig)(nil), + (*Connection_GitlabConfig)(nil), + (*Connection_GitlabEnterpriseConfig)(nil), } type x struct{} out := protoimpl.TypeBuilder{ @@ -3677,7 +4497,7 @@ func file_google_cloud_developerconnect_v1_developer_connect_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_developerconnect_v1_developer_connect_proto_rawDesc, NumEnums: 3, - NumMessages: 33, + NumMessages: 39, NumExtensions: 0, NumServices: 1, }, diff --git a/dialogflow/apiv2beta1/dialogflowpb/audio_config.pb.go b/dialogflow/apiv2beta1/dialogflowpb/audio_config.pb.go index ea5803071336..d995e6243822 100755 --- a/dialogflow/apiv2beta1/dialogflowpb/audio_config.pb.go +++ b/dialogflow/apiv2beta1/dialogflowpb/audio_config.pb.go @@ -648,8 +648,8 @@ func (x *SpeechWordInfo) GetConfidence() float32 { // phase. // // The client provides this configuration in terms of the durations of those -// two phases. The durations are measured in terms of the audio length from -// the start of the input audio. +// two phases. The durations are measured in terms of the audio length from the +// start of the input audio. // // The flow goes like below: // diff --git a/dialogflow/apiv2beta1/dialogflowpb/conversation.pb.go b/dialogflow/apiv2beta1/dialogflowpb/conversation.pb.go index 70bae900da8e..46e301a4b734 100755 --- a/dialogflow/apiv2beta1/dialogflowpb/conversation.pb.go +++ b/dialogflow/apiv2beta1/dialogflowpb/conversation.pb.go @@ -31,6 +31,7 @@ import ( status "google.golang.org/grpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" ) @@ -152,6 +153,177 @@ func (Conversation_ConversationStage) EnumDescriptor() ([]byte, []int) { return file_google_cloud_dialogflow_v2beta1_conversation_proto_rawDescGZIP(), []int{0, 1} } +// The source of the query. We use QuerySource to distinguish queries directly +// entered by agents and suggested queries from +// [Participants.SuggestKnowledgeAssist][google.cloud.dialogflow.v2beta1.Participants.SuggestKnowledgeAssist]. +// If SUGGESTED_QUERY source is specified, we will treat it as a continuation +// of a SuggestKnowledgeAssist call. +type SearchKnowledgeRequest_QuerySource int32 + +const ( + // Unknown query source. + SearchKnowledgeRequest_QUERY_SOURCE_UNSPECIFIED SearchKnowledgeRequest_QuerySource = 0 + // The query is from agents. + SearchKnowledgeRequest_AGENT_QUERY SearchKnowledgeRequest_QuerySource = 1 + // The query is a suggested query from + // [Participants.SuggestKnowledgeAssist][google.cloud.dialogflow.v2beta1.Participants.SuggestKnowledgeAssist]. + SearchKnowledgeRequest_SUGGESTED_QUERY SearchKnowledgeRequest_QuerySource = 2 +) + +// Enum value maps for SearchKnowledgeRequest_QuerySource. +var ( + SearchKnowledgeRequest_QuerySource_name = map[int32]string{ + 0: "QUERY_SOURCE_UNSPECIFIED", + 1: "AGENT_QUERY", + 2: "SUGGESTED_QUERY", + } + SearchKnowledgeRequest_QuerySource_value = map[string]int32{ + "QUERY_SOURCE_UNSPECIFIED": 0, + "AGENT_QUERY": 1, + "SUGGESTED_QUERY": 2, + } +) + +func (x SearchKnowledgeRequest_QuerySource) Enum() *SearchKnowledgeRequest_QuerySource { + p := new(SearchKnowledgeRequest_QuerySource) + *p = x + return p +} + +func (x SearchKnowledgeRequest_QuerySource) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SearchKnowledgeRequest_QuerySource) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_dialogflow_v2beta1_conversation_proto_enumTypes[2].Descriptor() +} + +func (SearchKnowledgeRequest_QuerySource) Type() protoreflect.EnumType { + return &file_google_cloud_dialogflow_v2beta1_conversation_proto_enumTypes[2] +} + +func (x SearchKnowledgeRequest_QuerySource) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SearchKnowledgeRequest_QuerySource.Descriptor instead. +func (SearchKnowledgeRequest_QuerySource) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_dialogflow_v2beta1_conversation_proto_rawDescGZIP(), []int{18, 0} +} + +// The attribute(or function) for which the custom ranking is to be +// applied. +type SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType int32 + +const ( + // Unspecified AttributeType. + SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_ATTRIBUTE_TYPE_UNSPECIFIED SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType = 0 + // The value of the numerical field will be used to dynamically + // update the boost amount. In this case, the attribute_value (the + // x value) of the control point will be the actual value of the + // numerical field for which the boost_amount is specified. + SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_NUMERICAL SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType = 1 + // For the freshness use case the attribute value will be the + // duration between the current time and the date in the datetime + // field specified. The value must be formatted as an XSD + // `dayTimeDuration` value (a restricted subset of an ISO 8601 + // duration value). The pattern for this is: + // `[nD][T[nH][nM][nS]]`. E.g. `5D`, `3DT12H30M`, `T24H`. + SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_FRESHNESS SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType = 2 +) + +// Enum value maps for SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType. +var ( + SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType_name = map[int32]string{ + 0: "ATTRIBUTE_TYPE_UNSPECIFIED", + 1: "NUMERICAL", + 2: "FRESHNESS", + } + SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType_value = map[string]int32{ + "ATTRIBUTE_TYPE_UNSPECIFIED": 0, + "NUMERICAL": 1, + "FRESHNESS": 2, + } +) + +func (x SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType) Enum() *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType { + p := new(SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType) + *p = x + return p +} + +func (x SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_dialogflow_v2beta1_conversation_proto_enumTypes[3].Descriptor() +} + +func (SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType) Type() protoreflect.EnumType { + return &file_google_cloud_dialogflow_v2beta1_conversation_proto_enumTypes[3] +} + +func (x SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType.Descriptor instead. +func (SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_dialogflow_v2beta1_conversation_proto_rawDescGZIP(), []int{18, 0, 0, 0, 0, 0, 0} +} + +// The interpolation type to be applied. Default will be linear +// (Piecewise Linear). +type SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType int32 + +const ( + // Interpolation type is unspecified. In this case, it defaults to + // Linear. + SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_INTERPOLATION_TYPE_UNSPECIFIED SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType = 0 + // Piecewise linear interpolation will be applied. + SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_LINEAR SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType = 1 +) + +// Enum value maps for SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType. +var ( + SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType_name = map[int32]string{ + 0: "INTERPOLATION_TYPE_UNSPECIFIED", + 1: "LINEAR", + } + SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType_value = map[string]int32{ + "INTERPOLATION_TYPE_UNSPECIFIED": 0, + "LINEAR": 1, + } +) + +func (x SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType) Enum() *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType { + p := new(SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType) + *p = x + return p +} + +func (x SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType) Descriptor() protoreflect.EnumDescriptor { + return file_google_cloud_dialogflow_v2beta1_conversation_proto_enumTypes[4].Descriptor() +} + +func (SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType) Type() protoreflect.EnumType { + return &file_google_cloud_dialogflow_v2beta1_conversation_proto_enumTypes[4] +} + +func (x SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType.Descriptor instead. +func (SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType) EnumDescriptor() ([]byte, []int) { + return file_google_cloud_dialogflow_v2beta1_conversation_proto_rawDescGZIP(), []int{18, 0, 0, 0, 0, 0, 1} +} + // The type of the answer. type SearchKnowledgeAnswer_AnswerType int32 @@ -193,11 +365,11 @@ func (x SearchKnowledgeAnswer_AnswerType) String() string { } func (SearchKnowledgeAnswer_AnswerType) Descriptor() protoreflect.EnumDescriptor { - return file_google_cloud_dialogflow_v2beta1_conversation_proto_enumTypes[2].Descriptor() + return file_google_cloud_dialogflow_v2beta1_conversation_proto_enumTypes[5].Descriptor() } func (SearchKnowledgeAnswer_AnswerType) Type() protoreflect.EnumType { - return &file_google_cloud_dialogflow_v2beta1_conversation_proto_enumTypes[2] + return &file_google_cloud_dialogflow_v2beta1_conversation_proto_enumTypes[5] } func (x SearchKnowledgeAnswer_AnswerType) Number() protoreflect.EnumNumber { @@ -402,9 +574,9 @@ type CreateConversationRequest struct { // Google. Only set it if you cannot wait for the response to return a // auto-generated one to you. // - // The conversation ID must be compliant with the regression fomula + // The conversation ID must be compliant with the regression formula // `[a-zA-Z][a-zA-Z0-9_-]*` with the characters length in range of [3,64]. - // If the field is provided, the caller is resposible for + // If the field is provided, the caller is responsible for // 1. the uniqueness of the ID, otherwise the request will be rejected. // 2. the consistency for whether to use custom ID or not under a project to // better ensure uniqueness. @@ -1563,6 +1735,32 @@ type SearchKnowledgeRequest struct { // Format: `projects//locations//conversations//messages/`. LatestMessage string `protobuf:"bytes,5,opt,name=latest_message,json=latestMessage,proto3" json:"latest_message,omitempty"` + // Optional. The source of the query in the request. + QuerySource SearchKnowledgeRequest_QuerySource `protobuf:"varint,7,opt,name=query_source,json=querySource,proto3,enum=google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest_QuerySource" json:"query_source,omitempty"` + // Optional. Information about the end-user to improve the relevance and + // accuracy of generative answers. + // + // This will be interpreted and used by a language model, so, for good + // results, the data should be self-descriptive, and in a simple structure. + // + // Example: + // + // ```json + // + // { + // "subscription plan": "Business Premium Plus", + // "devices owned": [ + // {"model": "Google Pixel 7"}, + // {"model": "Google Pixel Tablet"} + // ] + // } + // + // ``` + EndUserMetadata *structpb.Struct `protobuf:"bytes,9,opt,name=end_user_metadata,json=endUserMetadata,proto3" json:"end_user_metadata,omitempty"` + // Optional. Configuration specific to search queries with data stores. + SearchConfig *SearchKnowledgeRequest_SearchConfig `protobuf:"bytes,11,opt,name=search_config,json=searchConfig,proto3" json:"search_config,omitempty"` + // Optional. Whether to search the query exactly without query rewrite. + ExactSearch bool `protobuf:"varint,14,opt,name=exact_search,json=exactSearch,proto3" json:"exact_search,omitempty"` } func (x *SearchKnowledgeRequest) Reset() { @@ -1639,6 +1837,34 @@ func (x *SearchKnowledgeRequest) GetLatestMessage() string { return "" } +func (x *SearchKnowledgeRequest) GetQuerySource() SearchKnowledgeRequest_QuerySource { + if x != nil { + return x.QuerySource + } + return SearchKnowledgeRequest_QUERY_SOURCE_UNSPECIFIED +} + +func (x *SearchKnowledgeRequest) GetEndUserMetadata() *structpb.Struct { + if x != nil { + return x.EndUserMetadata + } + return nil +} + +func (x *SearchKnowledgeRequest) GetSearchConfig() *SearchKnowledgeRequest_SearchConfig { + if x != nil { + return x.SearchConfig + } + return nil +} + +func (x *SearchKnowledgeRequest) GetExactSearch() bool { + if x != nil { + return x.ExactSearch + } + return false +} + // The response message for // [Conversations.SearchKnowledge][google.cloud.dialogflow.v2beta1.Conversations.SearchKnowledge]. type SearchKnowledgeResponse struct { @@ -1992,22 +2218,20 @@ func (x *GenerateStatelessSummaryResponse_Summary) GetBaselineModelVersion() str return "" } -// The sources of the answers. -type SearchKnowledgeAnswer_AnswerSource struct { +// Configuration specific to search queries with data stores. +type SearchKnowledgeRequest_SearchConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The title of the article. - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` - // The URI of the article. - Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"` - // The relevant snippet of the article. - Snippet string `protobuf:"bytes,3,opt,name=snippet,proto3" json:"snippet,omitempty"` + // Optional. Boost specifications for data stores. + BoostSpecs []*SearchKnowledgeRequest_SearchConfig_BoostSpecs `protobuf:"bytes,1,rep,name=boost_specs,json=boostSpecs,proto3" json:"boost_specs,omitempty"` + // Optional. Filter specification for data store queries. + FilterSpecs []*SearchKnowledgeRequest_SearchConfig_FilterSpecs `protobuf:"bytes,2,rep,name=filter_specs,json=filterSpecs,proto3" json:"filter_specs,omitempty"` } -func (x *SearchKnowledgeAnswer_AnswerSource) Reset() { - *x = SearchKnowledgeAnswer_AnswerSource{} +func (x *SearchKnowledgeRequest_SearchConfig) Reset() { + *x = SearchKnowledgeRequest_SearchConfig{} if protoimpl.UnsafeEnabled { mi := &file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2015,13 +2239,13 @@ func (x *SearchKnowledgeAnswer_AnswerSource) Reset() { } } -func (x *SearchKnowledgeAnswer_AnswerSource) String() string { +func (x *SearchKnowledgeRequest_SearchConfig) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SearchKnowledgeAnswer_AnswerSource) ProtoMessage() {} +func (*SearchKnowledgeRequest_SearchConfig) ProtoMessage() {} -func (x *SearchKnowledgeAnswer_AnswerSource) ProtoReflect() protoreflect.Message { +func (x *SearchKnowledgeRequest_SearchConfig) ProtoReflect() protoreflect.Message { mi := &file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2033,666 +2257,1294 @@ func (x *SearchKnowledgeAnswer_AnswerSource) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use SearchKnowledgeAnswer_AnswerSource.ProtoReflect.Descriptor instead. -func (*SearchKnowledgeAnswer_AnswerSource) Descriptor() ([]byte, []int) { - return file_google_cloud_dialogflow_v2beta1_conversation_proto_rawDescGZIP(), []int{20, 0} +// Deprecated: Use SearchKnowledgeRequest_SearchConfig.ProtoReflect.Descriptor instead. +func (*SearchKnowledgeRequest_SearchConfig) Descriptor() ([]byte, []int) { + return file_google_cloud_dialogflow_v2beta1_conversation_proto_rawDescGZIP(), []int{18, 0} } -func (x *SearchKnowledgeAnswer_AnswerSource) GetTitle() string { +func (x *SearchKnowledgeRequest_SearchConfig) GetBoostSpecs() []*SearchKnowledgeRequest_SearchConfig_BoostSpecs { if x != nil { - return x.Title + return x.BoostSpecs } - return "" + return nil } -func (x *SearchKnowledgeAnswer_AnswerSource) GetUri() string { +func (x *SearchKnowledgeRequest_SearchConfig) GetFilterSpecs() []*SearchKnowledgeRequest_SearchConfig_FilterSpecs { if x != nil { - return x.Uri + return x.FilterSpecs } - return "" + return nil } -func (x *SearchKnowledgeAnswer_AnswerSource) GetSnippet() string { +// Boost specifications for data stores. +type SearchKnowledgeRequest_SearchConfig_BoostSpecs struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. Data Stores where the boosting configuration is applied. The + // full names of the referenced data stores. Formats: + // `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}` + // `projects/{project}/locations/{location}/dataStores/{data_store}` + DataStores []string `protobuf:"bytes,1,rep,name=data_stores,json=dataStores,proto3" json:"data_stores,omitempty"` + // Optional. A list of boosting specifications. + Spec []*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec `protobuf:"bytes,2,rep,name=spec,proto3" json:"spec,omitempty"` +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs) Reset() { + *x = SearchKnowledgeRequest_SearchConfig_BoostSpecs{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchKnowledgeRequest_SearchConfig_BoostSpecs) ProtoMessage() {} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchKnowledgeRequest_SearchConfig_BoostSpecs.ProtoReflect.Descriptor instead. +func (*SearchKnowledgeRequest_SearchConfig_BoostSpecs) Descriptor() ([]byte, []int) { + return file_google_cloud_dialogflow_v2beta1_conversation_proto_rawDescGZIP(), []int{18, 0, 0} +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs) GetDataStores() []string { if x != nil { - return x.Snippet + return x.DataStores + } + return nil +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs) GetSpec() []*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec { + if x != nil { + return x.Spec + } + return nil +} + +// Filter specification for data store queries. +type SearchKnowledgeRequest_SearchConfig_FilterSpecs struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. The data store where the filter configuration is applied. + // Full resource name of data store, such as + // projects/{project}/locations/{location}/collections/{collectionId}/ + // dataStores/{dataStoreId}. + DataStores []string `protobuf:"bytes,1,rep,name=data_stores,json=dataStores,proto3" json:"data_stores,omitempty"` + // Optional. The filter expression to be applied. + // Expression syntax is documented at + // https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata#filter-expression-syntax + Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` +} + +func (x *SearchKnowledgeRequest_SearchConfig_FilterSpecs) Reset() { + *x = SearchKnowledgeRequest_SearchConfig_FilterSpecs{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchKnowledgeRequest_SearchConfig_FilterSpecs) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchKnowledgeRequest_SearchConfig_FilterSpecs) ProtoMessage() {} + +func (x *SearchKnowledgeRequest_SearchConfig_FilterSpecs) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchKnowledgeRequest_SearchConfig_FilterSpecs.ProtoReflect.Descriptor instead. +func (*SearchKnowledgeRequest_SearchConfig_FilterSpecs) Descriptor() ([]byte, []int) { + return file_google_cloud_dialogflow_v2beta1_conversation_proto_rawDescGZIP(), []int{18, 0, 1} +} + +func (x *SearchKnowledgeRequest_SearchConfig_FilterSpecs) GetDataStores() []string { + if x != nil { + return x.DataStores + } + return nil +} + +func (x *SearchKnowledgeRequest_SearchConfig_FilterSpecs) GetFilter() string { + if x != nil { + return x.Filter } return "" } -var File_google_cloud_dialogflow_v2beta1_conversation_proto protoreflect.FileDescriptor +// Boost specification to boost certain documents. +// A copy of google.cloud.discoveryengine.v1main.BoostSpec, field +// documentation is available at +// https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1alpha/BoostSpec +type SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -var file_google_cloud_dialogflow_v2beta1_conversation_proto_rawDesc = []byte{ - 0x0a, 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x64, - 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, - 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, - 0x77, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2f, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2f, 0x76, 0x32, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x31, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2f, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2f, 0x76, - 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, - 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, - 0x77, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd3, 0x07, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x03, 0xe0, 0x41, 0x08, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x6a, 0x0a, 0x0f, 0x6c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, - 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, - 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, - 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, - 0x03, 0x52, 0x0e, 0x6c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x12, 0x68, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x35, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2f, 0x0a, 0x2d, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, - 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x60, 0x0a, 0x0c, 0x70, - 0x68, 0x6f, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x03, - 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x73, 0x0a, - 0x12, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, - 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, - 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x11, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x51, - 0x0a, 0x0e, 0x4c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x1f, 0x0a, 0x1b, 0x4c, 0x49, 0x46, 0x45, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, - 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, - 0x02, 0x22, 0x68, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, - 0x53, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x56, 0x49, - 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x47, - 0x45, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x48, 0x55, 0x4d, 0x41, 0x4e, 0x5f, 0x41, 0x53, 0x53, - 0x49, 0x53, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x10, 0x02, 0x3a, 0xc0, 0x01, 0xea, 0x41, - 0xbc, 0x01, 0x0a, 0x26, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x12, 0x44, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x7d, 0x2a, 0x0d, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x32, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x41, - 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x68, - 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0c, 0x70, 0x68, 0x6f, - 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x22, 0xe9, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x46, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, 0x12, 0x26, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, - 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x56, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, - 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x2c, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x63, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xc5, 0x01, - 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, - 0x41, 0x28, 0x12, 0x26, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, - 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, - 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x98, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, - 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, - 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x22, 0x5c, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, - 0x0a, 0x26, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x61, - 0x0a, 0x1b, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, - 0xfa, 0x41, 0x28, 0x0a, 0x26, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0xa7, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, - 0x41, 0x28, 0x0a, 0x26, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x03, 0xe0, - 0x41, 0x02, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xbc, 0x01, 0x0a, 0x1a, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, - 0x41, 0x28, 0x0a, 0x26, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x12, 0x56, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, - 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0x63, 0x0a, 0x1b, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x08, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, - 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, - 0xbb, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x12, - 0x21, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x84, 0x01, - 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, - 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, - 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xde, 0x02, 0x0a, 0x21, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, - 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x52, 0x0a, 0x0c, 0x63, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, 0x0a, 0x26, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, - 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x50, - 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x23, 0x0a, 0x21, - 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + // Optional. Condition boost specifications. If a document matches + // multiple conditions in the specifictions, boost scores from these + // specifications are all applied and combined in a non-linear way. + // Maximum number of specifications is 20. + ConditionBoostSpecs []*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec `protobuf:"bytes,1,rep,name=condition_boost_specs,json=conditionBoostSpecs,proto3" json:"condition_boost_specs,omitempty"` +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec) Reset() { + *x = SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec) ProtoMessage() {} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec.ProtoReflect.Descriptor instead. +func (*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec) Descriptor() ([]byte, []int) { + return file_google_cloud_dialogflow_v2beta1_conversation_proto_rawDescGZIP(), []int{18, 0, 0, 0} +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec) GetConditionBoostSpecs() []*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec { + if x != nil { + return x.ConditionBoostSpecs + } + return nil +} + +// Boost applies to documents which match a condition. +type SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. An expression which specifies a boost condition. The + // syntax and supported fields are the same as a filter expression. + // Examples: + // + // * To boost documents with document ID "doc_1" or "doc_2", and + // color + // + // "Red" or "Blue": + // * (id: ANY("doc_1", "doc_2")) AND (color: ANY("Red","Blue")) + Condition string `protobuf:"bytes,1,opt,name=condition,proto3" json:"condition,omitempty"` + // Optional. Strength of the condition boost, which should be in [-1, + // 1]. Negative boost means demotion. Default is 0.0. + // + // Setting to 1.0 gives the document a big promotion. However, it does + // not necessarily mean that the boosted document will be the top + // result at all times, nor that other documents will be excluded. + // Results could still be shown even when none of them matches the + // condition. And results that are significantly more relevant to the + // search query can still trump your heavily favored but irrelevant + // documents. + // + // Setting to -1.0 gives the document a big demotion. However, results + // that are deeply relevant might still be shown. The document will + // have an upstream battle to get a fairly high ranking, but it is not + // blocked out completely. + // + // Setting to 0.0 means no boost applied. The boosting condition is + // ignored. + Boost float32 `protobuf:"fixed32,2,opt,name=boost,proto3" json:"boost,omitempty"` + // Optional. Complex specification for custom ranking based on + // customer defined attribute value. + BoostControlSpec *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec `protobuf:"bytes,4,opt,name=boost_control_spec,json=boostControlSpec,proto3" json:"boost_control_spec,omitempty"` +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec) Reset() { + *x = SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec) ProtoMessage() {} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec.ProtoReflect.Descriptor instead. +func (*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec) Descriptor() ([]byte, []int) { + return file_google_cloud_dialogflow_v2beta1_conversation_proto_rawDescGZIP(), []int{18, 0, 0, 0, 0} +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec) GetCondition() string { + if x != nil { + return x.Condition + } + return "" +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec) GetBoost() float32 { + if x != nil { + return x.Boost + } + return 0 +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec) GetBoostControlSpec() *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec { + if x != nil { + return x.BoostControlSpec + } + return nil +} + +// Specification for custom ranking based on customer specified +// attribute +// value. It provides more controls for customized ranking than the +// simple (condition, boost) combination above. +type SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Optional. The name of the field whose value will be used to + // determine the boost amount. + FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` + // Optional. The attribute type to be used to determine the boost + // amount. The attribute value can be derived from the field value + // of the specified field_name. In the case of numerical it is + // straightforward i.e. attribute_value = numerical_field_value. In + // the case of freshness however, attribute_value = (time.now() - + // datetime_field_value). + AttributeType SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType `protobuf:"varint,2,opt,name=attribute_type,json=attributeType,proto3,enum=google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType" json:"attribute_type,omitempty"` + // Optional. The interpolation type to be applied to connect the + // control points listed below. + InterpolationType SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType `protobuf:"varint,3,opt,name=interpolation_type,json=interpolationType,proto3,enum=google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType" json:"interpolation_type,omitempty"` + // Optional. The control points used to define the curve. The + // monotonic function (defined through the interpolation_type above) + // passes through the control points listed here. + ControlPoints []*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint `protobuf:"bytes,4,rep,name=control_points,json=controlPoints,proto3" json:"control_points,omitempty"` +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec) Reset() { + *x = SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec) ProtoMessage() { +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec.ProtoReflect.Descriptor instead. +func (*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec) Descriptor() ([]byte, []int) { + return file_google_cloud_dialogflow_v2beta1_conversation_proto_rawDescGZIP(), []int{18, 0, 0, 0, 0, 0} +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec) GetFieldName() string { + if x != nil { + return x.FieldName + } + return "" +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec) GetAttributeType() SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType { + if x != nil { + return x.AttributeType + } + return SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_ATTRIBUTE_TYPE_UNSPECIFIED +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec) GetInterpolationType() SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType { + if x != nil { + return x.InterpolationType + } + return SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_INTERPOLATION_TYPE_UNSPECIFIED +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec) GetControlPoints() []*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint { + if x != nil { + return x.ControlPoints + } + return nil +} + +// The control points used to define the curve. The curve defined +// through these control points can only be monotonically increasing +// or decreasing(constant values are acceptable). +type SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint) Reset() { + *x = SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint) ProtoMessage() { +} + +func (x *SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint.ProtoReflect.Descriptor instead. +func (*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint) Descriptor() ([]byte, []int) { + return file_google_cloud_dialogflow_v2beta1_conversation_proto_rawDescGZIP(), []int{18, 0, 0, 0, 0, 0, 0} +} + +// The sources of the answers. +type SearchKnowledgeAnswer_AnswerSource struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The title of the article. + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + // The URI of the article. + Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"` + // The relevant snippet of the article. + Snippet string `protobuf:"bytes,3,opt,name=snippet,proto3" json:"snippet,omitempty"` + // Metadata associated with the article. + Metadata *structpb.Struct `protobuf:"bytes,5,opt,name=metadata,proto3" json:"metadata,omitempty"` +} + +func (x *SearchKnowledgeAnswer_AnswerSource) Reset() { + *x = SearchKnowledgeAnswer_AnswerSource{} + if protoimpl.UnsafeEnabled { + mi := &file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SearchKnowledgeAnswer_AnswerSource) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SearchKnowledgeAnswer_AnswerSource) ProtoMessage() {} + +func (x *SearchKnowledgeAnswer_AnswerSource) ProtoReflect() protoreflect.Message { + mi := &file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SearchKnowledgeAnswer_AnswerSource.ProtoReflect.Descriptor instead. +func (*SearchKnowledgeAnswer_AnswerSource) Descriptor() ([]byte, []int) { + return file_google_cloud_dialogflow_v2beta1_conversation_proto_rawDescGZIP(), []int{20, 0} +} + +func (x *SearchKnowledgeAnswer_AnswerSource) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *SearchKnowledgeAnswer_AnswerSource) GetUri() string { + if x != nil { + return x.Uri + } + return "" +} + +func (x *SearchKnowledgeAnswer_AnswerSource) GetSnippet() string { + if x != nil { + return x.Snippet + } + return "" +} + +func (x *SearchKnowledgeAnswer_AnswerSource) GetMetadata() *structpb.Struct { + if x != nil { + return x.Metadata + } + return nil +} + +var File_google_cloud_dialogflow_v2beta1_conversation_proto protoreflect.FileDescriptor + +var file_google_cloud_dialogflow_v2beta1_conversation_proto_rawDesc = []byte{ + 0x0a, 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x64, + 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, + 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, + 0x77, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2f, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2f, 0x76, 0x32, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x31, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2f, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2f, 0x76, + 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, + 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, + 0x77, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd3, 0x07, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe0, 0x41, 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x6a, 0x0a, 0x0f, 0x6c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, + 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x66, 0x65, + 0x63, 0x79, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x0e, 0x6c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x68, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x35, 0xe0, + 0x41, 0x02, 0xfa, 0x41, 0x2f, 0x0a, 0x2d, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, + 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x60, 0x0a, 0x0c, 0x70, 0x68, 0x6f, + 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, + 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x68, + 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0b, + 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x73, 0x0a, 0x12, 0x63, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x67, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, + 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x11, 0x63, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x67, 0x65, + 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x51, 0x0a, 0x0e, + 0x4c, 0x69, 0x66, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, + 0x0a, 0x1b, 0x4c, 0x49, 0x46, 0x45, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, + 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x02, 0x22, + 0x68, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x4f, 0x4e, 0x56, 0x45, 0x52, 0x53, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x56, 0x49, 0x52, 0x54, + 0x55, 0x41, 0x4c, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x10, + 0x01, 0x12, 0x16, 0x0a, 0x12, 0x48, 0x55, 0x4d, 0x41, 0x4e, 0x5f, 0x41, 0x53, 0x53, 0x49, 0x53, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x10, 0x02, 0x3a, 0xc0, 0x01, 0xea, 0x41, 0xbc, 0x01, + 0x0a, 0x26, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x12, 0x44, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2a, + 0x0d, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x32, 0x0c, + 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x41, 0x0a, 0x17, + 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x68, 0x6f, 0x6e, + 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0c, 0x70, 0x68, 0x6f, 0x6e, 0x65, + 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x03, 0x52, 0x0b, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, + 0xe9, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, + 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, + 0x41, 0x02, 0xfa, 0x41, 0x28, 0x12, 0x26, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, + 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x56, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, + 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, + 0x0f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xc5, 0x01, 0x0a, 0x18, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, + 0x12, 0x26, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x22, 0x98, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x53, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, + 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x5c, + 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, 0x0a, 0x26, + 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x61, 0x0a, 0x1b, + 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, + 0x28, 0x0a, 0x26, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, + 0xa7, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, + 0x0a, 0x26, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x12, 0x47, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xbc, 0x01, 0x0a, 0x1a, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, + 0x0a, 0x26, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x12, 0x56, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, + 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0x63, 0x0a, 0x1b, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, + 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x22, 0xbb, 0x01, + 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x12, 0x21, 0x64, + 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x06, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x84, 0x01, 0x0a, 0x14, + 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, + 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, + 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x22, 0xde, 0x02, 0x0a, 0x21, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x52, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, + 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, 0x0a, 0x26, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, + 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, + 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x0e, + 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x64, 0x69, + 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, + 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x26, + 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x6b, 0x0a, 0x13, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x11, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x22, 0xeb, 0x04, 0x0a, 0x22, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x43, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x07, 0x73, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, + 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, + 0x67, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x12, 0x4d, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xfa, 0x41, 0x23, 0x0a, 0x21, + 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x26, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x63, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x6b, 0x0a, 0x13, 0x61, 0x73, 0x73, 0x69, - 0x73, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, - 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x52, 0x11, 0x61, 0x73, 0x73, 0x69, 0x73, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xeb, 0x04, 0x0a, 0x22, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, - 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, - 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x07, - 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, - 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x12, 0x4d, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x26, 0xfa, 0x41, 0x23, - 0x0a, 0x21, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0xeb, 0x02, 0x0a, 0x07, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x82, 0x01, 0x0a, 0x0d, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x73, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x5d, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, - 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x53, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x74, 0x65, - 0x78, 0x74, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x50, 0x0a, 0x0d, 0x61, 0x6e, - 0x73, 0x77, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x2b, 0xfa, 0x41, 0x28, 0x0a, 0x26, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, + 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x53, + 0x69, 0x7a, 0x65, 0x1a, 0xeb, 0x02, 0x0a, 0x07, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x65, 0x78, 0x74, 0x12, 0x82, 0x01, 0x0a, 0x0d, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x5d, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, + 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, + 0x67, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x53, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x74, 0x65, 0x78, 0x74, + 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x50, 0x0a, 0x0d, 0x61, 0x6e, 0x73, 0x77, + 0x65, 0x72, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x2b, 0xfa, 0x41, 0x28, 0x0a, 0x26, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0c, 0x61, 0x6e, + 0x73, 0x77, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x62, 0x61, + 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x62, 0x61, 0x73, 0x65, + 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x1a, 0x3f, 0x0a, 0x11, 0x54, 0x65, 0x78, 0x74, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0xc9, 0x04, 0x0a, 0x1f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x90, 0x01, 0x0a, 0x16, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6c, + 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x54, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, + 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x61, 0x6c, + 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x15, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6c, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, + 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x03, 0xe0, 0x41, + 0x02, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x50, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, + 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x0c, - 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x34, 0x0a, 0x16, + 0x6d, 0x2f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0xa3, 0x01, 0x0a, 0x13, 0x4d, 0x69, 0x6e, 0x69, + 0x6d, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, + 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x93, 0x04, + 0x0a, 0x20, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6c, + 0x65, 0x73, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x63, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x07, + 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x4d, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x26, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x97, 0x02, 0x0a, 0x07, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x80, 0x01, 0x0a, 0x0d, 0x74, 0x65, + 0x78, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x5b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x54, 0x65, 0x78, + 0x74, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, + 0x74, 0x65, 0x78, 0x74, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x62, 0x61, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x3f, 0x0a, 0x11, 0x54, 0x65, 0x78, 0x74, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0xc9, 0x04, 0x0a, 0x1f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x90, 0x01, 0x0a, 0x16, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x6c, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x54, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, - 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x69, 0x6e, 0x69, 0x6d, - 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x15, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6c, 0x0a, 0x14, 0x63, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x02, 0x38, 0x01, 0x22, 0xbb, 0x03, 0x0a, 0x22, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, + 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4a, 0x0a, + 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x09, + 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x27, 0x0a, 0x0e, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x0d, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x6c, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x13, 0x63, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x12, 0x59, 0x0a, 0x0e, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, - 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x50, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65, - 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x74, 0x72, + 0x69, 0x67, 0x67, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x14, 0x0a, 0x12, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x22, 0x93, 0x01, 0x0a, 0x23, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x14, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, + 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x6f, 0x72, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x13, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x75, 0x67, + 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd3, 0x14, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, + 0x45, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, + 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2e, 0x54, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x68, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, + 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x35, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2f, 0x0a, 0x2d, 0x64, 0x69, + 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x13, 0x63, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x12, 0x22, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x52, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x01, 0xfa, + 0x41, 0x28, 0x0a, 0x26, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65, + 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x10, 0x6d, 0x61, - 0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0xa3, 0x01, 0x0a, 0x13, 0x4d, 0x69, - 0x6e, 0x69, 0x6d, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x03, 0xe0, - 0x41, 0x02, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, - 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x22, - 0x93, 0x04, 0x0a, 0x20, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, - 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, - 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x4d, 0x0a, 0x0e, 0x6c, 0x61, 0x74, - 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x26, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, - 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x73, - 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x97, 0x02, 0x0a, 0x07, - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x80, 0x01, 0x0a, 0x0d, - 0x74, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x5b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x54, - 0x65, 0x78, 0x74, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x0c, 0x74, 0x65, 0x78, 0x74, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, - 0x0a, 0x16, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, - 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x3f, 0x0a, 0x11, 0x54, 0x65, 0x78, 0x74, 0x53, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbb, 0x03, 0x0a, 0x22, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x67, 0x67, 0x65, - 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, - 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, - 0x4a, 0x0a, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x00, - 0x52, 0x09, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x27, 0x0a, 0x0e, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x6c, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x13, 0x63, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x12, 0x59, 0x0a, 0x0e, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, - 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, - 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x14, 0x0a, - 0x12, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x23, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x14, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, - 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x03, 0xe0, 0x41, 0x02, 0x52, 0x13, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x53, - 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb0, 0x03, 0x0a, 0x16, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x12, 0x45, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x6b, 0x0a, 0x0c, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x68, 0x0a, 0x14, 0x63, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x35, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2f, 0x0a, 0x2d, - 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x13, 0x63, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x73, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x52, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, - 0x01, 0xfa, 0x41, 0x28, 0x0a, 0x26, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x63, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x0e, 0x6c, 0x61, - 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x64, 0x69, 0x61, 0x6c, - 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x6c, - 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x94, 0x01, 0x0a, - 0x17, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x07, 0x61, 0x6e, 0x73, 0x77, - 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x61, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, + 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x65, 0x6e, 0x64, 0x5f, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x0f, 0x65, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x6e, 0x0a, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, + 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x0c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x26, 0x0a, 0x0c, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x65, 0x78, + 0x61, 0x63, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x1a, 0xfe, 0x0d, 0x0a, 0x0c, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x75, 0x0a, 0x0b, 0x62, 0x6f, + 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x4f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, + 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x73, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0a, 0x62, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, + 0x73, 0x12, 0x78, 0x0a, 0x0c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, + 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x73, 0x1a, 0xaa, 0x0b, 0x0a, 0x0a, + 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x73, 0x12, 0x51, 0x0a, 0x0b, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x30, 0xe0, 0x41, 0x01, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, + 0x65, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x72, 0x0a, + 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x59, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, + 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x42, 0x6f, 0x6f, + 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x04, 0x73, 0x70, 0x65, + 0x63, 0x1a, 0xd4, 0x09, 0x0a, 0x09, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, + 0xa5, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6f, + 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x6c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, + 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x73, + 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, + 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x73, 0x1a, 0x9e, 0x08, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x21, + 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x19, 0x0a, 0x05, 0x62, 0x6f, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x62, 0x6f, 0x6f, 0x73, 0x74, 0x12, 0xb0, 0x01, 0x0a, + 0x12, 0x62, 0x6f, 0x6f, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x73, + 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x7d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x41, 0x6e, 0x73, 0x77, 0x65, - 0x72, 0x52, 0x07, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, - 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x22, 0xc6, 0x03, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, - 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x16, 0x0a, - 0x06, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, - 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x62, 0x0a, 0x0b, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, + 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, + 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, + 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x62, + 0x6f, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x1a, + 0x96, 0x06, 0x0a, 0x10, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x53, 0x70, 0x65, 0x63, 0x12, 0x22, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0xb8, 0x01, 0x0a, 0x0e, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x8b, 0x01, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, + 0x65, 0x64, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, + 0x65, 0x63, 0x73, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, + 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x70, 0x65, + 0x63, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x12, 0xc4, 0x01, 0x0a, 0x12, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x6f, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x8f, 0x01, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, + 0x64, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, + 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, + 0x63, 0x73, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, + 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x70, 0x65, 0x63, + 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x6f, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0xb7, 0x01, 0x0a, 0x0e, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x8a, 0x01, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, + 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, 0x6f, + 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, + 0x53, 0x70, 0x65, 0x63, 0x73, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, + 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, + 0x65, 0x63, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, + 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x1a, 0x0e, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x4d, 0x0a, 0x0d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, + 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x55, 0x4d, 0x45, 0x52, 0x49, 0x43, + 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x52, 0x45, 0x53, 0x48, 0x4e, 0x45, 0x53, + 0x53, 0x10, 0x02, 0x22, 0x43, 0x0a, 0x11, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x6f, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x49, 0x4e, 0x54, 0x45, + 0x52, 0x50, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, + 0x4c, 0x49, 0x4e, 0x45, 0x41, 0x52, 0x10, 0x01, 0x1a, 0x50, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x73, 0x12, 0x24, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, + 0x01, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x1b, 0x0a, + 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x51, 0x0a, 0x0b, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x51, 0x55, 0x45, + 0x52, 0x59, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x47, 0x45, 0x4e, 0x54, + 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x55, 0x47, 0x47, + 0x45, 0x53, 0x54, 0x45, 0x44, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x10, 0x02, 0x22, 0x94, 0x01, + 0x0a, 0x17, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x07, 0x61, 0x6e, 0x73, + 0x77, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x41, 0x6e, 0x73, 0x77, - 0x65, 0x72, 0x2e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x61, - 0x6e, 0x73, 0x77, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x6a, 0x0a, 0x0e, 0x61, 0x6e, 0x73, - 0x77, 0x65, 0x72, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, - 0x64, 0x67, 0x65, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x2e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0d, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x5f, - 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6e, - 0x73, 0x77, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x1a, 0x50, 0x0a, 0x0c, 0x41, 0x6e, - 0x73, 0x77, 0x65, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, - 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, - 0x72, 0x69, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x22, 0x4e, 0x0a, 0x0a, - 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x4e, - 0x53, 0x57, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x46, 0x41, 0x51, 0x10, 0x01, - 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, - 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x03, 0x32, 0xd6, 0x19, 0x0a, - 0x0d, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xa1, - 0x02, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, - 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x9f, 0x01, 0xda, 0x41, 0x13, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x63, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x82, 0x01, - 0x3a, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5a, 0x46, - 0x3a, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x36, - 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2a, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x81, 0x02, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x72, 0x52, 0x07, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x72, + 0x65, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x22, 0xfc, 0x03, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, + 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x16, + 0x0a, 0x06, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x62, 0x0a, 0x0b, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x41, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, + 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, + 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x41, 0x6e, 0x73, + 0x77, 0x65, 0x72, 0x2e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, + 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x6a, 0x0a, 0x0e, 0x61, 0x6e, + 0x73, 0x77, 0x65, 0x72, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, + 0x65, 0x64, 0x67, 0x65, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x2e, 0x41, 0x6e, 0x73, 0x77, 0x65, + 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0d, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, + 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, + 0x6e, 0x73, 0x77, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x1a, 0x85, 0x01, 0x0a, 0x0c, + 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x69, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x12, 0x33, + 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x22, 0x4e, 0x0a, 0x0a, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x4e, 0x53, 0x57, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x07, + 0x0a, 0x03, 0x46, 0x41, 0x51, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x45, 0x4e, 0x45, 0x52, + 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x4e, 0x54, 0x45, 0x4e, + 0x54, 0x10, 0x03, 0x32, 0xd6, 0x19, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xa1, 0x02, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, + 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, - 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x75, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x66, - 0x5a, 0x38, 0x12, 0x36, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x2f, 0x76, 0x32, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xee, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, + 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9f, 0x01, 0xda, 0x41, 0x13, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x2c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x82, 0x01, 0x3a, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5a, 0x46, 0x3a, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x36, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, + 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, + 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2a, 0x2f, + 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x81, 0x02, 0x0a, 0x11, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, + 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, - 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x73, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x66, 0x5a, 0x38, 0x12, 0x36, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x2a, 0x2f, 0x76, 0x32, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x91, 0x02, 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x70, - 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, - 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8b, 0x01, - 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7e, 0x3a, 0x01, 0x2a, - 0x5a, 0x44, 0x3a, 0x01, 0x2a, 0x22, 0x3f, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, - 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, - 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x63, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x22, 0x33, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x75, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x66, 0x5a, 0x38, 0x12, 0x36, 0x2f, 0x76, 0x32, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x2a, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, + 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xee, 0x01, + 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, + 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, + 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x73, 0xda, 0x41, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x66, 0x5a, 0x38, 0x12, 0x36, 0x2f, 0x76, 0x32, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x2a, 0x7d, 0x3a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0xc6, 0x02, 0x0a, 0x13, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x73, 0x12, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, - 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb3, - 0x01, 0xda, 0x41, 0x0f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9a, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x52, 0x3a, - 0x01, 0x2a, 0x22, 0x4d, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x73, 0x3a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x22, 0x41, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x63, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x3a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x12, 0x89, 0x02, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, + 0x2a, 0x7d, 0x12, 0x2a, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, + 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x91, + 0x02, 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, + 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, + 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, - 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, - 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x8b, 0x01, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x7c, 0x5a, 0x43, 0x12, 0x41, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, - 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, - 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x35, 0x2f, 0x76, 0x32, 0x62, 0x65, + 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8b, 0x01, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x7e, 0x3a, 0x01, 0x2a, 0x5a, 0x44, 0x3a, 0x01, 0x2a, 0x22, 0x3f, 0x2f, 0x76, + 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x22, 0x33, 0x2f, + 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, + 0x74, 0x65, 0x12, 0xc6, 0x02, 0x0a, 0x13, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, + 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, + 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, + 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb3, 0x01, 0xda, 0x41, 0x0f, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x2c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x9a, + 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x52, 0x3a, 0x01, 0x2a, 0x22, 0x4d, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, + 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x3a, 0x62, 0x61, 0x74, + 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x22, 0x41, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x3a, + 0x62, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x89, 0x02, 0x0a, 0x0c, + 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, + 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8b, 0x01, 0xda, 0x41, 0x06, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x7c, 0x5a, 0x43, 0x12, 0x41, 0x2f, + 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, - 0x12, 0x88, 0x03, 0x0a, 0x1a, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, - 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, - 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe0, 0x01, 0xda, 0x41, 0x0c, 0x63, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xca, - 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x6a, 0x3a, 0x01, 0x2a, 0x22, 0x65, 0x2f, 0x76, 0x32, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, - 0x22, 0x59, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x3a, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0xf1, 0x02, 0x0a, 0x18, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, - 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, - 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x67, 0x6f, 0x6f, + 0x12, 0x35, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x88, 0x03, 0x0a, 0x1a, 0x53, 0x75, 0x67, 0x67, + 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, + 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, + 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, - 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xcf, 0x01, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xc8, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x69, 0x3a, 0x01, 0x2a, 0x22, - 0x64, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x6c, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, - 0x2f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x58, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, - 0x7b, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x75, 0x67, 0x67, 0x65, - 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, + 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x67, + 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xe0, 0x01, 0xda, 0x41, 0x0c, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xca, 0x01, 0x3a, 0x01, 0x2a, 0x5a, 0x6a, 0x3a, 0x01, 0x2a, + 0x22, 0x65, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, + 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, + 0x2f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x73, 0x75, 0x67, + 0x67, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x59, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x75, 0x67, 0x67, + 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x43, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x12, 0xf1, 0x02, 0x0a, 0x18, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, - 0xfa, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, + 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6c, - 0x65, 0x73, 0x73, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, - 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x4a, 0x3a, 0x01, 0x2a, 0x22, 0x45, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, - 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, - 0x69, 0x6f, 0x6e, 0x3a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x12, 0xcc, 0x03, 0x0a, - 0x0f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, - 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x65, 0x73, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xcf, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xc8, 0x01, 0x3a, 0x01, + 0x2a, 0x5a, 0x69, 0x3a, 0x01, 0x2a, 0x22, 0x64, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x2f, 0x7b, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x3a, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x58, 0x2f, 0x76, + 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, + 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, + 0x7d, 0x2f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0xfa, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x67, 0x67, + 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, + 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, + 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x53, + 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x3a, 0x01, 0x2a, 0x22, 0x45, 0x2f, 0x76, + 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6c, 0x65, 0x73, 0x73, + 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x12, 0xcc, 0x03, 0x0a, 0x0f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, + 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, + 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, - 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, - 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0xc5, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xbe, 0x02, 0x3a, 0x01, 0x2a, - 0x5a, 0x49, 0x3a, 0x01, 0x2a, 0x22, 0x44, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, - 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, - 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x5a, 0x53, 0x3a, 0x01, 0x2a, - 0x22, 0x4e, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, - 0x5a, 0x5f, 0x3a, 0x01, 0x2a, 0x22, 0x5a, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, - 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, - 0x65, 0x22, 0x38, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, - 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x73, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x1a, 0x78, 0xca, 0x41, 0x19, - 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x59, 0x68, 0x74, 0x74, 0x70, - 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, - 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x64, 0x69, 0x61, 0x6c, 0x6f, - 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0xa9, 0x01, 0x0a, 0x23, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, + 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc5, 0x02, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0xbe, 0x02, 0x3a, 0x01, 0x2a, 0x5a, 0x49, 0x3a, 0x01, 0x2a, 0x22, 0x44, 0x2f, 0x76, + 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, + 0x67, 0x65, 0x5a, 0x53, 0x3a, 0x01, 0x2a, 0x22, 0x4e, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3d, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x75, 0x67, 0x67, + 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, + 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x5a, 0x5f, 0x3a, 0x01, 0x2a, 0x22, 0x5a, 0x2f, 0x76, + 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x75, 0x67, + 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, + 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x22, 0x38, 0x2f, 0x76, 0x32, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, + 0x67, 0x65, 0x1a, 0x78, 0xca, 0x41, 0x19, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, + 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0xd2, 0x41, 0x59, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, + 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, + 0x68, 0x2f, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0xef, 0x02, 0xea, + 0x41, 0xc5, 0x01, 0x0a, 0x28, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, + 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x58, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, + 0x64, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, 0x61, + 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x7d, 0x12, 0x3f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, + 0x2f, 0x64, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x7d, 0x0a, 0x23, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x11, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, @@ -2700,10 +3552,10 @@ var file_google_cloud_dialogflow_v2beta1_conversation_proto_rawDesc = []byte{ 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x32, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x70, 0x62, 0x3b, 0x64, 0x69, 0x61, 0x6c, 0x6f, - 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x70, 0x62, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x02, 0x44, 0x46, 0xaa, - 0x02, 0x1f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, - 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x56, 0x32, 0x42, 0x65, 0x74, 0x61, - 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x70, 0x62, 0xa2, 0x02, 0x02, 0x44, 0x46, 0xaa, 0x02, 0x1f, 0x47, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x69, 0x61, 0x6c, + 0x6f, 0x67, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x56, 0x32, 0x42, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2718,102 +3570,125 @@ func file_google_cloud_dialogflow_v2beta1_conversation_proto_rawDescGZIP() []byt return file_google_cloud_dialogflow_v2beta1_conversation_proto_rawDescData } -var file_google_cloud_dialogflow_v2beta1_conversation_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes = make([]protoimpl.MessageInfo, 27) +var file_google_cloud_dialogflow_v2beta1_conversation_proto_enumTypes = make([]protoimpl.EnumInfo, 6) +var file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes = make([]protoimpl.MessageInfo, 34) var file_google_cloud_dialogflow_v2beta1_conversation_proto_goTypes = []any{ - (Conversation_LifecycleState)(0), // 0: google.cloud.dialogflow.v2beta1.Conversation.LifecycleState - (Conversation_ConversationStage)(0), // 1: google.cloud.dialogflow.v2beta1.Conversation.ConversationStage - (SearchKnowledgeAnswer_AnswerType)(0), // 2: google.cloud.dialogflow.v2beta1.SearchKnowledgeAnswer.AnswerType - (*Conversation)(nil), // 3: google.cloud.dialogflow.v2beta1.Conversation - (*ConversationPhoneNumber)(nil), // 4: google.cloud.dialogflow.v2beta1.ConversationPhoneNumber - (*CreateConversationRequest)(nil), // 5: google.cloud.dialogflow.v2beta1.CreateConversationRequest - (*ListConversationsRequest)(nil), // 6: google.cloud.dialogflow.v2beta1.ListConversationsRequest - (*ListConversationsResponse)(nil), // 7: google.cloud.dialogflow.v2beta1.ListConversationsResponse - (*GetConversationRequest)(nil), // 8: google.cloud.dialogflow.v2beta1.GetConversationRequest - (*CompleteConversationRequest)(nil), // 9: google.cloud.dialogflow.v2beta1.CompleteConversationRequest - (*CreateMessageRequest)(nil), // 10: google.cloud.dialogflow.v2beta1.CreateMessageRequest - (*BatchCreateMessagesRequest)(nil), // 11: google.cloud.dialogflow.v2beta1.BatchCreateMessagesRequest - (*BatchCreateMessagesResponse)(nil), // 12: google.cloud.dialogflow.v2beta1.BatchCreateMessagesResponse - (*ListMessagesRequest)(nil), // 13: google.cloud.dialogflow.v2beta1.ListMessagesRequest - (*ListMessagesResponse)(nil), // 14: google.cloud.dialogflow.v2beta1.ListMessagesResponse - (*SuggestConversationSummaryRequest)(nil), // 15: google.cloud.dialogflow.v2beta1.SuggestConversationSummaryRequest - (*SuggestConversationSummaryResponse)(nil), // 16: google.cloud.dialogflow.v2beta1.SuggestConversationSummaryResponse - (*GenerateStatelessSummaryRequest)(nil), // 17: google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryRequest - (*GenerateStatelessSummaryResponse)(nil), // 18: google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryResponse - (*GenerateStatelessSuggestionRequest)(nil), // 19: google.cloud.dialogflow.v2beta1.GenerateStatelessSuggestionRequest - (*GenerateStatelessSuggestionResponse)(nil), // 20: google.cloud.dialogflow.v2beta1.GenerateStatelessSuggestionResponse - (*SearchKnowledgeRequest)(nil), // 21: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest - (*SearchKnowledgeResponse)(nil), // 22: google.cloud.dialogflow.v2beta1.SearchKnowledgeResponse - (*SearchKnowledgeAnswer)(nil), // 23: google.cloud.dialogflow.v2beta1.SearchKnowledgeAnswer - (*SuggestConversationSummaryResponse_Summary)(nil), // 24: google.cloud.dialogflow.v2beta1.SuggestConversationSummaryResponse.Summary - nil, // 25: google.cloud.dialogflow.v2beta1.SuggestConversationSummaryResponse.Summary.TextSectionsEntry - (*GenerateStatelessSummaryRequest_MinimalConversation)(nil), // 26: google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryRequest.MinimalConversation - (*GenerateStatelessSummaryResponse_Summary)(nil), // 27: google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryResponse.Summary - nil, // 28: google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryResponse.Summary.TextSectionsEntry - (*SearchKnowledgeAnswer_AnswerSource)(nil), // 29: google.cloud.dialogflow.v2beta1.SearchKnowledgeAnswer.AnswerSource - (*timestamppb.Timestamp)(nil), // 30: google.protobuf.Timestamp - (*Message)(nil), // 31: google.cloud.dialogflow.v2beta1.Message - (*AssistQueryParameters)(nil), // 32: google.cloud.dialogflow.v2beta1.AssistQueryParameters - (*ConversationProfile)(nil), // 33: google.cloud.dialogflow.v2beta1.ConversationProfile - (*Generator)(nil), // 34: google.cloud.dialogflow.v2beta1.Generator - (*ConversationContext)(nil), // 35: google.cloud.dialogflow.v2beta1.ConversationContext - (TriggerEvent)(0), // 36: google.cloud.dialogflow.v2beta1.TriggerEvent - (*GeneratorSuggestion)(nil), // 37: google.cloud.dialogflow.v2beta1.GeneratorSuggestion - (*TextInput)(nil), // 38: google.cloud.dialogflow.v2beta1.TextInput + (Conversation_LifecycleState)(0), // 0: google.cloud.dialogflow.v2beta1.Conversation.LifecycleState + (Conversation_ConversationStage)(0), // 1: google.cloud.dialogflow.v2beta1.Conversation.ConversationStage + (SearchKnowledgeRequest_QuerySource)(0), // 2: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.QuerySource + (SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType)(0), // 3: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec.BoostControlSpec.AttributeType + (SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType)(0), // 4: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec.BoostControlSpec.InterpolationType + (SearchKnowledgeAnswer_AnswerType)(0), // 5: google.cloud.dialogflow.v2beta1.SearchKnowledgeAnswer.AnswerType + (*Conversation)(nil), // 6: google.cloud.dialogflow.v2beta1.Conversation + (*ConversationPhoneNumber)(nil), // 7: google.cloud.dialogflow.v2beta1.ConversationPhoneNumber + (*CreateConversationRequest)(nil), // 8: google.cloud.dialogflow.v2beta1.CreateConversationRequest + (*ListConversationsRequest)(nil), // 9: google.cloud.dialogflow.v2beta1.ListConversationsRequest + (*ListConversationsResponse)(nil), // 10: google.cloud.dialogflow.v2beta1.ListConversationsResponse + (*GetConversationRequest)(nil), // 11: google.cloud.dialogflow.v2beta1.GetConversationRequest + (*CompleteConversationRequest)(nil), // 12: google.cloud.dialogflow.v2beta1.CompleteConversationRequest + (*CreateMessageRequest)(nil), // 13: google.cloud.dialogflow.v2beta1.CreateMessageRequest + (*BatchCreateMessagesRequest)(nil), // 14: google.cloud.dialogflow.v2beta1.BatchCreateMessagesRequest + (*BatchCreateMessagesResponse)(nil), // 15: google.cloud.dialogflow.v2beta1.BatchCreateMessagesResponse + (*ListMessagesRequest)(nil), // 16: google.cloud.dialogflow.v2beta1.ListMessagesRequest + (*ListMessagesResponse)(nil), // 17: google.cloud.dialogflow.v2beta1.ListMessagesResponse + (*SuggestConversationSummaryRequest)(nil), // 18: google.cloud.dialogflow.v2beta1.SuggestConversationSummaryRequest + (*SuggestConversationSummaryResponse)(nil), // 19: google.cloud.dialogflow.v2beta1.SuggestConversationSummaryResponse + (*GenerateStatelessSummaryRequest)(nil), // 20: google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryRequest + (*GenerateStatelessSummaryResponse)(nil), // 21: google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryResponse + (*GenerateStatelessSuggestionRequest)(nil), // 22: google.cloud.dialogflow.v2beta1.GenerateStatelessSuggestionRequest + (*GenerateStatelessSuggestionResponse)(nil), // 23: google.cloud.dialogflow.v2beta1.GenerateStatelessSuggestionResponse + (*SearchKnowledgeRequest)(nil), // 24: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest + (*SearchKnowledgeResponse)(nil), // 25: google.cloud.dialogflow.v2beta1.SearchKnowledgeResponse + (*SearchKnowledgeAnswer)(nil), // 26: google.cloud.dialogflow.v2beta1.SearchKnowledgeAnswer + (*SuggestConversationSummaryResponse_Summary)(nil), // 27: google.cloud.dialogflow.v2beta1.SuggestConversationSummaryResponse.Summary + nil, // 28: google.cloud.dialogflow.v2beta1.SuggestConversationSummaryResponse.Summary.TextSectionsEntry + (*GenerateStatelessSummaryRequest_MinimalConversation)(nil), // 29: google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryRequest.MinimalConversation + (*GenerateStatelessSummaryResponse_Summary)(nil), // 30: google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryResponse.Summary + nil, // 31: google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryResponse.Summary.TextSectionsEntry + (*SearchKnowledgeRequest_SearchConfig)(nil), // 32: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig + (*SearchKnowledgeRequest_SearchConfig_BoostSpecs)(nil), // 33: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.BoostSpecs + (*SearchKnowledgeRequest_SearchConfig_FilterSpecs)(nil), // 34: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.FilterSpecs + (*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec)(nil), // 35: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec + (*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec)(nil), // 36: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec + (*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec)(nil), // 37: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec.BoostControlSpec + (*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint)(nil), // 38: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec.BoostControlSpec.ControlPoint + (*SearchKnowledgeAnswer_AnswerSource)(nil), // 39: google.cloud.dialogflow.v2beta1.SearchKnowledgeAnswer.AnswerSource + (*timestamppb.Timestamp)(nil), // 40: google.protobuf.Timestamp + (*Message)(nil), // 41: google.cloud.dialogflow.v2beta1.Message + (*AssistQueryParameters)(nil), // 42: google.cloud.dialogflow.v2beta1.AssistQueryParameters + (*ConversationProfile)(nil), // 43: google.cloud.dialogflow.v2beta1.ConversationProfile + (*Generator)(nil), // 44: google.cloud.dialogflow.v2beta1.Generator + (*ConversationContext)(nil), // 45: google.cloud.dialogflow.v2beta1.ConversationContext + (TriggerEvent)(0), // 46: google.cloud.dialogflow.v2beta1.TriggerEvent + (*GeneratorSuggestion)(nil), // 47: google.cloud.dialogflow.v2beta1.GeneratorSuggestion + (*TextInput)(nil), // 48: google.cloud.dialogflow.v2beta1.TextInput + (*structpb.Struct)(nil), // 49: google.protobuf.Struct } var file_google_cloud_dialogflow_v2beta1_conversation_proto_depIdxs = []int32{ 0, // 0: google.cloud.dialogflow.v2beta1.Conversation.lifecycle_state:type_name -> google.cloud.dialogflow.v2beta1.Conversation.LifecycleState - 4, // 1: google.cloud.dialogflow.v2beta1.Conversation.phone_number:type_name -> google.cloud.dialogflow.v2beta1.ConversationPhoneNumber + 7, // 1: google.cloud.dialogflow.v2beta1.Conversation.phone_number:type_name -> google.cloud.dialogflow.v2beta1.ConversationPhoneNumber 1, // 2: google.cloud.dialogflow.v2beta1.Conversation.conversation_stage:type_name -> google.cloud.dialogflow.v2beta1.Conversation.ConversationStage - 30, // 3: google.cloud.dialogflow.v2beta1.Conversation.start_time:type_name -> google.protobuf.Timestamp - 30, // 4: google.cloud.dialogflow.v2beta1.Conversation.end_time:type_name -> google.protobuf.Timestamp - 3, // 5: google.cloud.dialogflow.v2beta1.CreateConversationRequest.conversation:type_name -> google.cloud.dialogflow.v2beta1.Conversation - 3, // 6: google.cloud.dialogflow.v2beta1.ListConversationsResponse.conversations:type_name -> google.cloud.dialogflow.v2beta1.Conversation - 31, // 7: google.cloud.dialogflow.v2beta1.CreateMessageRequest.message:type_name -> google.cloud.dialogflow.v2beta1.Message - 10, // 8: google.cloud.dialogflow.v2beta1.BatchCreateMessagesRequest.requests:type_name -> google.cloud.dialogflow.v2beta1.CreateMessageRequest - 31, // 9: google.cloud.dialogflow.v2beta1.BatchCreateMessagesResponse.messages:type_name -> google.cloud.dialogflow.v2beta1.Message - 31, // 10: google.cloud.dialogflow.v2beta1.ListMessagesResponse.messages:type_name -> google.cloud.dialogflow.v2beta1.Message - 32, // 11: google.cloud.dialogflow.v2beta1.SuggestConversationSummaryRequest.assist_query_params:type_name -> google.cloud.dialogflow.v2beta1.AssistQueryParameters - 24, // 12: google.cloud.dialogflow.v2beta1.SuggestConversationSummaryResponse.summary:type_name -> google.cloud.dialogflow.v2beta1.SuggestConversationSummaryResponse.Summary - 26, // 13: google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryRequest.stateless_conversation:type_name -> google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryRequest.MinimalConversation - 33, // 14: google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryRequest.conversation_profile:type_name -> google.cloud.dialogflow.v2beta1.ConversationProfile - 27, // 15: google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryResponse.summary:type_name -> google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryResponse.Summary - 34, // 16: google.cloud.dialogflow.v2beta1.GenerateStatelessSuggestionRequest.generator:type_name -> google.cloud.dialogflow.v2beta1.Generator - 35, // 17: google.cloud.dialogflow.v2beta1.GenerateStatelessSuggestionRequest.conversation_context:type_name -> google.cloud.dialogflow.v2beta1.ConversationContext - 36, // 18: google.cloud.dialogflow.v2beta1.GenerateStatelessSuggestionRequest.trigger_events:type_name -> google.cloud.dialogflow.v2beta1.TriggerEvent - 37, // 19: google.cloud.dialogflow.v2beta1.GenerateStatelessSuggestionResponse.generator_suggestion:type_name -> google.cloud.dialogflow.v2beta1.GeneratorSuggestion - 38, // 20: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.query:type_name -> google.cloud.dialogflow.v2beta1.TextInput - 23, // 21: google.cloud.dialogflow.v2beta1.SearchKnowledgeResponse.answers:type_name -> google.cloud.dialogflow.v2beta1.SearchKnowledgeAnswer - 2, // 22: google.cloud.dialogflow.v2beta1.SearchKnowledgeAnswer.answer_type:type_name -> google.cloud.dialogflow.v2beta1.SearchKnowledgeAnswer.AnswerType - 29, // 23: google.cloud.dialogflow.v2beta1.SearchKnowledgeAnswer.answer_sources:type_name -> google.cloud.dialogflow.v2beta1.SearchKnowledgeAnswer.AnswerSource - 25, // 24: google.cloud.dialogflow.v2beta1.SuggestConversationSummaryResponse.Summary.text_sections:type_name -> google.cloud.dialogflow.v2beta1.SuggestConversationSummaryResponse.Summary.TextSectionsEntry - 31, // 25: google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryRequest.MinimalConversation.messages:type_name -> google.cloud.dialogflow.v2beta1.Message - 28, // 26: google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryResponse.Summary.text_sections:type_name -> google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryResponse.Summary.TextSectionsEntry - 5, // 27: google.cloud.dialogflow.v2beta1.Conversations.CreateConversation:input_type -> google.cloud.dialogflow.v2beta1.CreateConversationRequest - 6, // 28: google.cloud.dialogflow.v2beta1.Conversations.ListConversations:input_type -> google.cloud.dialogflow.v2beta1.ListConversationsRequest - 8, // 29: google.cloud.dialogflow.v2beta1.Conversations.GetConversation:input_type -> google.cloud.dialogflow.v2beta1.GetConversationRequest - 9, // 30: google.cloud.dialogflow.v2beta1.Conversations.CompleteConversation:input_type -> google.cloud.dialogflow.v2beta1.CompleteConversationRequest - 11, // 31: google.cloud.dialogflow.v2beta1.Conversations.BatchCreateMessages:input_type -> google.cloud.dialogflow.v2beta1.BatchCreateMessagesRequest - 13, // 32: google.cloud.dialogflow.v2beta1.Conversations.ListMessages:input_type -> google.cloud.dialogflow.v2beta1.ListMessagesRequest - 15, // 33: google.cloud.dialogflow.v2beta1.Conversations.SuggestConversationSummary:input_type -> google.cloud.dialogflow.v2beta1.SuggestConversationSummaryRequest - 17, // 34: google.cloud.dialogflow.v2beta1.Conversations.GenerateStatelessSummary:input_type -> google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryRequest - 19, // 35: google.cloud.dialogflow.v2beta1.Conversations.GenerateStatelessSuggestion:input_type -> google.cloud.dialogflow.v2beta1.GenerateStatelessSuggestionRequest - 21, // 36: google.cloud.dialogflow.v2beta1.Conversations.SearchKnowledge:input_type -> google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest - 3, // 37: google.cloud.dialogflow.v2beta1.Conversations.CreateConversation:output_type -> google.cloud.dialogflow.v2beta1.Conversation - 7, // 38: google.cloud.dialogflow.v2beta1.Conversations.ListConversations:output_type -> google.cloud.dialogflow.v2beta1.ListConversationsResponse - 3, // 39: google.cloud.dialogflow.v2beta1.Conversations.GetConversation:output_type -> google.cloud.dialogflow.v2beta1.Conversation - 3, // 40: google.cloud.dialogflow.v2beta1.Conversations.CompleteConversation:output_type -> google.cloud.dialogflow.v2beta1.Conversation - 12, // 41: google.cloud.dialogflow.v2beta1.Conversations.BatchCreateMessages:output_type -> google.cloud.dialogflow.v2beta1.BatchCreateMessagesResponse - 14, // 42: google.cloud.dialogflow.v2beta1.Conversations.ListMessages:output_type -> google.cloud.dialogflow.v2beta1.ListMessagesResponse - 16, // 43: google.cloud.dialogflow.v2beta1.Conversations.SuggestConversationSummary:output_type -> google.cloud.dialogflow.v2beta1.SuggestConversationSummaryResponse - 18, // 44: google.cloud.dialogflow.v2beta1.Conversations.GenerateStatelessSummary:output_type -> google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryResponse - 20, // 45: google.cloud.dialogflow.v2beta1.Conversations.GenerateStatelessSuggestion:output_type -> google.cloud.dialogflow.v2beta1.GenerateStatelessSuggestionResponse - 22, // 46: google.cloud.dialogflow.v2beta1.Conversations.SearchKnowledge:output_type -> google.cloud.dialogflow.v2beta1.SearchKnowledgeResponse - 37, // [37:47] is the sub-list for method output_type - 27, // [27:37] is the sub-list for method input_type - 27, // [27:27] is the sub-list for extension type_name - 27, // [27:27] is the sub-list for extension extendee - 0, // [0:27] is the sub-list for field type_name + 40, // 3: google.cloud.dialogflow.v2beta1.Conversation.start_time:type_name -> google.protobuf.Timestamp + 40, // 4: google.cloud.dialogflow.v2beta1.Conversation.end_time:type_name -> google.protobuf.Timestamp + 6, // 5: google.cloud.dialogflow.v2beta1.CreateConversationRequest.conversation:type_name -> google.cloud.dialogflow.v2beta1.Conversation + 6, // 6: google.cloud.dialogflow.v2beta1.ListConversationsResponse.conversations:type_name -> google.cloud.dialogflow.v2beta1.Conversation + 41, // 7: google.cloud.dialogflow.v2beta1.CreateMessageRequest.message:type_name -> google.cloud.dialogflow.v2beta1.Message + 13, // 8: google.cloud.dialogflow.v2beta1.BatchCreateMessagesRequest.requests:type_name -> google.cloud.dialogflow.v2beta1.CreateMessageRequest + 41, // 9: google.cloud.dialogflow.v2beta1.BatchCreateMessagesResponse.messages:type_name -> google.cloud.dialogflow.v2beta1.Message + 41, // 10: google.cloud.dialogflow.v2beta1.ListMessagesResponse.messages:type_name -> google.cloud.dialogflow.v2beta1.Message + 42, // 11: google.cloud.dialogflow.v2beta1.SuggestConversationSummaryRequest.assist_query_params:type_name -> google.cloud.dialogflow.v2beta1.AssistQueryParameters + 27, // 12: google.cloud.dialogflow.v2beta1.SuggestConversationSummaryResponse.summary:type_name -> google.cloud.dialogflow.v2beta1.SuggestConversationSummaryResponse.Summary + 29, // 13: google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryRequest.stateless_conversation:type_name -> google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryRequest.MinimalConversation + 43, // 14: google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryRequest.conversation_profile:type_name -> google.cloud.dialogflow.v2beta1.ConversationProfile + 30, // 15: google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryResponse.summary:type_name -> google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryResponse.Summary + 44, // 16: google.cloud.dialogflow.v2beta1.GenerateStatelessSuggestionRequest.generator:type_name -> google.cloud.dialogflow.v2beta1.Generator + 45, // 17: google.cloud.dialogflow.v2beta1.GenerateStatelessSuggestionRequest.conversation_context:type_name -> google.cloud.dialogflow.v2beta1.ConversationContext + 46, // 18: google.cloud.dialogflow.v2beta1.GenerateStatelessSuggestionRequest.trigger_events:type_name -> google.cloud.dialogflow.v2beta1.TriggerEvent + 47, // 19: google.cloud.dialogflow.v2beta1.GenerateStatelessSuggestionResponse.generator_suggestion:type_name -> google.cloud.dialogflow.v2beta1.GeneratorSuggestion + 48, // 20: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.query:type_name -> google.cloud.dialogflow.v2beta1.TextInput + 2, // 21: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.query_source:type_name -> google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.QuerySource + 49, // 22: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.end_user_metadata:type_name -> google.protobuf.Struct + 32, // 23: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.search_config:type_name -> google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig + 26, // 24: google.cloud.dialogflow.v2beta1.SearchKnowledgeResponse.answers:type_name -> google.cloud.dialogflow.v2beta1.SearchKnowledgeAnswer + 5, // 25: google.cloud.dialogflow.v2beta1.SearchKnowledgeAnswer.answer_type:type_name -> google.cloud.dialogflow.v2beta1.SearchKnowledgeAnswer.AnswerType + 39, // 26: google.cloud.dialogflow.v2beta1.SearchKnowledgeAnswer.answer_sources:type_name -> google.cloud.dialogflow.v2beta1.SearchKnowledgeAnswer.AnswerSource + 28, // 27: google.cloud.dialogflow.v2beta1.SuggestConversationSummaryResponse.Summary.text_sections:type_name -> google.cloud.dialogflow.v2beta1.SuggestConversationSummaryResponse.Summary.TextSectionsEntry + 41, // 28: google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryRequest.MinimalConversation.messages:type_name -> google.cloud.dialogflow.v2beta1.Message + 31, // 29: google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryResponse.Summary.text_sections:type_name -> google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryResponse.Summary.TextSectionsEntry + 33, // 30: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.boost_specs:type_name -> google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.BoostSpecs + 34, // 31: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.filter_specs:type_name -> google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.FilterSpecs + 35, // 32: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.BoostSpecs.spec:type_name -> google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec + 36, // 33: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.condition_boost_specs:type_name -> google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec + 37, // 34: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec.boost_control_spec:type_name -> google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec.BoostControlSpec + 3, // 35: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec.BoostControlSpec.attribute_type:type_name -> google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec.BoostControlSpec.AttributeType + 4, // 36: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec.BoostControlSpec.interpolation_type:type_name -> google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec.BoostControlSpec.InterpolationType + 38, // 37: google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec.BoostControlSpec.control_points:type_name -> google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest.SearchConfig.BoostSpecs.BoostSpec.ConditionBoostSpec.BoostControlSpec.ControlPoint + 49, // 38: google.cloud.dialogflow.v2beta1.SearchKnowledgeAnswer.AnswerSource.metadata:type_name -> google.protobuf.Struct + 8, // 39: google.cloud.dialogflow.v2beta1.Conversations.CreateConversation:input_type -> google.cloud.dialogflow.v2beta1.CreateConversationRequest + 9, // 40: google.cloud.dialogflow.v2beta1.Conversations.ListConversations:input_type -> google.cloud.dialogflow.v2beta1.ListConversationsRequest + 11, // 41: google.cloud.dialogflow.v2beta1.Conversations.GetConversation:input_type -> google.cloud.dialogflow.v2beta1.GetConversationRequest + 12, // 42: google.cloud.dialogflow.v2beta1.Conversations.CompleteConversation:input_type -> google.cloud.dialogflow.v2beta1.CompleteConversationRequest + 14, // 43: google.cloud.dialogflow.v2beta1.Conversations.BatchCreateMessages:input_type -> google.cloud.dialogflow.v2beta1.BatchCreateMessagesRequest + 16, // 44: google.cloud.dialogflow.v2beta1.Conversations.ListMessages:input_type -> google.cloud.dialogflow.v2beta1.ListMessagesRequest + 18, // 45: google.cloud.dialogflow.v2beta1.Conversations.SuggestConversationSummary:input_type -> google.cloud.dialogflow.v2beta1.SuggestConversationSummaryRequest + 20, // 46: google.cloud.dialogflow.v2beta1.Conversations.GenerateStatelessSummary:input_type -> google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryRequest + 22, // 47: google.cloud.dialogflow.v2beta1.Conversations.GenerateStatelessSuggestion:input_type -> google.cloud.dialogflow.v2beta1.GenerateStatelessSuggestionRequest + 24, // 48: google.cloud.dialogflow.v2beta1.Conversations.SearchKnowledge:input_type -> google.cloud.dialogflow.v2beta1.SearchKnowledgeRequest + 6, // 49: google.cloud.dialogflow.v2beta1.Conversations.CreateConversation:output_type -> google.cloud.dialogflow.v2beta1.Conversation + 10, // 50: google.cloud.dialogflow.v2beta1.Conversations.ListConversations:output_type -> google.cloud.dialogflow.v2beta1.ListConversationsResponse + 6, // 51: google.cloud.dialogflow.v2beta1.Conversations.GetConversation:output_type -> google.cloud.dialogflow.v2beta1.Conversation + 6, // 52: google.cloud.dialogflow.v2beta1.Conversations.CompleteConversation:output_type -> google.cloud.dialogflow.v2beta1.Conversation + 15, // 53: google.cloud.dialogflow.v2beta1.Conversations.BatchCreateMessages:output_type -> google.cloud.dialogflow.v2beta1.BatchCreateMessagesResponse + 17, // 54: google.cloud.dialogflow.v2beta1.Conversations.ListMessages:output_type -> google.cloud.dialogflow.v2beta1.ListMessagesResponse + 19, // 55: google.cloud.dialogflow.v2beta1.Conversations.SuggestConversationSummary:output_type -> google.cloud.dialogflow.v2beta1.SuggestConversationSummaryResponse + 21, // 56: google.cloud.dialogflow.v2beta1.Conversations.GenerateStatelessSummary:output_type -> google.cloud.dialogflow.v2beta1.GenerateStatelessSummaryResponse + 23, // 57: google.cloud.dialogflow.v2beta1.Conversations.GenerateStatelessSuggestion:output_type -> google.cloud.dialogflow.v2beta1.GenerateStatelessSuggestionResponse + 25, // 58: google.cloud.dialogflow.v2beta1.Conversations.SearchKnowledge:output_type -> google.cloud.dialogflow.v2beta1.SearchKnowledgeResponse + 49, // [49:59] is the sub-list for method output_type + 39, // [39:49] is the sub-list for method input_type + 39, // [39:39] is the sub-list for extension type_name + 39, // [39:39] is the sub-list for extension extendee + 0, // [0:39] is the sub-list for field type_name } func init() { file_google_cloud_dialogflow_v2beta1_conversation_proto_init() } @@ -3115,6 +3990,90 @@ func file_google_cloud_dialogflow_v2beta1_conversation_proto_init() { } } file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[26].Exporter = func(v any, i int) any { + switch v := v.(*SearchKnowledgeRequest_SearchConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[27].Exporter = func(v any, i int) any { + switch v := v.(*SearchKnowledgeRequest_SearchConfig_BoostSpecs); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[28].Exporter = func(v any, i int) any { + switch v := v.(*SearchKnowledgeRequest_SearchConfig_FilterSpecs); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[29].Exporter = func(v any, i int) any { + switch v := v.(*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[30].Exporter = func(v any, i int) any { + switch v := v.(*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[31].Exporter = func(v any, i int) any { + switch v := v.(*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[32].Exporter = func(v any, i int) any { + switch v := v.(*SearchKnowledgeRequest_SearchConfig_BoostSpecs_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_google_cloud_dialogflow_v2beta1_conversation_proto_msgTypes[33].Exporter = func(v any, i int) any { switch v := v.(*SearchKnowledgeAnswer_AnswerSource); i { case 0: return &v.state @@ -3136,8 +4095,8 @@ func file_google_cloud_dialogflow_v2beta1_conversation_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_google_cloud_dialogflow_v2beta1_conversation_proto_rawDesc, - NumEnums: 3, - NumMessages: 27, + NumEnums: 6, + NumMessages: 34, NumExtensions: 0, NumServices: 1, }, diff --git a/internal/generated/snippets/ai/generativelanguage/apiv1/snippet_metadata.google.ai.generativelanguage.v1.json b/internal/generated/snippets/ai/generativelanguage/apiv1/snippet_metadata.google.ai.generativelanguage.v1.json index 86511e3d1206..e5209487d312 100644 --- a/internal/generated/snippets/ai/generativelanguage/apiv1/snippet_metadata.google.ai.generativelanguage.v1.json +++ b/internal/generated/snippets/ai/generativelanguage/apiv1/snippet_metadata.google.ai.generativelanguage.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/ai/generativelanguage/apiv1", - "version": "0.8.2", + "version": "0.9.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/ai/generativelanguage/apiv1beta/snippet_metadata.google.ai.generativelanguage.v1beta.json b/internal/generated/snippets/ai/generativelanguage/apiv1beta/snippet_metadata.google.ai.generativelanguage.v1beta.json index e45509b862a8..93c6ea6a2eb3 100644 --- a/internal/generated/snippets/ai/generativelanguage/apiv1beta/snippet_metadata.google.ai.generativelanguage.v1beta.json +++ b/internal/generated/snippets/ai/generativelanguage/apiv1beta/snippet_metadata.google.ai.generativelanguage.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/ai/generativelanguage/apiv1beta", - "version": "0.8.2", + "version": "0.9.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/ai/generativelanguage/apiv1beta2/snippet_metadata.google.ai.generativelanguage.v1beta2.json b/internal/generated/snippets/ai/generativelanguage/apiv1beta2/snippet_metadata.google.ai.generativelanguage.v1beta2.json index 5b2df9d925eb..e311818a306d 100644 --- a/internal/generated/snippets/ai/generativelanguage/apiv1beta2/snippet_metadata.google.ai.generativelanguage.v1beta2.json +++ b/internal/generated/snippets/ai/generativelanguage/apiv1beta2/snippet_metadata.google.ai.generativelanguage.v1beta2.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/ai/generativelanguage/apiv1beta2", - "version": "0.8.2", + "version": "0.9.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/aiplatform/apiv1/EndpointClient/UpdateEndpointLongRunning/main.go b/internal/generated/snippets/aiplatform/apiv1/EndpointClient/UpdateEndpointLongRunning/main.go new file mode 100644 index 000000000000..f4104aca7ca3 --- /dev/null +++ b/internal/generated/snippets/aiplatform/apiv1/EndpointClient/UpdateEndpointLongRunning/main.go @@ -0,0 +1,58 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START aiplatform_v1_generated_EndpointService_UpdateEndpointLongRunning_sync] + +package main + +import ( + "context" + + aiplatform "cloud.google.com/go/aiplatform/apiv1" + aiplatformpb "cloud.google.com/go/aiplatform/apiv1/aiplatformpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := aiplatform.NewEndpointClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &aiplatformpb.UpdateEndpointLongRunningRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/aiplatform/apiv1/aiplatformpb#UpdateEndpointLongRunningRequest. + } + op, err := c.UpdateEndpointLongRunning(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END aiplatform_v1_generated_EndpointService_UpdateEndpointLongRunning_sync] diff --git a/internal/generated/snippets/aiplatform/apiv1/snippet_metadata.google.cloud.aiplatform.v1.json b/internal/generated/snippets/aiplatform/apiv1/snippet_metadata.google.cloud.aiplatform.v1.json index 826b88639578..058a496c43cd 100644 --- a/internal/generated/snippets/aiplatform/apiv1/snippet_metadata.google.cloud.aiplatform.v1.json +++ b/internal/generated/snippets/aiplatform/apiv1/snippet_metadata.google.cloud.aiplatform.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/aiplatform/apiv1", - "version": "1.68.0", + "version": "1.69.0", "language": "GO", "apis": [ { @@ -2857,6 +2857,52 @@ } ] }, + { + "regionTag": "aiplatform_v1_generated_EndpointService_UpdateEndpointLongRunning_sync", + "title": "aiplatform UpdateEndpointLongRunning Sample", + "description": "UpdateEndpointLongRunning updates an Endpoint with a long running operation.", + "file": "EndpointClient/UpdateEndpointLongRunning/main.go", + "language": "GO", + "clientMethod": { + "shortName": "UpdateEndpointLongRunning", + "fullName": "google.cloud.aiplatform.v1.EndpointClient.UpdateEndpointLongRunning", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "aiplatformpb.UpdateEndpointLongRunningRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "UpdateEndpointLongRunningOperation", + "client": { + "shortName": "EndpointClient", + "fullName": "google.cloud.aiplatform.v1.EndpointClient" + }, + "method": { + "shortName": "UpdateEndpointLongRunning", + "fullName": "google.cloud.aiplatform.v1.EndpointService.UpdateEndpointLongRunning", + "service": { + "shortName": "EndpointService", + "fullName": "google.cloud.aiplatform.v1.EndpointService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 58, + "type": "FULL" + } + ] + }, { "regionTag": "aiplatform_v1_generated_EndpointService_WaitOperation_sync", "title": "aiplatform WaitOperation Sample", diff --git a/internal/generated/snippets/aiplatform/apiv1beta1/snippet_metadata.google.cloud.aiplatform.v1beta1.json b/internal/generated/snippets/aiplatform/apiv1beta1/snippet_metadata.google.cloud.aiplatform.v1beta1.json index 61b2f88946b4..49cc02cad32b 100644 --- a/internal/generated/snippets/aiplatform/apiv1beta1/snippet_metadata.google.cloud.aiplatform.v1beta1.json +++ b/internal/generated/snippets/aiplatform/apiv1beta1/snippet_metadata.google.cloud.aiplatform.v1beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/aiplatform/apiv1beta1", - "version": "1.68.0", + "version": "1.69.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/alloydb/apiv1/snippet_metadata.google.cloud.alloydb.v1.json b/internal/generated/snippets/alloydb/apiv1/snippet_metadata.google.cloud.alloydb.v1.json index f455cdc5c89f..1c05f4b07318 100644 --- a/internal/generated/snippets/alloydb/apiv1/snippet_metadata.google.cloud.alloydb.v1.json +++ b/internal/generated/snippets/alloydb/apiv1/snippet_metadata.google.cloud.alloydb.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/alloydb/apiv1", - "version": "1.13.0", + "version": "1.14.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/alloydb/apiv1alpha/snippet_metadata.google.cloud.alloydb.v1alpha.json b/internal/generated/snippets/alloydb/apiv1alpha/snippet_metadata.google.cloud.alloydb.v1alpha.json index c3946d5159a8..b7bff8604570 100644 --- a/internal/generated/snippets/alloydb/apiv1alpha/snippet_metadata.google.cloud.alloydb.v1alpha.json +++ b/internal/generated/snippets/alloydb/apiv1alpha/snippet_metadata.google.cloud.alloydb.v1alpha.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/alloydb/apiv1alpha", - "version": "1.13.0", + "version": "1.14.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/alloydb/apiv1beta/snippet_metadata.google.cloud.alloydb.v1beta.json b/internal/generated/snippets/alloydb/apiv1beta/snippet_metadata.google.cloud.alloydb.v1beta.json index 580db547c053..a4e0307ed256 100644 --- a/internal/generated/snippets/alloydb/apiv1beta/snippet_metadata.google.cloud.alloydb.v1beta.json +++ b/internal/generated/snippets/alloydb/apiv1beta/snippet_metadata.google.cloud.alloydb.v1beta.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/alloydb/apiv1beta", - "version": "1.13.0", + "version": "1.14.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/cloudquotas/apiv1/snippet_metadata.google.api.cloudquotas.v1.json b/internal/generated/snippets/cloudquotas/apiv1/snippet_metadata.google.api.cloudquotas.v1.json index cc1e447b8ca9..edbfd6f9cca9 100644 --- a/internal/generated/snippets/cloudquotas/apiv1/snippet_metadata.google.api.cloudquotas.v1.json +++ b/internal/generated/snippets/cloudquotas/apiv1/snippet_metadata.google.api.cloudquotas.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/cloudquotas/apiv1", - "version": "1.1.2", + "version": "1.2.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/compute/apiv1/snippet_metadata.google.cloud.compute.v1.json b/internal/generated/snippets/compute/apiv1/snippet_metadata.google.cloud.compute.v1.json index c486aa414e94..023ffc076faf 100644 --- a/internal/generated/snippets/compute/apiv1/snippet_metadata.google.cloud.compute.v1.json +++ b/internal/generated/snippets/compute/apiv1/snippet_metadata.google.cloud.compute.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/compute/apiv1", - "version": "1.28.3", + "version": "1.29.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/BulkDownloadFeedbackLabels/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/BulkDownloadFeedbackLabels/main.go new file mode 100644 index 000000000000..ef5444c8a843 --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/BulkDownloadFeedbackLabels/main.go @@ -0,0 +1,58 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_BulkDownloadFeedbackLabels_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.BulkDownloadFeedbackLabelsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#BulkDownloadFeedbackLabelsRequest. + } + op, err := c.BulkDownloadFeedbackLabels(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_BulkDownloadFeedbackLabels_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/BulkUploadFeedbackLabels/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/BulkUploadFeedbackLabels/main.go new file mode 100644 index 000000000000..21ccbddf859e --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/BulkUploadFeedbackLabels/main.go @@ -0,0 +1,58 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_BulkUploadFeedbackLabels_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.BulkUploadFeedbackLabelsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#BulkUploadFeedbackLabelsRequest. + } + op, err := c.BulkUploadFeedbackLabels(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_BulkUploadFeedbackLabels_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/CreateAnalysisRule/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/CreateAnalysisRule/main.go new file mode 100644 index 000000000000..872f96e0555d --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/CreateAnalysisRule/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_CreateAnalysisRule_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.CreateAnalysisRuleRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CreateAnalysisRuleRequest. + } + resp, err := c.CreateAnalysisRule(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_CreateAnalysisRule_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/CreateFeedbackLabel/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/CreateFeedbackLabel/main.go new file mode 100644 index 000000000000..bb11e70b6c9c --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/CreateFeedbackLabel/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_CreateFeedbackLabel_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.CreateFeedbackLabelRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CreateFeedbackLabelRequest. + } + resp, err := c.CreateFeedbackLabel(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_CreateFeedbackLabel_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/CreateQaQuestion/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/CreateQaQuestion/main.go new file mode 100644 index 000000000000..88594e5fecb4 --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/CreateQaQuestion/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_CreateQaQuestion_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.CreateQaQuestionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CreateQaQuestionRequest. + } + resp, err := c.CreateQaQuestion(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_CreateQaQuestion_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/CreateQaScorecard/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/CreateQaScorecard/main.go new file mode 100644 index 000000000000..6a7d1e834f0d --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/CreateQaScorecard/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_CreateQaScorecard_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.CreateQaScorecardRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CreateQaScorecardRequest. + } + resp, err := c.CreateQaScorecard(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_CreateQaScorecard_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/CreateQaScorecardRevision/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/CreateQaScorecardRevision/main.go new file mode 100644 index 000000000000..97a0f6a02b8a --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/CreateQaScorecardRevision/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_CreateQaScorecardRevision_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.CreateQaScorecardRevisionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#CreateQaScorecardRevisionRequest. + } + resp, err := c.CreateQaScorecardRevision(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_CreateQaScorecardRevision_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/DeleteAnalysisRule/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/DeleteAnalysisRule/main.go new file mode 100644 index 000000000000..761850508cde --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/DeleteAnalysisRule/main.go @@ -0,0 +1,51 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_DeleteAnalysisRule_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.DeleteAnalysisRuleRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeleteAnalysisRuleRequest. + } + err = c.DeleteAnalysisRule(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_DeleteAnalysisRule_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/DeleteFeedbackLabel/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/DeleteFeedbackLabel/main.go new file mode 100644 index 000000000000..3b41e2c65382 --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/DeleteFeedbackLabel/main.go @@ -0,0 +1,51 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_DeleteFeedbackLabel_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.DeleteFeedbackLabelRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeleteFeedbackLabelRequest. + } + err = c.DeleteFeedbackLabel(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_DeleteFeedbackLabel_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/DeleteQaQuestion/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/DeleteQaQuestion/main.go new file mode 100644 index 000000000000..6441f1195df3 --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/DeleteQaQuestion/main.go @@ -0,0 +1,51 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_DeleteQaQuestion_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.DeleteQaQuestionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeleteQaQuestionRequest. + } + err = c.DeleteQaQuestion(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_DeleteQaQuestion_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/DeleteQaScorecard/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/DeleteQaScorecard/main.go new file mode 100644 index 000000000000..11c99eb7548a --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/DeleteQaScorecard/main.go @@ -0,0 +1,51 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_DeleteQaScorecard_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.DeleteQaScorecardRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeleteQaScorecardRequest. + } + err = c.DeleteQaScorecard(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_DeleteQaScorecard_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/DeleteQaScorecardRevision/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/DeleteQaScorecardRevision/main.go new file mode 100644 index 000000000000..08142684723c --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/DeleteQaScorecardRevision/main.go @@ -0,0 +1,51 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_DeleteQaScorecardRevision_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.DeleteQaScorecardRevisionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeleteQaScorecardRevisionRequest. + } + err = c.DeleteQaScorecardRevision(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_DeleteQaScorecardRevision_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/DeployQaScorecardRevision/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/DeployQaScorecardRevision/main.go new file mode 100644 index 000000000000..fa6ac4931b3b --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/DeployQaScorecardRevision/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_DeployQaScorecardRevision_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.DeployQaScorecardRevisionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#DeployQaScorecardRevisionRequest. + } + resp, err := c.DeployQaScorecardRevision(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_DeployQaScorecardRevision_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/GetAnalysisRule/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/GetAnalysisRule/main.go new file mode 100644 index 000000000000..7afe54b1750a --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/GetAnalysisRule/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_GetAnalysisRule_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.GetAnalysisRuleRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetAnalysisRuleRequest. + } + resp, err := c.GetAnalysisRule(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_GetAnalysisRule_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/GetFeedbackLabel/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/GetFeedbackLabel/main.go new file mode 100644 index 000000000000..3a8dffa3214d --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/GetFeedbackLabel/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_GetFeedbackLabel_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.GetFeedbackLabelRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetFeedbackLabelRequest. + } + resp, err := c.GetFeedbackLabel(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_GetFeedbackLabel_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/GetQaQuestion/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/GetQaQuestion/main.go new file mode 100644 index 000000000000..4e2445512470 --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/GetQaQuestion/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_GetQaQuestion_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.GetQaQuestionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetQaQuestionRequest. + } + resp, err := c.GetQaQuestion(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_GetQaQuestion_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/GetQaScorecard/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/GetQaScorecard/main.go new file mode 100644 index 000000000000..0fb57d52f60f --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/GetQaScorecard/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_GetQaScorecard_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.GetQaScorecardRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetQaScorecardRequest. + } + resp, err := c.GetQaScorecard(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_GetQaScorecard_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/GetQaScorecardRevision/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/GetQaScorecardRevision/main.go new file mode 100644 index 000000000000..f88283e83158 --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/GetQaScorecardRevision/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_GetQaScorecardRevision_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.GetQaScorecardRevisionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#GetQaScorecardRevisionRequest. + } + resp, err := c.GetQaScorecardRevision(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_GetQaScorecardRevision_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/ListAllFeedbackLabels/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/ListAllFeedbackLabels/main.go new file mode 100644 index 000000000000..94dc9dfdf2d4 --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/ListAllFeedbackLabels/main.go @@ -0,0 +1,66 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_ListAllFeedbackLabels_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.ListAllFeedbackLabelsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ListAllFeedbackLabelsRequest. + } + it := c.ListAllFeedbackLabels(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*contactcenterinsightspb.ListAllFeedbackLabelsResponse) + } +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_ListAllFeedbackLabels_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/ListAnalysisRules/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/ListAnalysisRules/main.go new file mode 100644 index 000000000000..882fc0b5f234 --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/ListAnalysisRules/main.go @@ -0,0 +1,66 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_ListAnalysisRules_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.ListAnalysisRulesRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ListAnalysisRulesRequest. + } + it := c.ListAnalysisRules(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*contactcenterinsightspb.ListAnalysisRulesResponse) + } +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_ListAnalysisRules_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/ListFeedbackLabels/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/ListFeedbackLabels/main.go new file mode 100644 index 000000000000..6aff095a3435 --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/ListFeedbackLabels/main.go @@ -0,0 +1,66 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_ListFeedbackLabels_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.ListFeedbackLabelsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ListFeedbackLabelsRequest. + } + it := c.ListFeedbackLabels(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*contactcenterinsightspb.ListFeedbackLabelsResponse) + } +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_ListFeedbackLabels_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/ListQaQuestions/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/ListQaQuestions/main.go new file mode 100644 index 000000000000..d95c2af72cd1 --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/ListQaQuestions/main.go @@ -0,0 +1,66 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_ListQaQuestions_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.ListQaQuestionsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ListQaQuestionsRequest. + } + it := c.ListQaQuestions(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*contactcenterinsightspb.ListQaQuestionsResponse) + } +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_ListQaQuestions_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/ListQaScorecardRevisions/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/ListQaScorecardRevisions/main.go new file mode 100644 index 000000000000..b325025c4bca --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/ListQaScorecardRevisions/main.go @@ -0,0 +1,66 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_ListQaScorecardRevisions_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.ListQaScorecardRevisionsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ListQaScorecardRevisionsRequest. + } + it := c.ListQaScorecardRevisions(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*contactcenterinsightspb.ListQaScorecardRevisionsResponse) + } +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_ListQaScorecardRevisions_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/ListQaScorecards/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/ListQaScorecards/main.go new file mode 100644 index 000000000000..c316215dea2f --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/ListQaScorecards/main.go @@ -0,0 +1,66 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_ListQaScorecards_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.ListQaScorecardsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#ListQaScorecardsRequest. + } + it := c.ListQaScorecards(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*contactcenterinsightspb.ListQaScorecardsResponse) + } +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_ListQaScorecards_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/QueryMetrics/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/QueryMetrics/main.go new file mode 100644 index 000000000000..8b768620f5a7 --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/QueryMetrics/main.go @@ -0,0 +1,58 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_QueryMetrics_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.QueryMetricsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#QueryMetricsRequest. + } + op, err := c.QueryMetrics(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_QueryMetrics_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/TuneQaScorecardRevision/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/TuneQaScorecardRevision/main.go new file mode 100644 index 000000000000..21e4b549cc06 --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/TuneQaScorecardRevision/main.go @@ -0,0 +1,58 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_TuneQaScorecardRevision_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.TuneQaScorecardRevisionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#TuneQaScorecardRevisionRequest. + } + op, err := c.TuneQaScorecardRevision(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_TuneQaScorecardRevision_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/UndeployQaScorecardRevision/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/UndeployQaScorecardRevision/main.go new file mode 100644 index 000000000000..fd11e24b5e22 --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/UndeployQaScorecardRevision/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_UndeployQaScorecardRevision_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.UndeployQaScorecardRevisionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#UndeployQaScorecardRevisionRequest. + } + resp, err := c.UndeployQaScorecardRevision(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_UndeployQaScorecardRevision_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/UpdateAnalysisRule/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/UpdateAnalysisRule/main.go new file mode 100644 index 000000000000..e8a356d608aa --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/UpdateAnalysisRule/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_UpdateAnalysisRule_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.UpdateAnalysisRuleRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#UpdateAnalysisRuleRequest. + } + resp, err := c.UpdateAnalysisRule(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_UpdateAnalysisRule_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/UpdateFeedbackLabel/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/UpdateFeedbackLabel/main.go new file mode 100644 index 000000000000..7c7e5ee44932 --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/UpdateFeedbackLabel/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_UpdateFeedbackLabel_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.UpdateFeedbackLabelRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#UpdateFeedbackLabelRequest. + } + resp, err := c.UpdateFeedbackLabel(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_UpdateFeedbackLabel_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/UpdateQaQuestion/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/UpdateQaQuestion/main.go new file mode 100644 index 000000000000..291a2b2c728b --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/UpdateQaQuestion/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_UpdateQaQuestion_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.UpdateQaQuestionRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#UpdateQaQuestionRequest. + } + resp, err := c.UpdateQaQuestion(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_UpdateQaQuestion_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/Client/UpdateQaScorecard/main.go b/internal/generated/snippets/contactcenterinsights/apiv1/Client/UpdateQaScorecard/main.go new file mode 100644 index 000000000000..6ed51625ea05 --- /dev/null +++ b/internal/generated/snippets/contactcenterinsights/apiv1/Client/UpdateQaScorecard/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START contactcenterinsights_v1_generated_ContactCenterInsights_UpdateQaScorecard_sync] + +package main + +import ( + "context" + + contactcenterinsights "cloud.google.com/go/contactcenterinsights/apiv1" + contactcenterinsightspb "cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := contactcenterinsights.NewClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &contactcenterinsightspb.UpdateQaScorecardRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/contactcenterinsights/apiv1/contactcenterinsightspb#UpdateQaScorecardRequest. + } + resp, err := c.UpdateQaScorecard(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END contactcenterinsights_v1_generated_ContactCenterInsights_UpdateQaScorecard_sync] diff --git a/internal/generated/snippets/contactcenterinsights/apiv1/snippet_metadata.google.cloud.contactcenterinsights.v1.json b/internal/generated/snippets/contactcenterinsights/apiv1/snippet_metadata.google.cloud.contactcenterinsights.v1.json index bf588677ed5a..54544ac77632 100644 --- a/internal/generated/snippets/contactcenterinsights/apiv1/snippet_metadata.google.cloud.contactcenterinsights.v1.json +++ b/internal/generated/snippets/contactcenterinsights/apiv1/snippet_metadata.google.cloud.contactcenterinsights.v1.json @@ -103,6 +103,98 @@ } ] }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_BulkDownloadFeedbackLabels_sync", + "title": "contactcenterinsights BulkDownloadFeedbackLabels Sample", + "description": "BulkDownloadFeedbackLabels download feedback labels in bulk.", + "file": "Client/BulkDownloadFeedbackLabels/main.go", + "language": "GO", + "clientMethod": { + "shortName": "BulkDownloadFeedbackLabels", + "fullName": "google.cloud.contactcenterinsights.v1.Client.BulkDownloadFeedbackLabels", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.BulkDownloadFeedbackLabelsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "BulkDownloadFeedbackLabelsOperation", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "BulkDownloadFeedbackLabels", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.BulkDownloadFeedbackLabels", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 58, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_BulkUploadFeedbackLabels_sync", + "title": "contactcenterinsights BulkUploadFeedbackLabels Sample", + "description": "BulkUploadFeedbackLabels upload feedback labels in bulk.", + "file": "Client/BulkUploadFeedbackLabels/main.go", + "language": "GO", + "clientMethod": { + "shortName": "BulkUploadFeedbackLabels", + "fullName": "google.cloud.contactcenterinsights.v1.Client.BulkUploadFeedbackLabels", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.BulkUploadFeedbackLabelsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "BulkUploadFeedbackLabelsOperation", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "BulkUploadFeedbackLabels", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.BulkUploadFeedbackLabels", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 58, + "type": "FULL" + } + ] + }, { "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_CalculateIssueModelStats_sync", "title": "contactcenterinsights CalculateIssueModelStats Sample", @@ -286,6 +378,52 @@ } ] }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_CreateAnalysisRule_sync", + "title": "contactcenterinsights CreateAnalysisRule Sample", + "description": "CreateAnalysisRule creates a analysis rule.", + "file": "Client/CreateAnalysisRule/main.go", + "language": "GO", + "clientMethod": { + "shortName": "CreateAnalysisRule", + "fullName": "google.cloud.contactcenterinsights.v1.Client.CreateAnalysisRule", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.CreateAnalysisRuleRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*contactcenterinsightspb.AnalysisRule", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "CreateAnalysisRule", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateAnalysisRule", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, { "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_CreateConversation_sync", "title": "contactcenterinsights CreateConversation Sample", @@ -332,6 +470,52 @@ } ] }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_CreateFeedbackLabel_sync", + "title": "contactcenterinsights CreateFeedbackLabel Sample", + "description": "CreateFeedbackLabel create feedback label.", + "file": "Client/CreateFeedbackLabel/main.go", + "language": "GO", + "clientMethod": { + "shortName": "CreateFeedbackLabel", + "fullName": "google.cloud.contactcenterinsights.v1.Client.CreateFeedbackLabel", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.CreateFeedbackLabelRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*contactcenterinsightspb.FeedbackLabel", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "CreateFeedbackLabel", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateFeedbackLabel", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, { "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_CreateIssueModel_sync", "title": "contactcenterinsights CreateIssueModel Sample", @@ -425,21 +609,21 @@ ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_CreateView_sync", - "title": "contactcenterinsights CreateView Sample", - "description": "CreateView creates a view.", - "file": "Client/CreateView/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_CreateQaQuestion_sync", + "title": "contactcenterinsights CreateQaQuestion Sample", + "description": "CreateQaQuestion create a QaQuestion.", + "file": "Client/CreateQaQuestion/main.go", "language": "GO", "clientMethod": { - "shortName": "CreateView", - "fullName": "google.cloud.contactcenterinsights.v1.Client.CreateView", + "shortName": "CreateQaQuestion", + "fullName": "google.cloud.contactcenterinsights.v1.Client.CreateQaQuestion", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.CreateViewRequest", + "type": "contactcenterinsightspb.CreateQaQuestionRequest", "name": "req" }, { @@ -447,14 +631,14 @@ "name": "opts" } ], - "resultType": "*contactcenterinsightspb.View", + "resultType": "*contactcenterinsightspb.QaQuestion", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "CreateView", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateView", + "shortName": "CreateQaQuestion", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateQaQuestion", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -471,21 +655,21 @@ ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_DeleteAnalysis_sync", - "title": "contactcenterinsights DeleteAnalysis Sample", - "description": "DeleteAnalysis deletes an analysis.", - "file": "Client/DeleteAnalysis/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_CreateQaScorecard_sync", + "title": "contactcenterinsights CreateQaScorecard Sample", + "description": "CreateQaScorecard create a QaScorecard.", + "file": "Client/CreateQaScorecard/main.go", "language": "GO", "clientMethod": { - "shortName": "DeleteAnalysis", - "fullName": "google.cloud.contactcenterinsights.v1.Client.DeleteAnalysis", + "shortName": "CreateQaScorecard", + "fullName": "google.cloud.contactcenterinsights.v1.Client.CreateQaScorecard", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.DeleteAnalysisRequest", + "type": "contactcenterinsightspb.CreateQaScorecardRequest", "name": "req" }, { @@ -493,13 +677,14 @@ "name": "opts" } ], + "resultType": "*contactcenterinsightspb.QaScorecard", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "DeleteAnalysis", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteAnalysis", + "shortName": "CreateQaScorecard", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateQaScorecard", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -510,27 +695,27 @@ "segments": [ { "start": 18, - "end": 51, + "end": 53, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_DeleteConversation_sync", - "title": "contactcenterinsights DeleteConversation Sample", - "description": "DeleteConversation deletes a conversation.", - "file": "Client/DeleteConversation/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_CreateQaScorecardRevision_sync", + "title": "contactcenterinsights CreateQaScorecardRevision Sample", + "description": "CreateQaScorecardRevision creates a QaScorecardRevision.", + "file": "Client/CreateQaScorecardRevision/main.go", "language": "GO", "clientMethod": { - "shortName": "DeleteConversation", - "fullName": "google.cloud.contactcenterinsights.v1.Client.DeleteConversation", + "shortName": "CreateQaScorecardRevision", + "fullName": "google.cloud.contactcenterinsights.v1.Client.CreateQaScorecardRevision", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.DeleteConversationRequest", + "type": "contactcenterinsightspb.CreateQaScorecardRevisionRequest", "name": "req" }, { @@ -538,13 +723,14 @@ "name": "opts" } ], + "resultType": "*contactcenterinsightspb.QaScorecardRevision", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "DeleteConversation", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteConversation", + "shortName": "CreateQaScorecardRevision", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateQaScorecardRevision", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -555,27 +741,27 @@ "segments": [ { "start": 18, - "end": 51, + "end": 53, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_DeleteIssue_sync", - "title": "contactcenterinsights DeleteIssue Sample", - "description": "DeleteIssue deletes an issue.", - "file": "Client/DeleteIssue/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_CreateView_sync", + "title": "contactcenterinsights CreateView Sample", + "description": "CreateView creates a view.", + "file": "Client/CreateView/main.go", "language": "GO", "clientMethod": { - "shortName": "DeleteIssue", - "fullName": "google.cloud.contactcenterinsights.v1.Client.DeleteIssue", + "shortName": "CreateView", + "fullName": "google.cloud.contactcenterinsights.v1.Client.CreateView", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.DeleteIssueRequest", + "type": "contactcenterinsightspb.CreateViewRequest", "name": "req" }, { @@ -583,13 +769,14 @@ "name": "opts" } ], + "resultType": "*contactcenterinsightspb.View", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "DeleteIssue", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteIssue", + "shortName": "CreateView", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.CreateView", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -600,27 +787,27 @@ "segments": [ { "start": 18, - "end": 51, + "end": 53, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_DeleteIssueModel_sync", - "title": "contactcenterinsights DeleteIssueModel Sample", - "description": "DeleteIssueModel deletes an issue model.", - "file": "Client/DeleteIssueModel/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_DeleteAnalysis_sync", + "title": "contactcenterinsights DeleteAnalysis Sample", + "description": "DeleteAnalysis deletes an analysis.", + "file": "Client/DeleteAnalysis/main.go", "language": "GO", "clientMethod": { - "shortName": "DeleteIssueModel", - "fullName": "google.cloud.contactcenterinsights.v1.Client.DeleteIssueModel", + "shortName": "DeleteAnalysis", + "fullName": "google.cloud.contactcenterinsights.v1.Client.DeleteAnalysis", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.DeleteIssueModelRequest", + "type": "contactcenterinsightspb.DeleteAnalysisRequest", "name": "req" }, { @@ -628,14 +815,13 @@ "name": "opts" } ], - "resultType": "DeleteIssueModelOperation", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "DeleteIssueModel", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteIssueModel", + "shortName": "DeleteAnalysis", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteAnalysis", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -646,27 +832,27 @@ "segments": [ { "start": 18, - "end": 56, + "end": 51, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_DeletePhraseMatcher_sync", - "title": "contactcenterinsights DeletePhraseMatcher Sample", - "description": "DeletePhraseMatcher deletes a phrase matcher.", - "file": "Client/DeletePhraseMatcher/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_DeleteAnalysisRule_sync", + "title": "contactcenterinsights DeleteAnalysisRule Sample", + "description": "DeleteAnalysisRule deletes a analysis rule.", + "file": "Client/DeleteAnalysisRule/main.go", "language": "GO", "clientMethod": { - "shortName": "DeletePhraseMatcher", - "fullName": "google.cloud.contactcenterinsights.v1.Client.DeletePhraseMatcher", + "shortName": "DeleteAnalysisRule", + "fullName": "google.cloud.contactcenterinsights.v1.Client.DeleteAnalysisRule", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.DeletePhraseMatcherRequest", + "type": "contactcenterinsightspb.DeleteAnalysisRuleRequest", "name": "req" }, { @@ -679,8 +865,8 @@ "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "DeletePhraseMatcher", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeletePhraseMatcher", + "shortName": "DeleteAnalysisRule", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteAnalysisRule", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -697,21 +883,21 @@ ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_DeleteView_sync", - "title": "contactcenterinsights DeleteView Sample", - "description": "DeleteView deletes a view.", - "file": "Client/DeleteView/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_DeleteConversation_sync", + "title": "contactcenterinsights DeleteConversation Sample", + "description": "DeleteConversation deletes a conversation.", + "file": "Client/DeleteConversation/main.go", "language": "GO", "clientMethod": { - "shortName": "DeleteView", - "fullName": "google.cloud.contactcenterinsights.v1.Client.DeleteView", + "shortName": "DeleteConversation", + "fullName": "google.cloud.contactcenterinsights.v1.Client.DeleteConversation", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.DeleteViewRequest", + "type": "contactcenterinsightspb.DeleteConversationRequest", "name": "req" }, { @@ -724,8 +910,8 @@ "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "DeleteView", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteView", + "shortName": "DeleteConversation", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteConversation", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -742,21 +928,21 @@ ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_DeployIssueModel_sync", - "title": "contactcenterinsights DeployIssueModel Sample", - "description": "DeployIssueModel deploys an issue model. Returns an error if a model is already deployed.\nAn issue model can only be used in analysis after it has been deployed.", - "file": "Client/DeployIssueModel/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_DeleteFeedbackLabel_sync", + "title": "contactcenterinsights DeleteFeedbackLabel Sample", + "description": "DeleteFeedbackLabel delete feedback label.", + "file": "Client/DeleteFeedbackLabel/main.go", "language": "GO", "clientMethod": { - "shortName": "DeployIssueModel", - "fullName": "google.cloud.contactcenterinsights.v1.Client.DeployIssueModel", + "shortName": "DeleteFeedbackLabel", + "fullName": "google.cloud.contactcenterinsights.v1.Client.DeleteFeedbackLabel", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.DeployIssueModelRequest", + "type": "contactcenterinsightspb.DeleteFeedbackLabelRequest", "name": "req" }, { @@ -764,14 +950,13 @@ "name": "opts" } ], - "resultType": "DeployIssueModelOperation", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "DeployIssueModel", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeployIssueModel", + "shortName": "DeleteFeedbackLabel", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteFeedbackLabel", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -782,27 +967,1217 @@ "segments": [ { "start": 18, - "end": 58, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_DeleteIssue_sync", + "title": "contactcenterinsights DeleteIssue Sample", + "description": "DeleteIssue deletes an issue.", + "file": "Client/DeleteIssue/main.go", + "language": "GO", + "clientMethod": { + "shortName": "DeleteIssue", + "fullName": "google.cloud.contactcenterinsights.v1.Client.DeleteIssue", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.DeleteIssueRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "DeleteIssue", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteIssue", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_DeleteIssueModel_sync", + "title": "contactcenterinsights DeleteIssueModel Sample", + "description": "DeleteIssueModel deletes an issue model.", + "file": "Client/DeleteIssueModel/main.go", + "language": "GO", + "clientMethod": { + "shortName": "DeleteIssueModel", + "fullName": "google.cloud.contactcenterinsights.v1.Client.DeleteIssueModel", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.DeleteIssueModelRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "DeleteIssueModelOperation", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "DeleteIssueModel", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteIssueModel", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 56, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_DeletePhraseMatcher_sync", + "title": "contactcenterinsights DeletePhraseMatcher Sample", + "description": "DeletePhraseMatcher deletes a phrase matcher.", + "file": "Client/DeletePhraseMatcher/main.go", + "language": "GO", + "clientMethod": { + "shortName": "DeletePhraseMatcher", + "fullName": "google.cloud.contactcenterinsights.v1.Client.DeletePhraseMatcher", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.DeletePhraseMatcherRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "DeletePhraseMatcher", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeletePhraseMatcher", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_DeleteQaQuestion_sync", + "title": "contactcenterinsights DeleteQaQuestion Sample", + "description": "DeleteQaQuestion deletes a QaQuestion.", + "file": "Client/DeleteQaQuestion/main.go", + "language": "GO", + "clientMethod": { + "shortName": "DeleteQaQuestion", + "fullName": "google.cloud.contactcenterinsights.v1.Client.DeleteQaQuestion", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.DeleteQaQuestionRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "DeleteQaQuestion", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteQaQuestion", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_DeleteQaScorecard_sync", + "title": "contactcenterinsights DeleteQaScorecard Sample", + "description": "DeleteQaScorecard deletes a QaScorecard.", + "file": "Client/DeleteQaScorecard/main.go", + "language": "GO", + "clientMethod": { + "shortName": "DeleteQaScorecard", + "fullName": "google.cloud.contactcenterinsights.v1.Client.DeleteQaScorecard", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.DeleteQaScorecardRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "DeleteQaScorecard", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteQaScorecard", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_DeleteQaScorecardRevision_sync", + "title": "contactcenterinsights DeleteQaScorecardRevision Sample", + "description": "DeleteQaScorecardRevision deletes a QaScorecardRevision.", + "file": "Client/DeleteQaScorecardRevision/main.go", + "language": "GO", + "clientMethod": { + "shortName": "DeleteQaScorecardRevision", + "fullName": "google.cloud.contactcenterinsights.v1.Client.DeleteQaScorecardRevision", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.DeleteQaScorecardRevisionRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "DeleteQaScorecardRevision", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteQaScorecardRevision", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_DeleteView_sync", + "title": "contactcenterinsights DeleteView Sample", + "description": "DeleteView deletes a view.", + "file": "Client/DeleteView/main.go", + "language": "GO", + "clientMethod": { + "shortName": "DeleteView", + "fullName": "google.cloud.contactcenterinsights.v1.Client.DeleteView", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.DeleteViewRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "DeleteView", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeleteView", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_DeployIssueModel_sync", + "title": "contactcenterinsights DeployIssueModel Sample", + "description": "DeployIssueModel deploys an issue model. Returns an error if a model is already deployed.\nAn issue model can only be used in analysis after it has been deployed.", + "file": "Client/DeployIssueModel/main.go", + "language": "GO", + "clientMethod": { + "shortName": "DeployIssueModel", + "fullName": "google.cloud.contactcenterinsights.v1.Client.DeployIssueModel", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.DeployIssueModelRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "DeployIssueModelOperation", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "DeployIssueModel", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeployIssueModel", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 58, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_DeployQaScorecardRevision_sync", + "title": "contactcenterinsights DeployQaScorecardRevision Sample", + "description": "DeployQaScorecardRevision deploy a QaScorecardRevision.", + "file": "Client/DeployQaScorecardRevision/main.go", + "language": "GO", + "clientMethod": { + "shortName": "DeployQaScorecardRevision", + "fullName": "google.cloud.contactcenterinsights.v1.Client.DeployQaScorecardRevision", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.DeployQaScorecardRevisionRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*contactcenterinsightspb.QaScorecardRevision", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "DeployQaScorecardRevision", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.DeployQaScorecardRevision", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ExportInsightsData_sync", + "title": "contactcenterinsights ExportInsightsData Sample", + "description": "ExportInsightsData export insights data to a destination defined in the request body.", + "file": "Client/ExportInsightsData/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ExportInsightsData", + "fullName": "google.cloud.contactcenterinsights.v1.Client.ExportInsightsData", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.ExportInsightsDataRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "ExportInsightsDataOperation", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "ExportInsightsData", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ExportInsightsData", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 58, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ExportIssueModel_sync", + "title": "contactcenterinsights ExportIssueModel Sample", + "description": "ExportIssueModel exports an issue model to the provided destination.", + "file": "Client/ExportIssueModel/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ExportIssueModel", + "fullName": "google.cloud.contactcenterinsights.v1.Client.ExportIssueModel", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.ExportIssueModelRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "ExportIssueModelOperation", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "ExportIssueModel", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ExportIssueModel", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 58, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetAnalysis_sync", + "title": "contactcenterinsights GetAnalysis Sample", + "description": "GetAnalysis gets an analysis.", + "file": "Client/GetAnalysis/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetAnalysis", + "fullName": "google.cloud.contactcenterinsights.v1.Client.GetAnalysis", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.GetAnalysisRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*contactcenterinsightspb.Analysis", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "GetAnalysis", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetAnalysis", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetAnalysisRule_sync", + "title": "contactcenterinsights GetAnalysisRule Sample", + "description": "GetAnalysisRule get a analysis rule.", + "file": "Client/GetAnalysisRule/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetAnalysisRule", + "fullName": "google.cloud.contactcenterinsights.v1.Client.GetAnalysisRule", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.GetAnalysisRuleRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*contactcenterinsightspb.AnalysisRule", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "GetAnalysisRule", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetAnalysisRule", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetConversation_sync", + "title": "contactcenterinsights GetConversation Sample", + "description": "GetConversation gets a conversation.", + "file": "Client/GetConversation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetConversation", + "fullName": "google.cloud.contactcenterinsights.v1.Client.GetConversation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.GetConversationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*contactcenterinsightspb.Conversation", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "GetConversation", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetConversation", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetEncryptionSpec_sync", + "title": "contactcenterinsights GetEncryptionSpec Sample", + "description": "GetEncryptionSpec gets location-level encryption key specification.", + "file": "Client/GetEncryptionSpec/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetEncryptionSpec", + "fullName": "google.cloud.contactcenterinsights.v1.Client.GetEncryptionSpec", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.GetEncryptionSpecRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*contactcenterinsightspb.EncryptionSpec", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "GetEncryptionSpec", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetEncryptionSpec", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetFeedbackLabel_sync", + "title": "contactcenterinsights GetFeedbackLabel Sample", + "description": "GetFeedbackLabel get feedback label.", + "file": "Client/GetFeedbackLabel/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetFeedbackLabel", + "fullName": "google.cloud.contactcenterinsights.v1.Client.GetFeedbackLabel", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.GetFeedbackLabelRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*contactcenterinsightspb.FeedbackLabel", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "GetFeedbackLabel", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetFeedbackLabel", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetIssue_sync", + "title": "contactcenterinsights GetIssue Sample", + "description": "GetIssue gets an issue.", + "file": "Client/GetIssue/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetIssue", + "fullName": "google.cloud.contactcenterinsights.v1.Client.GetIssue", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.GetIssueRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*contactcenterinsightspb.Issue", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "GetIssue", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetIssue", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetIssueModel_sync", + "title": "contactcenterinsights GetIssueModel Sample", + "description": "GetIssueModel gets an issue model.", + "file": "Client/GetIssueModel/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetIssueModel", + "fullName": "google.cloud.contactcenterinsights.v1.Client.GetIssueModel", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.GetIssueModelRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*contactcenterinsightspb.IssueModel", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "GetIssueModel", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetIssueModel", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetOperation_sync", + "title": "contactcenterinsights GetOperation Sample", + "description": "GetOperation is a utility method from google.longrunning.Operations.", + "file": "Client/GetOperation/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetOperation", + "fullName": "google.cloud.contactcenterinsights.v1.Client.GetOperation", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.GetOperationRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*longrunningpb.Operation", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "GetOperation", + "fullName": "google.longrunning.Operations.GetOperation", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetPhraseMatcher_sync", + "title": "contactcenterinsights GetPhraseMatcher Sample", + "description": "GetPhraseMatcher gets a phrase matcher.", + "file": "Client/GetPhraseMatcher/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetPhraseMatcher", + "fullName": "google.cloud.contactcenterinsights.v1.Client.GetPhraseMatcher", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.GetPhraseMatcherRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*contactcenterinsightspb.PhraseMatcher", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "GetPhraseMatcher", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetPhraseMatcher", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetQaQuestion_sync", + "title": "contactcenterinsights GetQaQuestion Sample", + "description": "GetQaQuestion gets a QaQuestion.", + "file": "Client/GetQaQuestion/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetQaQuestion", + "fullName": "google.cloud.contactcenterinsights.v1.Client.GetQaQuestion", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.GetQaQuestionRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*contactcenterinsightspb.QaQuestion", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "GetQaQuestion", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetQaQuestion", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetQaScorecard_sync", + "title": "contactcenterinsights GetQaScorecard Sample", + "description": "GetQaScorecard gets a QaScorecard.", + "file": "Client/GetQaScorecard/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetQaScorecard", + "fullName": "google.cloud.contactcenterinsights.v1.Client.GetQaScorecard", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.GetQaScorecardRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*contactcenterinsightspb.QaScorecard", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "GetQaScorecard", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetQaScorecard", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetQaScorecardRevision_sync", + "title": "contactcenterinsights GetQaScorecardRevision Sample", + "description": "GetQaScorecardRevision gets a QaScorecardRevision.", + "file": "Client/GetQaScorecardRevision/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetQaScorecardRevision", + "fullName": "google.cloud.contactcenterinsights.v1.Client.GetQaScorecardRevision", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.GetQaScorecardRevisionRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*contactcenterinsightspb.QaScorecardRevision", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "GetQaScorecardRevision", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetQaScorecardRevision", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetSettings_sync", + "title": "contactcenterinsights GetSettings Sample", + "description": "GetSettings gets project-level settings.", + "file": "Client/GetSettings/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetSettings", + "fullName": "google.cloud.contactcenterinsights.v1.Client.GetSettings", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.GetSettingsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*contactcenterinsightspb.Settings", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "GetSettings", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetSettings", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetView_sync", + "title": "contactcenterinsights GetView Sample", + "description": "GetView gets a view.", + "file": "Client/GetView/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetView", + "fullName": "google.cloud.contactcenterinsights.v1.Client.GetView", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.GetViewRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*contactcenterinsightspb.View", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "GetView", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetView", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ImportIssueModel_sync", + "title": "contactcenterinsights ImportIssueModel Sample", + "description": "ImportIssueModel imports an issue model from a Cloud Storage bucket.", + "file": "Client/ImportIssueModel/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ImportIssueModel", + "fullName": "google.cloud.contactcenterinsights.v1.Client.ImportIssueModel", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "contactcenterinsightspb.ImportIssueModelRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "ImportIssueModelOperation", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "ImportIssueModel", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ImportIssueModel", + "service": { + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 58, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ExportInsightsData_sync", - "title": "contactcenterinsights ExportInsightsData Sample", - "description": "ExportInsightsData export insights data to a destination defined in the request body.", - "file": "Client/ExportInsightsData/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_IngestConversations_sync", + "title": "contactcenterinsights IngestConversations Sample", + "description": "IngestConversations imports conversations and processes them according to the user's\nconfiguration.", + "file": "Client/IngestConversations/main.go", "language": "GO", "clientMethod": { - "shortName": "ExportInsightsData", - "fullName": "google.cloud.contactcenterinsights.v1.Client.ExportInsightsData", + "shortName": "IngestConversations", + "fullName": "google.cloud.contactcenterinsights.v1.Client.IngestConversations", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.ExportInsightsDataRequest", + "type": "contactcenterinsightspb.IngestConversationsRequest", "name": "req" }, { @@ -810,14 +2185,14 @@ "name": "opts" } ], - "resultType": "ExportInsightsDataOperation", + "resultType": "IngestConversationsOperation", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "ExportInsightsData", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ExportInsightsData", + "shortName": "IngestConversations", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.IngestConversations", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -834,21 +2209,21 @@ ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ExportIssueModel_sync", - "title": "contactcenterinsights ExportIssueModel Sample", - "description": "ExportIssueModel exports an issue model to the provided destination.", - "file": "Client/ExportIssueModel/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_InitializeEncryptionSpec_sync", + "title": "contactcenterinsights InitializeEncryptionSpec Sample", + "description": "InitializeEncryptionSpec initializes a location-level encryption key specification. An error will\nresult if the location has resources already created before the\ninitialization. After the encryption specification is initialized at a\nlocation, it is immutable and all newly created resources under the\nlocation will be encrypted with the existing specification.", + "file": "Client/InitializeEncryptionSpec/main.go", "language": "GO", "clientMethod": { - "shortName": "ExportIssueModel", - "fullName": "google.cloud.contactcenterinsights.v1.Client.ExportIssueModel", + "shortName": "InitializeEncryptionSpec", + "fullName": "google.cloud.contactcenterinsights.v1.Client.InitializeEncryptionSpec", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.ExportIssueModelRequest", + "type": "contactcenterinsightspb.InitializeEncryptionSpecRequest", "name": "req" }, { @@ -856,14 +2231,14 @@ "name": "opts" } ], - "resultType": "ExportIssueModelOperation", + "resultType": "InitializeEncryptionSpecOperation", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "ExportIssueModel", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ExportIssueModel", + "shortName": "InitializeEncryptionSpec", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.InitializeEncryptionSpec", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -880,21 +2255,21 @@ ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetAnalysis_sync", - "title": "contactcenterinsights GetAnalysis Sample", - "description": "GetAnalysis gets an analysis.", - "file": "Client/GetAnalysis/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ListAllFeedbackLabels_sync", + "title": "contactcenterinsights ListAllFeedbackLabels Sample", + "description": "ListAllFeedbackLabels list all feedback labels by project number.", + "file": "Client/ListAllFeedbackLabels/main.go", "language": "GO", "clientMethod": { - "shortName": "GetAnalysis", - "fullName": "google.cloud.contactcenterinsights.v1.Client.GetAnalysis", + "shortName": "ListAllFeedbackLabels", + "fullName": "google.cloud.contactcenterinsights.v1.Client.ListAllFeedbackLabels", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.GetAnalysisRequest", + "type": "contactcenterinsightspb.ListAllFeedbackLabelsRequest", "name": "req" }, { @@ -902,14 +2277,14 @@ "name": "opts" } ], - "resultType": "*contactcenterinsightspb.Analysis", + "resultType": "FeedbackLabelIterator", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "GetAnalysis", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetAnalysis", + "shortName": "ListAllFeedbackLabels", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListAllFeedbackLabels", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -920,27 +2295,27 @@ "segments": [ { "start": 18, - "end": 53, + "end": 66, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetConversation_sync", - "title": "contactcenterinsights GetConversation Sample", - "description": "GetConversation gets a conversation.", - "file": "Client/GetConversation/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ListAnalyses_sync", + "title": "contactcenterinsights ListAnalyses Sample", + "description": "ListAnalyses lists analyses.", + "file": "Client/ListAnalyses/main.go", "language": "GO", "clientMethod": { - "shortName": "GetConversation", - "fullName": "google.cloud.contactcenterinsights.v1.Client.GetConversation", + "shortName": "ListAnalyses", + "fullName": "google.cloud.contactcenterinsights.v1.Client.ListAnalyses", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.GetConversationRequest", + "type": "contactcenterinsightspb.ListAnalysesRequest", "name": "req" }, { @@ -948,14 +2323,14 @@ "name": "opts" } ], - "resultType": "*contactcenterinsightspb.Conversation", + "resultType": "AnalysisIterator", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "GetConversation", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetConversation", + "shortName": "ListAnalyses", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListAnalyses", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -966,27 +2341,27 @@ "segments": [ { "start": 18, - "end": 53, + "end": 66, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetEncryptionSpec_sync", - "title": "contactcenterinsights GetEncryptionSpec Sample", - "description": "GetEncryptionSpec gets location-level encryption key specification.", - "file": "Client/GetEncryptionSpec/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ListAnalysisRules_sync", + "title": "contactcenterinsights ListAnalysisRules Sample", + "description": "ListAnalysisRules lists analysis rules.", + "file": "Client/ListAnalysisRules/main.go", "language": "GO", "clientMethod": { - "shortName": "GetEncryptionSpec", - "fullName": "google.cloud.contactcenterinsights.v1.Client.GetEncryptionSpec", + "shortName": "ListAnalysisRules", + "fullName": "google.cloud.contactcenterinsights.v1.Client.ListAnalysisRules", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.GetEncryptionSpecRequest", + "type": "contactcenterinsightspb.ListAnalysisRulesRequest", "name": "req" }, { @@ -994,14 +2369,14 @@ "name": "opts" } ], - "resultType": "*contactcenterinsightspb.EncryptionSpec", + "resultType": "AnalysisRuleIterator", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "GetEncryptionSpec", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetEncryptionSpec", + "shortName": "ListAnalysisRules", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListAnalysisRules", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -1012,27 +2387,27 @@ "segments": [ { "start": 18, - "end": 53, + "end": 66, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetIssue_sync", - "title": "contactcenterinsights GetIssue Sample", - "description": "GetIssue gets an issue.", - "file": "Client/GetIssue/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ListConversations_sync", + "title": "contactcenterinsights ListConversations Sample", + "description": "ListConversations lists conversations.", + "file": "Client/ListConversations/main.go", "language": "GO", "clientMethod": { - "shortName": "GetIssue", - "fullName": "google.cloud.contactcenterinsights.v1.Client.GetIssue", + "shortName": "ListConversations", + "fullName": "google.cloud.contactcenterinsights.v1.Client.ListConversations", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.GetIssueRequest", + "type": "contactcenterinsightspb.ListConversationsRequest", "name": "req" }, { @@ -1040,14 +2415,14 @@ "name": "opts" } ], - "resultType": "*contactcenterinsightspb.Issue", + "resultType": "ConversationIterator", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "GetIssue", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetIssue", + "shortName": "ListConversations", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListConversations", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -1058,27 +2433,27 @@ "segments": [ { "start": 18, - "end": 53, + "end": 66, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetIssueModel_sync", - "title": "contactcenterinsights GetIssueModel Sample", - "description": "GetIssueModel gets an issue model.", - "file": "Client/GetIssueModel/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ListFeedbackLabels_sync", + "title": "contactcenterinsights ListFeedbackLabels Sample", + "description": "ListFeedbackLabels list feedback labels.", + "file": "Client/ListFeedbackLabels/main.go", "language": "GO", "clientMethod": { - "shortName": "GetIssueModel", - "fullName": "google.cloud.contactcenterinsights.v1.Client.GetIssueModel", + "shortName": "ListFeedbackLabels", + "fullName": "google.cloud.contactcenterinsights.v1.Client.ListFeedbackLabels", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.GetIssueModelRequest", + "type": "contactcenterinsightspb.ListFeedbackLabelsRequest", "name": "req" }, { @@ -1086,14 +2461,14 @@ "name": "opts" } ], - "resultType": "*contactcenterinsightspb.IssueModel", + "resultType": "FeedbackLabelIterator", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "GetIssueModel", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetIssueModel", + "shortName": "ListFeedbackLabels", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListFeedbackLabels", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -1104,27 +2479,27 @@ "segments": [ { "start": 18, - "end": 53, + "end": 66, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetOperation_sync", - "title": "contactcenterinsights GetOperation Sample", - "description": "GetOperation is a utility method from google.longrunning.Operations.", - "file": "Client/GetOperation/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ListIssueModels_sync", + "title": "contactcenterinsights ListIssueModels Sample", + "description": "ListIssueModels lists issue models.", + "file": "Client/ListIssueModels/main.go", "language": "GO", "clientMethod": { - "shortName": "GetOperation", - "fullName": "google.cloud.contactcenterinsights.v1.Client.GetOperation", + "shortName": "ListIssueModels", + "fullName": "google.cloud.contactcenterinsights.v1.Client.ListIssueModels", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "longrunningpb.GetOperationRequest", + "type": "contactcenterinsightspb.ListIssueModelsRequest", "name": "req" }, { @@ -1132,17 +2507,17 @@ "name": "opts" } ], - "resultType": "*longrunningpb.Operation", + "resultType": "*contactcenterinsightspb.ListIssueModelsResponse", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "GetOperation", - "fullName": "google.longrunning.Operations.GetOperation", + "shortName": "ListIssueModels", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListIssueModels", "service": { - "shortName": "Operations", - "fullName": "google.longrunning.Operations" + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" } } }, @@ -1156,21 +2531,21 @@ ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetPhraseMatcher_sync", - "title": "contactcenterinsights GetPhraseMatcher Sample", - "description": "GetPhraseMatcher gets a phrase matcher.", - "file": "Client/GetPhraseMatcher/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ListIssues_sync", + "title": "contactcenterinsights ListIssues Sample", + "description": "ListIssues lists issues.", + "file": "Client/ListIssues/main.go", "language": "GO", "clientMethod": { - "shortName": "GetPhraseMatcher", - "fullName": "google.cloud.contactcenterinsights.v1.Client.GetPhraseMatcher", + "shortName": "ListIssues", + "fullName": "google.cloud.contactcenterinsights.v1.Client.ListIssues", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.GetPhraseMatcherRequest", + "type": "contactcenterinsightspb.ListIssuesRequest", "name": "req" }, { @@ -1178,14 +2553,14 @@ "name": "opts" } ], - "resultType": "*contactcenterinsightspb.PhraseMatcher", + "resultType": "*contactcenterinsightspb.ListIssuesResponse", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "GetPhraseMatcher", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetPhraseMatcher", + "shortName": "ListIssues", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListIssues", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -1202,21 +2577,67 @@ ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetSettings_sync", - "title": "contactcenterinsights GetSettings Sample", - "description": "GetSettings gets project-level settings.", - "file": "Client/GetSettings/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ListOperations_sync", + "title": "contactcenterinsights ListOperations Sample", + "description": "ListOperations is a utility method from google.longrunning.Operations.", + "file": "Client/ListOperations/main.go", "language": "GO", "clientMethod": { - "shortName": "GetSettings", - "fullName": "google.cloud.contactcenterinsights.v1.Client.GetSettings", + "shortName": "ListOperations", + "fullName": "google.cloud.contactcenterinsights.v1.Client.ListOperations", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "longrunningpb.ListOperationsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "OperationIterator", + "client": { + "shortName": "Client", + "fullName": "google.cloud.contactcenterinsights.v1.Client" + }, + "method": { + "shortName": "ListOperations", + "fullName": "google.longrunning.Operations.ListOperations", + "service": { + "shortName": "Operations", + "fullName": "google.longrunning.Operations" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, + { + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ListPhraseMatchers_sync", + "title": "contactcenterinsights ListPhraseMatchers Sample", + "description": "ListPhraseMatchers lists phrase matchers.", + "file": "Client/ListPhraseMatchers/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListPhraseMatchers", + "fullName": "google.cloud.contactcenterinsights.v1.Client.ListPhraseMatchers", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.GetSettingsRequest", + "type": "contactcenterinsightspb.ListPhraseMatchersRequest", "name": "req" }, { @@ -1224,14 +2645,14 @@ "name": "opts" } ], - "resultType": "*contactcenterinsightspb.Settings", + "resultType": "PhraseMatcherIterator", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "GetSettings", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetSettings", + "shortName": "ListPhraseMatchers", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListPhraseMatchers", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -1242,27 +2663,27 @@ "segments": [ { "start": 18, - "end": 53, + "end": 66, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_GetView_sync", - "title": "contactcenterinsights GetView Sample", - "description": "GetView gets a view.", - "file": "Client/GetView/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ListQaQuestions_sync", + "title": "contactcenterinsights ListQaQuestions Sample", + "description": "ListQaQuestions lists QaQuestions.", + "file": "Client/ListQaQuestions/main.go", "language": "GO", "clientMethod": { - "shortName": "GetView", - "fullName": "google.cloud.contactcenterinsights.v1.Client.GetView", + "shortName": "ListQaQuestions", + "fullName": "google.cloud.contactcenterinsights.v1.Client.ListQaQuestions", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.GetViewRequest", + "type": "contactcenterinsightspb.ListQaQuestionsRequest", "name": "req" }, { @@ -1270,14 +2691,14 @@ "name": "opts" } ], - "resultType": "*contactcenterinsightspb.View", + "resultType": "QaQuestionIterator", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "GetView", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.GetView", + "shortName": "ListQaQuestions", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListQaQuestions", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -1288,27 +2709,27 @@ "segments": [ { "start": 18, - "end": 53, + "end": 66, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ImportIssueModel_sync", - "title": "contactcenterinsights ImportIssueModel Sample", - "description": "ImportIssueModel imports an issue model from a Cloud Storage bucket.", - "file": "Client/ImportIssueModel/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ListQaScorecardRevisions_sync", + "title": "contactcenterinsights ListQaScorecardRevisions Sample", + "description": "ListQaScorecardRevisions lists all revisions under the parent QaScorecard.", + "file": "Client/ListQaScorecardRevisions/main.go", "language": "GO", "clientMethod": { - "shortName": "ImportIssueModel", - "fullName": "google.cloud.contactcenterinsights.v1.Client.ImportIssueModel", + "shortName": "ListQaScorecardRevisions", + "fullName": "google.cloud.contactcenterinsights.v1.Client.ListQaScorecardRevisions", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.ImportIssueModelRequest", + "type": "contactcenterinsightspb.ListQaScorecardRevisionsRequest", "name": "req" }, { @@ -1316,14 +2737,14 @@ "name": "opts" } ], - "resultType": "ImportIssueModelOperation", + "resultType": "QaScorecardRevisionIterator", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "ImportIssueModel", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ImportIssueModel", + "shortName": "ListQaScorecardRevisions", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListQaScorecardRevisions", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -1334,27 +2755,27 @@ "segments": [ { "start": 18, - "end": 58, + "end": 66, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_IngestConversations_sync", - "title": "contactcenterinsights IngestConversations Sample", - "description": "IngestConversations imports conversations and processes them according to the user's\nconfiguration.", - "file": "Client/IngestConversations/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ListQaScorecards_sync", + "title": "contactcenterinsights ListQaScorecards Sample", + "description": "ListQaScorecards lists QaScorecards.", + "file": "Client/ListQaScorecards/main.go", "language": "GO", "clientMethod": { - "shortName": "IngestConversations", - "fullName": "google.cloud.contactcenterinsights.v1.Client.IngestConversations", + "shortName": "ListQaScorecards", + "fullName": "google.cloud.contactcenterinsights.v1.Client.ListQaScorecards", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.IngestConversationsRequest", + "type": "contactcenterinsightspb.ListQaScorecardsRequest", "name": "req" }, { @@ -1362,14 +2783,14 @@ "name": "opts" } ], - "resultType": "IngestConversationsOperation", + "resultType": "QaScorecardIterator", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "IngestConversations", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.IngestConversations", + "shortName": "ListQaScorecards", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListQaScorecards", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -1380,27 +2801,27 @@ "segments": [ { "start": 18, - "end": 58, + "end": 66, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_InitializeEncryptionSpec_sync", - "title": "contactcenterinsights InitializeEncryptionSpec Sample", - "description": "InitializeEncryptionSpec initializes a location-level encryption key specification. An error will\nbe thrown if the location has resources already created before the\ninitialization. Once the encryption specification is initialized at a\nlocation, it is immutable and all newly created resources under the\nlocation will be encrypted with the existing specification.", - "file": "Client/InitializeEncryptionSpec/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ListViews_sync", + "title": "contactcenterinsights ListViews Sample", + "description": "ListViews lists views.", + "file": "Client/ListViews/main.go", "language": "GO", "clientMethod": { - "shortName": "InitializeEncryptionSpec", - "fullName": "google.cloud.contactcenterinsights.v1.Client.InitializeEncryptionSpec", + "shortName": "ListViews", + "fullName": "google.cloud.contactcenterinsights.v1.Client.ListViews", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.InitializeEncryptionSpecRequest", + "type": "contactcenterinsightspb.ListViewsRequest", "name": "req" }, { @@ -1408,14 +2829,14 @@ "name": "opts" } ], - "resultType": "InitializeEncryptionSpecOperation", + "resultType": "ViewIterator", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "InitializeEncryptionSpec", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.InitializeEncryptionSpec", + "shortName": "ListViews", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListViews", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -1426,27 +2847,27 @@ "segments": [ { "start": 18, - "end": 58, + "end": 66, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ListAnalyses_sync", - "title": "contactcenterinsights ListAnalyses Sample", - "description": "ListAnalyses lists analyses.", - "file": "Client/ListAnalyses/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_QueryMetrics_sync", + "title": "contactcenterinsights QueryMetrics Sample", + "description": "QueryMetrics query metrics.", + "file": "Client/QueryMetrics/main.go", "language": "GO", "clientMethod": { - "shortName": "ListAnalyses", - "fullName": "google.cloud.contactcenterinsights.v1.Client.ListAnalyses", + "shortName": "QueryMetrics", + "fullName": "google.cloud.contactcenterinsights.v1.Client.QueryMetrics", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.ListAnalysesRequest", + "type": "contactcenterinsightspb.QueryMetricsRequest", "name": "req" }, { @@ -1454,14 +2875,14 @@ "name": "opts" } ], - "resultType": "AnalysisIterator", + "resultType": "QueryMetricsOperation", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "ListAnalyses", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListAnalyses", + "shortName": "QueryMetrics", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.QueryMetrics", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -1472,27 +2893,27 @@ "segments": [ { "start": 18, - "end": 66, + "end": 58, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ListConversations_sync", - "title": "contactcenterinsights ListConversations Sample", - "description": "ListConversations lists conversations.", - "file": "Client/ListConversations/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_TuneQaScorecardRevision_sync", + "title": "contactcenterinsights TuneQaScorecardRevision Sample", + "description": "TuneQaScorecardRevision fine tune one or more QaModels.", + "file": "Client/TuneQaScorecardRevision/main.go", "language": "GO", "clientMethod": { - "shortName": "ListConversations", - "fullName": "google.cloud.contactcenterinsights.v1.Client.ListConversations", + "shortName": "TuneQaScorecardRevision", + "fullName": "google.cloud.contactcenterinsights.v1.Client.TuneQaScorecardRevision", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.ListConversationsRequest", + "type": "contactcenterinsightspb.TuneQaScorecardRevisionRequest", "name": "req" }, { @@ -1500,14 +2921,14 @@ "name": "opts" } ], - "resultType": "ConversationIterator", + "resultType": "TuneQaScorecardRevisionOperation", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "ListConversations", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListConversations", + "shortName": "TuneQaScorecardRevision", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.TuneQaScorecardRevision", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -1518,27 +2939,27 @@ "segments": [ { "start": 18, - "end": 66, + "end": 58, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ListIssueModels_sync", - "title": "contactcenterinsights ListIssueModels Sample", - "description": "ListIssueModels lists issue models.", - "file": "Client/ListIssueModels/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_UndeployIssueModel_sync", + "title": "contactcenterinsights UndeployIssueModel Sample", + "description": "UndeployIssueModel undeploys an issue model.\nAn issue model can not be used in analysis after it has been undeployed.", + "file": "Client/UndeployIssueModel/main.go", "language": "GO", "clientMethod": { - "shortName": "ListIssueModels", - "fullName": "google.cloud.contactcenterinsights.v1.Client.ListIssueModels", + "shortName": "UndeployIssueModel", + "fullName": "google.cloud.contactcenterinsights.v1.Client.UndeployIssueModel", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.ListIssueModelsRequest", + "type": "contactcenterinsightspb.UndeployIssueModelRequest", "name": "req" }, { @@ -1546,14 +2967,14 @@ "name": "opts" } ], - "resultType": "*contactcenterinsightspb.ListIssueModelsResponse", + "resultType": "UndeployIssueModelOperation", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "ListIssueModels", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListIssueModels", + "shortName": "UndeployIssueModel", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.UndeployIssueModel", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -1564,27 +2985,27 @@ "segments": [ { "start": 18, - "end": 53, + "end": 58, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ListIssues_sync", - "title": "contactcenterinsights ListIssues Sample", - "description": "ListIssues lists issues.", - "file": "Client/ListIssues/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_UndeployQaScorecardRevision_sync", + "title": "contactcenterinsights UndeployQaScorecardRevision Sample", + "description": "UndeployQaScorecardRevision undeploy a QaScorecardRevision.", + "file": "Client/UndeployQaScorecardRevision/main.go", "language": "GO", "clientMethod": { - "shortName": "ListIssues", - "fullName": "google.cloud.contactcenterinsights.v1.Client.ListIssues", + "shortName": "UndeployQaScorecardRevision", + "fullName": "google.cloud.contactcenterinsights.v1.Client.UndeployQaScorecardRevision", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.ListIssuesRequest", + "type": "contactcenterinsightspb.UndeployQaScorecardRevisionRequest", "name": "req" }, { @@ -1592,14 +3013,14 @@ "name": "opts" } ], - "resultType": "*contactcenterinsightspb.ListIssuesResponse", + "resultType": "*contactcenterinsightspb.QaScorecardRevision", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "ListIssues", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListIssues", + "shortName": "UndeployQaScorecardRevision", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.UndeployQaScorecardRevision", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -1616,21 +3037,21 @@ ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ListOperations_sync", - "title": "contactcenterinsights ListOperations Sample", - "description": "ListOperations is a utility method from google.longrunning.Operations.", - "file": "Client/ListOperations/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_UpdateAnalysisRule_sync", + "title": "contactcenterinsights UpdateAnalysisRule Sample", + "description": "UpdateAnalysisRule updates a analysis rule.", + "file": "Client/UpdateAnalysisRule/main.go", "language": "GO", "clientMethod": { - "shortName": "ListOperations", - "fullName": "google.cloud.contactcenterinsights.v1.Client.ListOperations", + "shortName": "UpdateAnalysisRule", + "fullName": "google.cloud.contactcenterinsights.v1.Client.UpdateAnalysisRule", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "longrunningpb.ListOperationsRequest", + "type": "contactcenterinsightspb.UpdateAnalysisRuleRequest", "name": "req" }, { @@ -1638,17 +3059,17 @@ "name": "opts" } ], - "resultType": "OperationIterator", + "resultType": "*contactcenterinsightspb.AnalysisRule", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "ListOperations", - "fullName": "google.longrunning.Operations.ListOperations", + "shortName": "UpdateAnalysisRule", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateAnalysisRule", "service": { - "shortName": "Operations", - "fullName": "google.longrunning.Operations" + "shortName": "ContactCenterInsights", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" } } }, @@ -1656,27 +3077,27 @@ "segments": [ { "start": 18, - "end": 66, + "end": 53, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ListPhraseMatchers_sync", - "title": "contactcenterinsights ListPhraseMatchers Sample", - "description": "ListPhraseMatchers lists phrase matchers.", - "file": "Client/ListPhraseMatchers/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_UpdateConversation_sync", + "title": "contactcenterinsights UpdateConversation Sample", + "description": "UpdateConversation updates a conversation.", + "file": "Client/UpdateConversation/main.go", "language": "GO", "clientMethod": { - "shortName": "ListPhraseMatchers", - "fullName": "google.cloud.contactcenterinsights.v1.Client.ListPhraseMatchers", + "shortName": "UpdateConversation", + "fullName": "google.cloud.contactcenterinsights.v1.Client.UpdateConversation", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.ListPhraseMatchersRequest", + "type": "contactcenterinsightspb.UpdateConversationRequest", "name": "req" }, { @@ -1684,14 +3105,14 @@ "name": "opts" } ], - "resultType": "PhraseMatcherIterator", + "resultType": "*contactcenterinsightspb.Conversation", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "ListPhraseMatchers", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListPhraseMatchers", + "shortName": "UpdateConversation", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateConversation", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -1702,27 +3123,27 @@ "segments": [ { "start": 18, - "end": 66, + "end": 53, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_ListViews_sync", - "title": "contactcenterinsights ListViews Sample", - "description": "ListViews lists views.", - "file": "Client/ListViews/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_UpdateFeedbackLabel_sync", + "title": "contactcenterinsights UpdateFeedbackLabel Sample", + "description": "UpdateFeedbackLabel update feedback label.", + "file": "Client/UpdateFeedbackLabel/main.go", "language": "GO", "clientMethod": { - "shortName": "ListViews", - "fullName": "google.cloud.contactcenterinsights.v1.Client.ListViews", + "shortName": "UpdateFeedbackLabel", + "fullName": "google.cloud.contactcenterinsights.v1.Client.UpdateFeedbackLabel", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.ListViewsRequest", + "type": "contactcenterinsightspb.UpdateFeedbackLabelRequest", "name": "req" }, { @@ -1730,14 +3151,14 @@ "name": "opts" } ], - "resultType": "ViewIterator", + "resultType": "*contactcenterinsightspb.FeedbackLabel", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "ListViews", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.ListViews", + "shortName": "UpdateFeedbackLabel", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateFeedbackLabel", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -1748,27 +3169,27 @@ "segments": [ { "start": 18, - "end": 66, + "end": 53, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_UndeployIssueModel_sync", - "title": "contactcenterinsights UndeployIssueModel Sample", - "description": "UndeployIssueModel undeploys an issue model.\nAn issue model can not be used in analysis after it has been undeployed.", - "file": "Client/UndeployIssueModel/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_UpdateIssue_sync", + "title": "contactcenterinsights UpdateIssue Sample", + "description": "UpdateIssue updates an issue.", + "file": "Client/UpdateIssue/main.go", "language": "GO", "clientMethod": { - "shortName": "UndeployIssueModel", - "fullName": "google.cloud.contactcenterinsights.v1.Client.UndeployIssueModel", + "shortName": "UpdateIssue", + "fullName": "google.cloud.contactcenterinsights.v1.Client.UpdateIssue", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.UndeployIssueModelRequest", + "type": "contactcenterinsightspb.UpdateIssueRequest", "name": "req" }, { @@ -1776,14 +3197,14 @@ "name": "opts" } ], - "resultType": "UndeployIssueModelOperation", + "resultType": "*contactcenterinsightspb.Issue", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "UndeployIssueModel", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.UndeployIssueModel", + "shortName": "UpdateIssue", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateIssue", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -1794,27 +3215,27 @@ "segments": [ { "start": 18, - "end": 58, + "end": 53, "type": "FULL" } ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_UpdateConversation_sync", - "title": "contactcenterinsights UpdateConversation Sample", - "description": "UpdateConversation updates a conversation.", - "file": "Client/UpdateConversation/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_UpdateIssueModel_sync", + "title": "contactcenterinsights UpdateIssueModel Sample", + "description": "UpdateIssueModel updates an issue model.", + "file": "Client/UpdateIssueModel/main.go", "language": "GO", "clientMethod": { - "shortName": "UpdateConversation", - "fullName": "google.cloud.contactcenterinsights.v1.Client.UpdateConversation", + "shortName": "UpdateIssueModel", + "fullName": "google.cloud.contactcenterinsights.v1.Client.UpdateIssueModel", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.UpdateConversationRequest", + "type": "contactcenterinsightspb.UpdateIssueModelRequest", "name": "req" }, { @@ -1822,14 +3243,14 @@ "name": "opts" } ], - "resultType": "*contactcenterinsightspb.Conversation", + "resultType": "*contactcenterinsightspb.IssueModel", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "UpdateConversation", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateConversation", + "shortName": "UpdateIssueModel", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateIssueModel", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -1846,21 +3267,21 @@ ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_UpdateIssue_sync", - "title": "contactcenterinsights UpdateIssue Sample", - "description": "UpdateIssue updates an issue.", - "file": "Client/UpdateIssue/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_UpdatePhraseMatcher_sync", + "title": "contactcenterinsights UpdatePhraseMatcher Sample", + "description": "UpdatePhraseMatcher updates a phrase matcher.", + "file": "Client/UpdatePhraseMatcher/main.go", "language": "GO", "clientMethod": { - "shortName": "UpdateIssue", - "fullName": "google.cloud.contactcenterinsights.v1.Client.UpdateIssue", + "shortName": "UpdatePhraseMatcher", + "fullName": "google.cloud.contactcenterinsights.v1.Client.UpdatePhraseMatcher", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.UpdateIssueRequest", + "type": "contactcenterinsightspb.UpdatePhraseMatcherRequest", "name": "req" }, { @@ -1868,14 +3289,14 @@ "name": "opts" } ], - "resultType": "*contactcenterinsightspb.Issue", + "resultType": "*contactcenterinsightspb.PhraseMatcher", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "UpdateIssue", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateIssue", + "shortName": "UpdatePhraseMatcher", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdatePhraseMatcher", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -1892,21 +3313,21 @@ ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_UpdateIssueModel_sync", - "title": "contactcenterinsights UpdateIssueModel Sample", - "description": "UpdateIssueModel updates an issue model.", - "file": "Client/UpdateIssueModel/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_UpdateQaQuestion_sync", + "title": "contactcenterinsights UpdateQaQuestion Sample", + "description": "UpdateQaQuestion updates a QaQuestion.", + "file": "Client/UpdateQaQuestion/main.go", "language": "GO", "clientMethod": { - "shortName": "UpdateIssueModel", - "fullName": "google.cloud.contactcenterinsights.v1.Client.UpdateIssueModel", + "shortName": "UpdateQaQuestion", + "fullName": "google.cloud.contactcenterinsights.v1.Client.UpdateQaQuestion", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.UpdateIssueModelRequest", + "type": "contactcenterinsightspb.UpdateQaQuestionRequest", "name": "req" }, { @@ -1914,14 +3335,14 @@ "name": "opts" } ], - "resultType": "*contactcenterinsightspb.IssueModel", + "resultType": "*contactcenterinsightspb.QaQuestion", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "UpdateIssueModel", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateIssueModel", + "shortName": "UpdateQaQuestion", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateQaQuestion", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" @@ -1938,21 +3359,21 @@ ] }, { - "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_UpdatePhraseMatcher_sync", - "title": "contactcenterinsights UpdatePhraseMatcher Sample", - "description": "UpdatePhraseMatcher updates a phrase matcher.", - "file": "Client/UpdatePhraseMatcher/main.go", + "regionTag": "contactcenterinsights_v1_generated_ContactCenterInsights_UpdateQaScorecard_sync", + "title": "contactcenterinsights UpdateQaScorecard Sample", + "description": "UpdateQaScorecard updates a QaScorecard.", + "file": "Client/UpdateQaScorecard/main.go", "language": "GO", "clientMethod": { - "shortName": "UpdatePhraseMatcher", - "fullName": "google.cloud.contactcenterinsights.v1.Client.UpdatePhraseMatcher", + "shortName": "UpdateQaScorecard", + "fullName": "google.cloud.contactcenterinsights.v1.Client.UpdateQaScorecard", "parameters": [ { "type": "context.Context", "name": "ctx" }, { - "type": "contactcenterinsightspb.UpdatePhraseMatcherRequest", + "type": "contactcenterinsightspb.UpdateQaScorecardRequest", "name": "req" }, { @@ -1960,14 +3381,14 @@ "name": "opts" } ], - "resultType": "*contactcenterinsightspb.PhraseMatcher", + "resultType": "*contactcenterinsightspb.QaScorecard", "client": { "shortName": "Client", "fullName": "google.cloud.contactcenterinsights.v1.Client" }, "method": { - "shortName": "UpdatePhraseMatcher", - "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdatePhraseMatcher", + "shortName": "UpdateQaScorecard", + "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights.UpdateQaScorecard", "service": { "shortName": "ContactCenterInsights", "fullName": "google.cloud.contactcenterinsights.v1.ContactCenterInsights" diff --git a/internal/generated/snippets/container/apiv1/snippet_metadata.google.container.v1.json b/internal/generated/snippets/container/apiv1/snippet_metadata.google.container.v1.json index 87fd1f0a6564..531740734223 100644 --- a/internal/generated/snippets/container/apiv1/snippet_metadata.google.container.v1.json +++ b/internal/generated/snippets/container/apiv1/snippet_metadata.google.container.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/container/apiv1", - "version": "1.41.0", + "version": "1.42.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/datacatalog/apiv1/snippet_metadata.google.cloud.datacatalog.v1.json b/internal/generated/snippets/datacatalog/apiv1/snippet_metadata.google.cloud.datacatalog.v1.json index d870fc990c83..261fcc0b75db 100644 --- a/internal/generated/snippets/datacatalog/apiv1/snippet_metadata.google.cloud.datacatalog.v1.json +++ b/internal/generated/snippets/datacatalog/apiv1/snippet_metadata.google.cloud.datacatalog.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/datacatalog/apiv1", - "version": "1.22.2", + "version": "1.23.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/datacatalog/apiv1beta1/snippet_metadata.google.cloud.datacatalog.v1beta1.json b/internal/generated/snippets/datacatalog/apiv1beta1/snippet_metadata.google.cloud.datacatalog.v1beta1.json index a8c8b07e279b..de2162e55ef4 100644 --- a/internal/generated/snippets/datacatalog/apiv1beta1/snippet_metadata.google.cloud.datacatalog.v1beta1.json +++ b/internal/generated/snippets/datacatalog/apiv1beta1/snippet_metadata.google.cloud.datacatalog.v1beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/datacatalog/apiv1beta1", - "version": "1.22.2", + "version": "1.23.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/datacatalog/lineage/apiv1/snippet_metadata.google.cloud.datacatalog.lineage.v1.json b/internal/generated/snippets/datacatalog/lineage/apiv1/snippet_metadata.google.cloud.datacatalog.lineage.v1.json index 433387600440..cdba160c9922 100644 --- a/internal/generated/snippets/datacatalog/lineage/apiv1/snippet_metadata.google.cloud.datacatalog.lineage.v1.json +++ b/internal/generated/snippets/datacatalog/lineage/apiv1/snippet_metadata.google.cloud.datacatalog.lineage.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/datacatalog/lineage/apiv1", - "version": "1.22.2", + "version": "1.23.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dataplex/apiv1/CatalogClient/CancelMetadataJob/main.go b/internal/generated/snippets/dataplex/apiv1/CatalogClient/CancelMetadataJob/main.go new file mode 100644 index 000000000000..6f6f9064e48c --- /dev/null +++ b/internal/generated/snippets/dataplex/apiv1/CatalogClient/CancelMetadataJob/main.go @@ -0,0 +1,51 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START dataplex_v1_generated_CatalogService_CancelMetadataJob_sync] + +package main + +import ( + "context" + + dataplex "cloud.google.com/go/dataplex/apiv1" + dataplexpb "cloud.google.com/go/dataplex/apiv1/dataplexpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := dataplex.NewCatalogClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &dataplexpb.CancelMetadataJobRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/dataplex/apiv1/dataplexpb#CancelMetadataJobRequest. + } + err = c.CancelMetadataJob(ctx, req) + if err != nil { + // TODO: Handle error. + } +} + +// [END dataplex_v1_generated_CatalogService_CancelMetadataJob_sync] diff --git a/internal/generated/snippets/dataplex/apiv1/CatalogClient/CreateMetadataJob/main.go b/internal/generated/snippets/dataplex/apiv1/CatalogClient/CreateMetadataJob/main.go new file mode 100644 index 000000000000..ddc9aa227ceb --- /dev/null +++ b/internal/generated/snippets/dataplex/apiv1/CatalogClient/CreateMetadataJob/main.go @@ -0,0 +1,58 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START dataplex_v1_generated_CatalogService_CreateMetadataJob_sync] + +package main + +import ( + "context" + + dataplex "cloud.google.com/go/dataplex/apiv1" + dataplexpb "cloud.google.com/go/dataplex/apiv1/dataplexpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := dataplex.NewCatalogClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &dataplexpb.CreateMetadataJobRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/dataplex/apiv1/dataplexpb#CreateMetadataJobRequest. + } + op, err := c.CreateMetadataJob(ctx, req) + if err != nil { + // TODO: Handle error. + } + + resp, err := op.Wait(ctx) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END dataplex_v1_generated_CatalogService_CreateMetadataJob_sync] diff --git a/internal/generated/snippets/dataplex/apiv1/CatalogClient/GetMetadataJob/main.go b/internal/generated/snippets/dataplex/apiv1/CatalogClient/GetMetadataJob/main.go new file mode 100644 index 000000000000..709e97850685 --- /dev/null +++ b/internal/generated/snippets/dataplex/apiv1/CatalogClient/GetMetadataJob/main.go @@ -0,0 +1,53 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START dataplex_v1_generated_CatalogService_GetMetadataJob_sync] + +package main + +import ( + "context" + + dataplex "cloud.google.com/go/dataplex/apiv1" + dataplexpb "cloud.google.com/go/dataplex/apiv1/dataplexpb" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := dataplex.NewCatalogClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &dataplexpb.GetMetadataJobRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/dataplex/apiv1/dataplexpb#GetMetadataJobRequest. + } + resp, err := c.GetMetadataJob(ctx, req) + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp +} + +// [END dataplex_v1_generated_CatalogService_GetMetadataJob_sync] diff --git a/internal/generated/snippets/dataplex/apiv1/CatalogClient/ListMetadataJobs/main.go b/internal/generated/snippets/dataplex/apiv1/CatalogClient/ListMetadataJobs/main.go new file mode 100644 index 000000000000..9ebee4f464d4 --- /dev/null +++ b/internal/generated/snippets/dataplex/apiv1/CatalogClient/ListMetadataJobs/main.go @@ -0,0 +1,66 @@ +// Copyright 2024 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go_gapic. DO NOT EDIT. + +// [START dataplex_v1_generated_CatalogService_ListMetadataJobs_sync] + +package main + +import ( + "context" + + dataplex "cloud.google.com/go/dataplex/apiv1" + dataplexpb "cloud.google.com/go/dataplex/apiv1/dataplexpb" + "google.golang.org/api/iterator" +) + +func main() { + ctx := context.Background() + // This snippet has been automatically generated and should be regarded as a code template only. + // It will require modifications to work: + // - It may require correct/in-range values for request initialization. + // - It may require specifying regional endpoints when creating the service client as shown in: + // https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options + c, err := dataplex.NewCatalogClient(ctx) + if err != nil { + // TODO: Handle error. + } + defer c.Close() + + req := &dataplexpb.ListMetadataJobsRequest{ + // TODO: Fill request struct fields. + // See https://pkg.go.dev/cloud.google.com/go/dataplex/apiv1/dataplexpb#ListMetadataJobsRequest. + } + it := c.ListMetadataJobs(ctx, req) + for { + resp, err := it.Next() + if err == iterator.Done { + break + } + if err != nil { + // TODO: Handle error. + } + // TODO: Use resp. + _ = resp + + // If you need to access the underlying RPC response, + // you can do so by casting the `Response` as below. + // Otherwise, remove this line. Only populated after + // first call to Next(). Not safe for concurrent access. + _ = it.Response.(*dataplexpb.ListMetadataJobsResponse) + } +} + +// [END dataplex_v1_generated_CatalogService_ListMetadataJobs_sync] diff --git a/internal/generated/snippets/dataplex/apiv1/snippet_metadata.google.cloud.dataplex.v1.json b/internal/generated/snippets/dataplex/apiv1/snippet_metadata.google.cloud.dataplex.v1.json index c97e657b8e4a..45d9380a883c 100644 --- a/internal/generated/snippets/dataplex/apiv1/snippet_metadata.google.cloud.dataplex.v1.json +++ b/internal/generated/snippets/dataplex/apiv1/snippet_metadata.google.cloud.dataplex.v1.json @@ -11,6 +11,51 @@ ] }, "snippets": [ + { + "regionTag": "dataplex_v1_generated_CatalogService_CancelMetadataJob_sync", + "title": "dataplex CancelMetadataJob Sample", + "description": "CancelMetadataJob cancels a metadata job.\n\nIf you cancel a metadata import job that is in progress, the changes in the\njob might be partially applied. We recommend that you reset the state of\nthe entry groups in your project by running another metadata job that\nreverts the changes from the canceled job.", + "file": "CatalogClient/CancelMetadataJob/main.go", + "language": "GO", + "clientMethod": { + "shortName": "CancelMetadataJob", + "fullName": "google.cloud.dataplex.v1.CatalogClient.CancelMetadataJob", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "dataplexpb.CancelMetadataJobRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "client": { + "shortName": "CatalogClient", + "fullName": "google.cloud.dataplex.v1.CatalogClient" + }, + "method": { + "shortName": "CancelMetadataJob", + "fullName": "google.cloud.dataplex.v1.CatalogService.CancelMetadataJob", + "service": { + "shortName": "CatalogService", + "fullName": "google.cloud.dataplex.v1.CatalogService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 51, + "type": "FULL" + } + ] + }, { "regionTag": "dataplex_v1_generated_CatalogService_CancelOperation_sync", "title": "dataplex CancelOperation Sample", @@ -59,7 +104,7 @@ { "regionTag": "dataplex_v1_generated_CatalogService_CreateAspectType_sync", "title": "dataplex CreateAspectType Sample", - "description": "CreateAspectType creates an AspectType", + "description": "CreateAspectType creates an AspectType.", "file": "CatalogClient/CreateAspectType/main.go", "language": "GO", "clientMethod": { @@ -151,7 +196,7 @@ { "regionTag": "dataplex_v1_generated_CatalogService_CreateEntryGroup_sync", "title": "dataplex CreateEntryGroup Sample", - "description": "CreateEntryGroup creates an EntryGroup", + "description": "CreateEntryGroup creates an EntryGroup.", "file": "CatalogClient/CreateEntryGroup/main.go", "language": "GO", "clientMethod": { @@ -197,7 +242,7 @@ { "regionTag": "dataplex_v1_generated_CatalogService_CreateEntryType_sync", "title": "dataplex CreateEntryType Sample", - "description": "CreateEntryType creates an EntryType", + "description": "CreateEntryType creates an EntryType.", "file": "CatalogClient/CreateEntryType/main.go", "language": "GO", "clientMethod": { @@ -240,10 +285,56 @@ } ] }, + { + "regionTag": "dataplex_v1_generated_CatalogService_CreateMetadataJob_sync", + "title": "dataplex CreateMetadataJob Sample", + "description": "CreateMetadataJob creates a metadata job. For example, use a metadata job to import Dataplex\nCatalog entries and aspects from a third-party system into Dataplex.", + "file": "CatalogClient/CreateMetadataJob/main.go", + "language": "GO", + "clientMethod": { + "shortName": "CreateMetadataJob", + "fullName": "google.cloud.dataplex.v1.CatalogClient.CreateMetadataJob", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "dataplexpb.CreateMetadataJobRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "CreateMetadataJobOperation", + "client": { + "shortName": "CatalogClient", + "fullName": "google.cloud.dataplex.v1.CatalogClient" + }, + "method": { + "shortName": "CreateMetadataJob", + "fullName": "google.cloud.dataplex.v1.CatalogService.CreateMetadataJob", + "service": { + "shortName": "CatalogService", + "fullName": "google.cloud.dataplex.v1.CatalogService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 58, + "type": "FULL" + } + ] + }, { "regionTag": "dataplex_v1_generated_CatalogService_DeleteAspectType_sync", "title": "dataplex DeleteAspectType Sample", - "description": "DeleteAspectType deletes a AspectType resource.", + "description": "DeleteAspectType deletes an AspectType.", "file": "CatalogClient/DeleteAspectType/main.go", "language": "GO", "clientMethod": { @@ -335,7 +426,7 @@ { "regionTag": "dataplex_v1_generated_CatalogService_DeleteEntryGroup_sync", "title": "dataplex DeleteEntryGroup Sample", - "description": "DeleteEntryGroup deletes a EntryGroup resource.", + "description": "DeleteEntryGroup deletes an EntryGroup.", "file": "CatalogClient/DeleteEntryGroup/main.go", "language": "GO", "clientMethod": { @@ -381,7 +472,7 @@ { "regionTag": "dataplex_v1_generated_CatalogService_DeleteEntryType_sync", "title": "dataplex DeleteEntryType Sample", - "description": "DeleteEntryType deletes a EntryType resource.", + "description": "DeleteEntryType deletes an EntryType.", "file": "CatalogClient/DeleteEntryType/main.go", "language": "GO", "clientMethod": { @@ -472,7 +563,7 @@ { "regionTag": "dataplex_v1_generated_CatalogService_GetAspectType_sync", "title": "dataplex GetAspectType Sample", - "description": "GetAspectType retrieves a AspectType resource.", + "description": "GetAspectType gets an AspectType.", "file": "CatalogClient/GetAspectType/main.go", "language": "GO", "clientMethod": { @@ -518,7 +609,7 @@ { "regionTag": "dataplex_v1_generated_CatalogService_GetEntry_sync", "title": "dataplex GetEntry Sample", - "description": "GetEntry gets a single entry.", + "description": "GetEntry gets an Entry.\n\n**Caution**: The BigQuery metadata that is stored in Dataplex Catalog is\nchanging. For more information, see [Changes to BigQuery metadata stored in\nDataplex\nCatalog](https: //cloud.google.com/dataplex/docs/biqquery-metadata-changes).", "file": "CatalogClient/GetEntry/main.go", "language": "GO", "clientMethod": { @@ -564,7 +655,7 @@ { "regionTag": "dataplex_v1_generated_CatalogService_GetEntryGroup_sync", "title": "dataplex GetEntryGroup Sample", - "description": "GetEntryGroup retrieves a EntryGroup resource.", + "description": "GetEntryGroup gets an EntryGroup.", "file": "CatalogClient/GetEntryGroup/main.go", "language": "GO", "clientMethod": { @@ -610,7 +701,7 @@ { "regionTag": "dataplex_v1_generated_CatalogService_GetEntryType_sync", "title": "dataplex GetEntryType Sample", - "description": "GetEntryType retrieves a EntryType resource.", + "description": "GetEntryType gets an EntryType.", "file": "CatalogClient/GetEntryType/main.go", "language": "GO", "clientMethod": { @@ -699,6 +790,52 @@ } ] }, + { + "regionTag": "dataplex_v1_generated_CatalogService_GetMetadataJob_sync", + "title": "dataplex GetMetadataJob Sample", + "description": "GetMetadataJob gets a metadata job.", + "file": "CatalogClient/GetMetadataJob/main.go", + "language": "GO", + "clientMethod": { + "shortName": "GetMetadataJob", + "fullName": "google.cloud.dataplex.v1.CatalogClient.GetMetadataJob", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "dataplexpb.GetMetadataJobRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "*dataplexpb.MetadataJob", + "client": { + "shortName": "CatalogClient", + "fullName": "google.cloud.dataplex.v1.CatalogClient" + }, + "method": { + "shortName": "GetMetadataJob", + "fullName": "google.cloud.dataplex.v1.CatalogService.GetMetadataJob", + "service": { + "shortName": "CatalogService", + "fullName": "google.cloud.dataplex.v1.CatalogService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 53, + "type": "FULL" + } + ] + }, { "regionTag": "dataplex_v1_generated_CatalogService_GetOperation_sync", "title": "dataplex GetOperation Sample", @@ -794,7 +931,7 @@ { "regionTag": "dataplex_v1_generated_CatalogService_ListEntries_sync", "title": "dataplex ListEntries Sample", - "description": "ListEntries lists entries within an entry group.", + "description": "ListEntries lists Entries within an EntryGroup.", "file": "CatalogClient/ListEntries/main.go", "language": "GO", "clientMethod": { @@ -975,6 +1112,52 @@ } ] }, + { + "regionTag": "dataplex_v1_generated_CatalogService_ListMetadataJobs_sync", + "title": "dataplex ListMetadataJobs Sample", + "description": "ListMetadataJobs lists metadata jobs.", + "file": "CatalogClient/ListMetadataJobs/main.go", + "language": "GO", + "clientMethod": { + "shortName": "ListMetadataJobs", + "fullName": "google.cloud.dataplex.v1.CatalogClient.ListMetadataJobs", + "parameters": [ + { + "type": "context.Context", + "name": "ctx" + }, + { + "type": "dataplexpb.ListMetadataJobsRequest", + "name": "req" + }, + { + "type": "...gax.CallOption", + "name": "opts" + } + ], + "resultType": "MetadataJobIterator", + "client": { + "shortName": "CatalogClient", + "fullName": "google.cloud.dataplex.v1.CatalogClient" + }, + "method": { + "shortName": "ListMetadataJobs", + "fullName": "google.cloud.dataplex.v1.CatalogService.ListMetadataJobs", + "service": { + "shortName": "CatalogService", + "fullName": "google.cloud.dataplex.v1.CatalogService" + } + } + }, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 18, + "end": 66, + "type": "FULL" + } + ] + }, { "regionTag": "dataplex_v1_generated_CatalogService_ListOperations_sync", "title": "dataplex ListOperations Sample", @@ -1024,7 +1207,7 @@ { "regionTag": "dataplex_v1_generated_CatalogService_LookupEntry_sync", "title": "dataplex LookupEntry Sample", - "description": "LookupEntry looks up a single entry.", + "description": "LookupEntry looks up a single Entry by name using the permission on the source system.\n\n**Caution**: The BigQuery metadata that is stored in Dataplex Catalog is\nchanging. For more information, see [Changes to BigQuery metadata stored in\nDataplex\nCatalog](https: //cloud.google.com/dataplex/docs/biqquery-metadata-changes).", "file": "CatalogClient/LookupEntry/main.go", "language": "GO", "clientMethod": { @@ -1070,7 +1253,7 @@ { "regionTag": "dataplex_v1_generated_CatalogService_SearchEntries_sync", "title": "dataplex SearchEntries Sample", - "description": "SearchEntries searches for entries matching given query and scope.", + "description": "SearchEntries searches for Entries matching the given query and scope.", "file": "CatalogClient/SearchEntries/main.go", "language": "GO", "clientMethod": { @@ -1116,7 +1299,7 @@ { "regionTag": "dataplex_v1_generated_CatalogService_UpdateAspectType_sync", "title": "dataplex UpdateAspectType Sample", - "description": "UpdateAspectType updates a AspectType resource.", + "description": "UpdateAspectType updates an AspectType.", "file": "CatalogClient/UpdateAspectType/main.go", "language": "GO", "clientMethod": { @@ -1208,7 +1391,7 @@ { "regionTag": "dataplex_v1_generated_CatalogService_UpdateEntryGroup_sync", "title": "dataplex UpdateEntryGroup Sample", - "description": "UpdateEntryGroup updates a EntryGroup resource.", + "description": "UpdateEntryGroup updates an EntryGroup.", "file": "CatalogClient/UpdateEntryGroup/main.go", "language": "GO", "clientMethod": { @@ -1254,7 +1437,7 @@ { "regionTag": "dataplex_v1_generated_CatalogService_UpdateEntryType_sync", "title": "dataplex UpdateEntryType Sample", - "description": "UpdateEntryType updates a EntryType resource.", + "description": "UpdateEntryType updates an EntryType.", "file": "CatalogClient/UpdateEntryType/main.go", "language": "GO", "clientMethod": { diff --git a/internal/generated/snippets/deploy/apiv1/snippet_metadata.google.cloud.deploy.v1.json b/internal/generated/snippets/deploy/apiv1/snippet_metadata.google.cloud.deploy.v1.json index abd024cb76c1..205562412ecc 100644 --- a/internal/generated/snippets/deploy/apiv1/snippet_metadata.google.cloud.deploy.v1.json +++ b/internal/generated/snippets/deploy/apiv1/snippet_metadata.google.cloud.deploy.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/deploy/apiv1", - "version": "1.24.0", + "version": "1.25.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dialogflow/apiv2/snippet_metadata.google.cloud.dialogflow.v2.json b/internal/generated/snippets/dialogflow/apiv2/snippet_metadata.google.cloud.dialogflow.v2.json index ea1ed888bfdb..73397e7f1d36 100644 --- a/internal/generated/snippets/dialogflow/apiv2/snippet_metadata.google.cloud.dialogflow.v2.json +++ b/internal/generated/snippets/dialogflow/apiv2/snippet_metadata.google.cloud.dialogflow.v2.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/dialogflow/apiv2", - "version": "1.59.0", + "version": "1.60.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dialogflow/apiv2beta1/snippet_metadata.google.cloud.dialogflow.v2beta1.json b/internal/generated/snippets/dialogflow/apiv2beta1/snippet_metadata.google.cloud.dialogflow.v2beta1.json index 8a03053971f0..9a00cfd51ae3 100644 --- a/internal/generated/snippets/dialogflow/apiv2beta1/snippet_metadata.google.cloud.dialogflow.v2beta1.json +++ b/internal/generated/snippets/dialogflow/apiv2beta1/snippet_metadata.google.cloud.dialogflow.v2beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/dialogflow/apiv2beta1", - "version": "1.59.0", + "version": "1.60.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dialogflow/cx/apiv3/snippet_metadata.google.cloud.dialogflow.cx.v3.json b/internal/generated/snippets/dialogflow/cx/apiv3/snippet_metadata.google.cloud.dialogflow.cx.v3.json index dfb6268906f0..e980a1a12284 100644 --- a/internal/generated/snippets/dialogflow/cx/apiv3/snippet_metadata.google.cloud.dialogflow.cx.v3.json +++ b/internal/generated/snippets/dialogflow/cx/apiv3/snippet_metadata.google.cloud.dialogflow.cx.v3.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/dialogflow/cx/apiv3", - "version": "1.59.0", + "version": "1.60.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/dialogflow/cx/apiv3beta1/snippet_metadata.google.cloud.dialogflow.cx.v3beta1.json b/internal/generated/snippets/dialogflow/cx/apiv3beta1/snippet_metadata.google.cloud.dialogflow.cx.v3beta1.json index e9075db54c72..b7a5d215911b 100644 --- a/internal/generated/snippets/dialogflow/cx/apiv3beta1/snippet_metadata.google.cloud.dialogflow.cx.v3beta1.json +++ b/internal/generated/snippets/dialogflow/cx/apiv3beta1/snippet_metadata.google.cloud.dialogflow.cx.v3beta1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/dialogflow/cx/apiv3beta1", - "version": "1.59.0", + "version": "1.60.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/longrunning/autogen/snippet_metadata.google.longrunning.json b/internal/generated/snippets/longrunning/autogen/snippet_metadata.google.longrunning.json index c41e6a8673fc..ec2ccd7cb308 100644 --- a/internal/generated/snippets/longrunning/autogen/snippet_metadata.google.longrunning.json +++ b/internal/generated/snippets/longrunning/autogen/snippet_metadata.google.longrunning.json @@ -14,7 +14,7 @@ { "regionTag": "longrunning_longrunning_generated_Operations_CancelOperation_sync", "title": "longrunning CancelOperation Sample", - "description": "CancelOperation starts asynchronous cancellation on a long-running operation. The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`. Clients can use\n[Operations.GetOperation][google.longrunning.Operations.GetOperation] or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan [Operation.error][google.longrunning.Operation.error] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1,\ncorresponding to `Code.CANCELLED`.", + "description": "CancelOperation starts asynchronous cancellation on a long-running operation. The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`. Clients can use\n[Operations.GetOperation][google.longrunning.Operations.GetOperation] or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan [Operation.error][google.longrunning.Operation.error] value with a\n[google.rpc.Status.code][google.rpc.Status.code] of `1`, corresponding to\n`Code.CANCELLED`.", "file": "OperationsClient/CancelOperation/main.go", "language": "GO", "clientMethod": { @@ -150,7 +150,7 @@ { "regionTag": "longrunning_longrunning_generated_Operations_ListOperations_sync", "title": "longrunning ListOperations Sample", - "description": "ListOperations lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.", + "description": "ListOperations lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.", "file": "OperationsClient/ListOperations/main.go", "language": "GO", "clientMethod": { diff --git a/internal/generated/snippets/maps/addressvalidation/apiv1/snippet_metadata.google.maps.addressvalidation.v1.json b/internal/generated/snippets/maps/addressvalidation/apiv1/snippet_metadata.google.maps.addressvalidation.v1.json index 44d4c53f03a8..0a16e710e9c2 100644 --- a/internal/generated/snippets/maps/addressvalidation/apiv1/snippet_metadata.google.maps.addressvalidation.v1.json +++ b/internal/generated/snippets/maps/addressvalidation/apiv1/snippet_metadata.google.maps.addressvalidation.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/maps/addressvalidation/apiv1", - "version": "1.14.1", + "version": "1.15.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/maps/areainsights/apiv1/snippet_metadata.google.maps.areainsights.v1.json b/internal/generated/snippets/maps/areainsights/apiv1/snippet_metadata.google.maps.areainsights.v1.json index e5395d6c3c0a..3cc57397661a 100644 --- a/internal/generated/snippets/maps/areainsights/apiv1/snippet_metadata.google.maps.areainsights.v1.json +++ b/internal/generated/snippets/maps/areainsights/apiv1/snippet_metadata.google.maps.areainsights.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/maps/areainsights/apiv1", - "version": "1.14.1", + "version": "1.15.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/maps/fleetengine/apiv1/snippet_metadata.maps.fleetengine.v1.json b/internal/generated/snippets/maps/fleetengine/apiv1/snippet_metadata.maps.fleetengine.v1.json index e388d8e8d6f7..3b525098da12 100644 --- a/internal/generated/snippets/maps/fleetengine/apiv1/snippet_metadata.maps.fleetengine.v1.json +++ b/internal/generated/snippets/maps/fleetengine/apiv1/snippet_metadata.maps.fleetengine.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/maps/fleetengine/apiv1", - "version": "1.14.1", + "version": "1.15.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/maps/fleetengine/delivery/apiv1/snippet_metadata.maps.fleetengine.delivery.v1.json b/internal/generated/snippets/maps/fleetengine/delivery/apiv1/snippet_metadata.maps.fleetengine.delivery.v1.json index e4f4a3d28a64..201964b2d78a 100644 --- a/internal/generated/snippets/maps/fleetengine/delivery/apiv1/snippet_metadata.maps.fleetengine.delivery.v1.json +++ b/internal/generated/snippets/maps/fleetengine/delivery/apiv1/snippet_metadata.maps.fleetengine.delivery.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/maps/fleetengine/delivery/apiv1", - "version": "1.14.1", + "version": "1.15.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/maps/places/apiv1/snippet_metadata.google.maps.places.v1.json b/internal/generated/snippets/maps/places/apiv1/snippet_metadata.google.maps.places.v1.json index a95263c61b98..d3657d0cd1bd 100644 --- a/internal/generated/snippets/maps/places/apiv1/snippet_metadata.google.maps.places.v1.json +++ b/internal/generated/snippets/maps/places/apiv1/snippet_metadata.google.maps.places.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/maps/places/apiv1", - "version": "1.14.1", + "version": "1.15.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/maps/routeoptimization/apiv1/snippet_metadata.google.maps.routeoptimization.v1.json b/internal/generated/snippets/maps/routeoptimization/apiv1/snippet_metadata.google.maps.routeoptimization.v1.json index 520588c2d27d..fe33713ae9c4 100644 --- a/internal/generated/snippets/maps/routeoptimization/apiv1/snippet_metadata.google.maps.routeoptimization.v1.json +++ b/internal/generated/snippets/maps/routeoptimization/apiv1/snippet_metadata.google.maps.routeoptimization.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/maps/routeoptimization/apiv1", - "version": "1.14.1", + "version": "1.15.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/maps/routing/apiv2/snippet_metadata.google.maps.routing.v2.json b/internal/generated/snippets/maps/routing/apiv2/snippet_metadata.google.maps.routing.v2.json index cfdadc169a06..26de50a75125 100644 --- a/internal/generated/snippets/maps/routing/apiv2/snippet_metadata.google.maps.routing.v2.json +++ b/internal/generated/snippets/maps/routing/apiv2/snippet_metadata.google.maps.routing.v2.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/maps/routing/apiv2", - "version": "1.14.1", + "version": "1.15.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/maps/solar/apiv1/snippet_metadata.google.maps.solar.v1.json b/internal/generated/snippets/maps/solar/apiv1/snippet_metadata.google.maps.solar.v1.json index d7b4c3604fb4..b80cf426264d 100644 --- a/internal/generated/snippets/maps/solar/apiv1/snippet_metadata.google.maps.solar.v1.json +++ b/internal/generated/snippets/maps/solar/apiv1/snippet_metadata.google.maps.solar.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/maps/solar/apiv1", - "version": "1.14.1", + "version": "1.15.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/networkmanagement/apiv1/snippet_metadata.google.cloud.networkmanagement.v1.json b/internal/generated/snippets/networkmanagement/apiv1/snippet_metadata.google.cloud.networkmanagement.v1.json index 4c32aab40413..7317fcfd06c8 100644 --- a/internal/generated/snippets/networkmanagement/apiv1/snippet_metadata.google.cloud.networkmanagement.v1.json +++ b/internal/generated/snippets/networkmanagement/apiv1/snippet_metadata.google.cloud.networkmanagement.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/networkmanagement/apiv1", - "version": "1.15.0", + "version": "1.16.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/servicehealth/apiv1/snippet_metadata.google.cloud.servicehealth.v1.json b/internal/generated/snippets/servicehealth/apiv1/snippet_metadata.google.cloud.servicehealth.v1.json index 36bf2d4f28e1..dd25118ed9fe 100644 --- a/internal/generated/snippets/servicehealth/apiv1/snippet_metadata.google.cloud.servicehealth.v1.json +++ b/internal/generated/snippets/servicehealth/apiv1/snippet_metadata.google.cloud.servicehealth.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/servicehealth/apiv1", - "version": "1.1.2", + "version": "1.1.3", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/spanner/admin/database/apiv1/snippet_metadata.google.spanner.admin.database.v1.json b/internal/generated/snippets/spanner/admin/database/apiv1/snippet_metadata.google.spanner.admin.database.v1.json index a444f3ec0d39..abbf1e271fc3 100644 --- a/internal/generated/snippets/spanner/admin/database/apiv1/snippet_metadata.google.spanner.admin.database.v1.json +++ b/internal/generated/snippets/spanner/admin/database/apiv1/snippet_metadata.google.spanner.admin.database.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/spanner/admin/database/apiv1", - "version": "1.72.0", + "version": "1.73.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/spanner/admin/instance/apiv1/snippet_metadata.google.spanner.admin.instance.v1.json b/internal/generated/snippets/spanner/admin/instance/apiv1/snippet_metadata.google.spanner.admin.instance.v1.json index 54ca11cf6497..6a25a5c9df6c 100644 --- a/internal/generated/snippets/spanner/admin/instance/apiv1/snippet_metadata.google.spanner.admin.instance.v1.json +++ b/internal/generated/snippets/spanner/admin/instance/apiv1/snippet_metadata.google.spanner.admin.instance.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/spanner/admin/instance/apiv1", - "version": "1.72.0", + "version": "1.73.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/spanner/apiv1/snippet_metadata.google.spanner.v1.json b/internal/generated/snippets/spanner/apiv1/snippet_metadata.google.spanner.v1.json index ba94309bdd58..a1c89c5b9483 100644 --- a/internal/generated/snippets/spanner/apiv1/snippet_metadata.google.spanner.v1.json +++ b/internal/generated/snippets/spanner/apiv1/snippet_metadata.google.spanner.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/spanner/apiv1", - "version": "1.72.0", + "version": "1.73.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/spanner/executor/apiv1/snippet_metadata.google.spanner.executor.v1.json b/internal/generated/snippets/spanner/executor/apiv1/snippet_metadata.google.spanner.executor.v1.json index 76004a1b5517..9981a460fe8d 100644 --- a/internal/generated/snippets/spanner/executor/apiv1/snippet_metadata.google.spanner.executor.v1.json +++ b/internal/generated/snippets/spanner/executor/apiv1/snippet_metadata.google.spanner.executor.v1.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/spanner/executor/apiv1", - "version": "1.72.0", + "version": "1.73.0", "language": "GO", "apis": [ { diff --git a/internal/generated/snippets/storage/control/apiv2/snippet_metadata.google.storage.control.v2.json b/internal/generated/snippets/storage/control/apiv2/snippet_metadata.google.storage.control.v2.json index 70d593592f13..adb36b5f085b 100644 --- a/internal/generated/snippets/storage/control/apiv2/snippet_metadata.google.storage.control.v2.json +++ b/internal/generated/snippets/storage/control/apiv2/snippet_metadata.google.storage.control.v2.json @@ -1,7 +1,7 @@ { "clientLibrary": { "name": "cloud.google.com/go/storage/control/apiv2", - "version": "1.46.0", + "version": "1.47.0", "language": "GO", "apis": [ { diff --git a/longrunning/autogen/longrunningpb/operations.pb.go b/longrunning/autogen/longrunningpb/operations.pb.go index 0a4d66c6373a..b1c01821a047 100755 --- a/longrunning/autogen/longrunningpb/operations.pb.go +++ b/longrunning/autogen/longrunningpb/operations.pb.go @@ -67,7 +67,8 @@ type Operation struct { Done bool `protobuf:"varint,3,opt,name=done,proto3" json:"done,omitempty"` // The operation result, which can be either an `error` or a valid `response`. // If `done` == `false`, neither `error` nor `response` is set. - // If `done` == `true`, exactly one of `error` or `response` is set. + // If `done` == `true`, exactly one of `error` or `response` can be set. + // Some services might not provide the result. // // Types that are assignable to Result: // @@ -160,7 +161,7 @@ type Operation_Error struct { } type Operation_Response struct { - // The normal response of the operation in case of success. If the original + // The normal, successful response of the operation. If the original // method returns no data on success, such as `Delete`, the response is // `google.protobuf.Empty`. If the original method is standard // `Get`/`Create`/`Update`, the response should be the resource. For other @@ -175,7 +176,8 @@ func (*Operation_Error) isOperation_Result() {} func (*Operation_Response) isOperation_Result() {} -// The request message for [Operations.GetOperation][google.longrunning.Operations.GetOperation]. +// The request message for +// [Operations.GetOperation][google.longrunning.Operations.GetOperation]. type GetOperationRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -224,7 +226,8 @@ func (x *GetOperationRequest) GetName() string { return "" } -// The request message for [Operations.ListOperations][google.longrunning.Operations.ListOperations]. +// The request message for +// [Operations.ListOperations][google.longrunning.Operations.ListOperations]. type ListOperationsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -300,7 +303,8 @@ func (x *ListOperationsRequest) GetPageToken() string { return "" } -// The response message for [Operations.ListOperations][google.longrunning.Operations.ListOperations]. +// The response message for +// [Operations.ListOperations][google.longrunning.Operations.ListOperations]. type ListOperationsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -358,7 +362,8 @@ func (x *ListOperationsResponse) GetNextPageToken() string { return "" } -// The request message for [Operations.CancelOperation][google.longrunning.Operations.CancelOperation]. +// The request message for +// [Operations.CancelOperation][google.longrunning.Operations.CancelOperation]. type CancelOperationRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -407,7 +412,8 @@ func (x *CancelOperationRequest) GetName() string { return "" } -// The request message for [Operations.DeleteOperation][google.longrunning.Operations.DeleteOperation]. +// The request message for +// [Operations.DeleteOperation][google.longrunning.Operations.DeleteOperation]. type DeleteOperationRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -456,7 +462,8 @@ func (x *DeleteOperationRequest) GetName() string { return "" } -// The request message for [Operations.WaitOperation][google.longrunning.Operations.WaitOperation]. +// The request message for +// [Operations.WaitOperation][google.longrunning.Operations.WaitOperation]. type WaitOperationRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -520,11 +527,10 @@ func (x *WaitOperationRequest) GetTimeout() *durationpb.Duration { // // Example: // -// rpc LongRunningRecognize(LongRunningRecognizeRequest) -// returns (google.longrunning.Operation) { +// rpc Export(ExportRequest) returns (google.longrunning.Operation) { // option (google.longrunning.operation_info) = { -// response_type: "LongRunningRecognizeResponse" -// metadata_type: "LongRunningRecognizeMetadata" +// response_type: "ExportResponse" +// metadata_type: "ExportMetadata" // }; // } type OperationInfo struct { @@ -632,14 +638,14 @@ var file_google_longrunning_operations_proto_rawDesc = []byte{ 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, - 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, + 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, + 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcf, 0x01, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, @@ -739,17 +745,18 @@ var file_google_longrunning_operations_proto_rawDesc = []byte{ 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, - 0x66, 0x6f, 0x42, 0x9d, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x66, 0x6f, 0x42, 0xa5, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x42, 0x0f, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x43, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x61, 0x75, 0x74, 0x6f, 0x67, 0x65, 0x6e, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x70, 0x62, 0x3b, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, - 0x69, 0x6e, 0x67, 0x70, 0x62, 0xf8, 0x01, 0x01, 0xaa, 0x02, 0x12, 0x47, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0xca, 0x02, 0x12, - 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x4c, 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, - 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x6e, 0x67, 0x70, 0x62, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x05, 0x47, 0x4c, 0x52, 0x55, 0x4e, + 0xaa, 0x02, 0x12, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x4c, 0x6f, 0x6e, 0x67, 0x52, 0x75, + 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0xca, 0x02, 0x12, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x4c, + 0x6f, 0x6e, 0x67, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -947,14 +954,6 @@ const _ = grpc.SupportPackageIsVersion6 type OperationsClient interface { // Lists operations that match the specified filter in the request. If the // server doesn't support this method, it returns `UNIMPLEMENTED`. - // - // NOTE: the `name` binding allows API services to override the binding - // to use different resource name schemes, such as `users/*/operations`. To - // override the binding, API services can add a binding such as - // `"/v1/{name=users/*}/operations"` to their service configuration. - // For backwards compatibility, the default name includes the operations - // collection id, however overriding users must ensure the name binding - // is the parent resource, without the operations collection id. ListOperations(ctx context.Context, in *ListOperationsRequest, opts ...grpc.CallOption) (*ListOperationsResponse, error) // Gets the latest state of a long-running operation. Clients can use this // method to poll the operation result at intervals as recommended by the API @@ -973,8 +972,9 @@ type OperationsClient interface { // other methods to check whether the cancellation succeeded or whether the // operation completed despite cancellation. On successful cancellation, // the operation is not deleted; instead, it becomes an operation with - // an [Operation.error][google.longrunning.Operation.error] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1, - // corresponding to `Code.CANCELLED`. + // an [Operation.error][google.longrunning.Operation.error] value with a + // [google.rpc.Status.code][google.rpc.Status.code] of `1`, corresponding to + // `Code.CANCELLED`. CancelOperation(ctx context.Context, in *CancelOperationRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) // Waits until the specified long-running operation is done or reaches at most // a specified timeout, returning the latest state. If the operation is @@ -1045,14 +1045,6 @@ func (c *operationsClient) WaitOperation(ctx context.Context, in *WaitOperationR type OperationsServer interface { // Lists operations that match the specified filter in the request. If the // server doesn't support this method, it returns `UNIMPLEMENTED`. - // - // NOTE: the `name` binding allows API services to override the binding - // to use different resource name schemes, such as `users/*/operations`. To - // override the binding, API services can add a binding such as - // `"/v1/{name=users/*}/operations"` to their service configuration. - // For backwards compatibility, the default name includes the operations - // collection id, however overriding users must ensure the name binding - // is the parent resource, without the operations collection id. ListOperations(context.Context, *ListOperationsRequest) (*ListOperationsResponse, error) // Gets the latest state of a long-running operation. Clients can use this // method to poll the operation result at intervals as recommended by the API @@ -1071,8 +1063,9 @@ type OperationsServer interface { // other methods to check whether the cancellation succeeded or whether the // operation completed despite cancellation. On successful cancellation, // the operation is not deleted; instead, it becomes an operation with - // an [Operation.error][google.longrunning.Operation.error] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1, - // corresponding to `Code.CANCELLED`. + // an [Operation.error][google.longrunning.Operation.error] value with a + // [google.rpc.Status.code][google.rpc.Status.code] of `1`, corresponding to + // `Code.CANCELLED`. CancelOperation(context.Context, *CancelOperationRequest) (*emptypb.Empty, error) // Waits until the specified long-running operation is done or reaches at most // a specified timeout, returning the latest state. If the operation is diff --git a/longrunning/autogen/operations_client.go b/longrunning/autogen/operations_client.go index 3be65a155e67..b42f6c5c685c 100755 --- a/longrunning/autogen/operations_client.go +++ b/longrunning/autogen/operations_client.go @@ -188,12 +188,12 @@ type internalOperationsClient interface { // Manages long-running operations with an API service. // // When an API method normally takes long time to complete, it can be designed -// to return Operation to the client, and the client can use this -// interface to receive the real response asynchronously by polling the -// operation resource, or pass the operation resource to another API (such as -// Google Cloud Pub/Sub API) to receive the response. Any API service that -// returns long-running operations should implement the Operations interface -// so developers can have a consistent client experience. +// to return Operation to the client, and the +// client can use this interface to receive the real response asynchronously by +// polling the operation resource, or pass the operation resource to another API +// (such as Pub/Sub API) to receive the response. Any API service that returns +// long-running operations should implement the Operations interface so +// developers can have a consistent client experience. type OperationsClient struct { // The internal transport-dependent client. internalClient internalOperationsClient @@ -227,14 +227,6 @@ func (c *OperationsClient) Connection() *grpc.ClientConn { // ListOperations lists operations that match the specified filter in the request. If the // server doesn’t support this method, it returns UNIMPLEMENTED. -// -// NOTE: the name binding allows API services to override the binding -// to use different resource name schemes, such as users/*/operations. To -// override the binding, API services can add a binding such as -// "/v1/{name=users/*}/operations" to their service configuration. -// For backwards compatibility, the default name includes the operations -// collection id, however overriding users must ensure the name binding -// is the parent resource, without the operations collection id. func (c *OperationsClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { return c.internalClient.ListOperations(ctx, req, opts...) } @@ -262,8 +254,9 @@ func (c *OperationsClient) DeleteOperation(ctx context.Context, req *longrunning // other methods to check whether the cancellation succeeded or whether the // operation completed despite cancellation. On successful cancellation, // the operation is not deleted; instead, it becomes an operation with -// an Operation.error value with a google.rpc.Status.code of 1, -// corresponding to Code.CANCELLED. +// an Operation.error value with a +// google.rpc.Status.code of 1, corresponding to +// Code.CANCELLED. func (c *OperationsClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { return c.internalClient.CancelOperation(ctx, req, opts...) } @@ -304,12 +297,12 @@ type operationsGRPCClient struct { // Manages long-running operations with an API service. // // When an API method normally takes long time to complete, it can be designed -// to return Operation to the client, and the client can use this -// interface to receive the real response asynchronously by polling the -// operation resource, or pass the operation resource to another API (such as -// Google Cloud Pub/Sub API) to receive the response. Any API service that -// returns long-running operations should implement the Operations interface -// so developers can have a consistent client experience. +// to return Operation to the client, and the +// client can use this interface to receive the real response asynchronously by +// polling the operation resource, or pass the operation resource to another API +// (such as Pub/Sub API) to receive the response. Any API service that returns +// long-running operations should implement the Operations interface so +// developers can have a consistent client experience. func NewOperationsClient(ctx context.Context, opts ...option.ClientOption) (*OperationsClient, error) { clientOpts := defaultOperationsGRPCClientOptions() if newOperationsClientHook != nil { @@ -383,12 +376,12 @@ type operationsRESTClient struct { // Manages long-running operations with an API service. // // When an API method normally takes long time to complete, it can be designed -// to return Operation to the client, and the client can use this -// interface to receive the real response asynchronously by polling the -// operation resource, or pass the operation resource to another API (such as -// Google Cloud Pub/Sub API) to receive the response. Any API service that -// returns long-running operations should implement the Operations interface -// so developers can have a consistent client experience. +// to return Operation to the client, and the +// client can use this interface to receive the real response asynchronously by +// polling the operation resource, or pass the operation resource to another API +// (such as Pub/Sub API) to receive the response. Any API service that returns +// long-running operations should implement the Operations interface so +// developers can have a consistent client experience. func NewOperationsRESTClient(ctx context.Context, opts ...option.ClientOption) (*OperationsClient, error) { clientOpts := append(defaultOperationsRESTClientOptions(), opts...) httpClient, endpoint, err := httptransport.NewClient(ctx, clientOpts...) @@ -553,14 +546,6 @@ func (c *operationsGRPCClient) WaitOperation(ctx context.Context, req *longrunni // ListOperations lists operations that match the specified filter in the request. If the // server doesn’t support this method, it returns UNIMPLEMENTED. -// -// NOTE: the name binding allows API services to override the binding -// to use different resource name schemes, such as users/*/operations. To -// override the binding, API services can add a binding such as -// "/v1/{name=users/*}/operations" to their service configuration. -// For backwards compatibility, the default name includes the operations -// collection id, however overriding users must ensure the name binding -// is the parent resource, without the operations collection id. func (c *operationsRESTClient) ListOperations(ctx context.Context, req *longrunningpb.ListOperationsRequest, opts ...gax.CallOption) *OperationIterator { it := &OperationIterator{} req = proto.Clone(req).(*longrunningpb.ListOperationsRequest) @@ -756,8 +741,9 @@ func (c *operationsRESTClient) DeleteOperation(ctx context.Context, req *longrun // other methods to check whether the cancellation succeeded or whether the // operation completed despite cancellation. On successful cancellation, // the operation is not deleted; instead, it becomes an operation with -// an Operation.error value with a google.rpc.Status.code of 1, -// corresponding to Code.CANCELLED. +// an Operation.error value with a +// google.rpc.Status.code of 1, corresponding to +// Code.CANCELLED. func (c *operationsRESTClient) CancelOperation(ctx context.Context, req *longrunningpb.CancelOperationRequest, opts ...gax.CallOption) error { m := protojson.MarshalOptions{AllowPartial: true, UseEnumNumbers: true} jsonReq, err := m.Marshal(req) diff --git a/networkmanagement/apiv1/networkmanagementpb/connectivity_test.pb.go b/networkmanagement/apiv1/networkmanagementpb/connectivity_test.pb.go index 4653c5e0224a..8f7da8cfcf27 100755 --- a/networkmanagement/apiv1/networkmanagementpb/connectivity_test.pb.go +++ b/networkmanagement/apiv1/networkmanagementpb/connectivity_test.pb.go @@ -433,6 +433,14 @@ type ConnectivityTest struct { // test, updating an existing test, or triggering a one-time rerun of an // existing test. ProbingDetails *ProbingDetails `protobuf:"bytes,14,opt,name=probing_details,json=probingDetails,proto3" json:"probing_details,omitempty"` + // Whether run analysis for the return path from destination to source. + // Default value is false. + RoundTrip bool `protobuf:"varint,15,opt,name=round_trip,json=roundTrip,proto3" json:"round_trip,omitempty"` + // Output only. The reachability details of this test from the latest run for + // the return path. The details are updated when creating a new test, + // updating an existing test, or triggering a one-time rerun of an existing + // test. + ReturnReachabilityDetails *ReachabilityDetails `protobuf:"bytes,16,opt,name=return_reachability_details,json=returnReachabilityDetails,proto3" json:"return_reachability_details,omitempty"` // Whether the test should skip firewall checking. // If not provided, we assume false. BypassFirewallChecks bool `protobuf:"varint,17,opt,name=bypass_firewall_checks,json=bypassFirewallChecks,proto3" json:"bypass_firewall_checks,omitempty"` @@ -554,6 +562,20 @@ func (x *ConnectivityTest) GetProbingDetails() *ProbingDetails { return nil } +func (x *ConnectivityTest) GetRoundTrip() bool { + if x != nil { + return x.RoundTrip + } + return false +} + +func (x *ConnectivityTest) GetReturnReachabilityDetails() *ReachabilityDetails { + if x != nil { + return x.ReturnReachabilityDetails + } + return nil +} + func (x *ConnectivityTest) GetBypassFirewallChecks() bool { if x != nil { return x.BypassFirewallChecks @@ -1325,7 +1347,7 @@ var file_google_cloud_networkmanagement_v1_connectivity_test_proto_rawDesc = []b 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0xef, 0x07, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x74, 0x6f, 0x22, 0x8b, 0x09, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x08, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, @@ -1373,159 +1395,132 @@ var file_google_cloud_networkmanagement_v1_connectivity_test_proto_rawDesc = []b 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x0e, - 0x70, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x34, - 0x0a, 0x16, 0x62, 0x79, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, - 0x6c, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, - 0x62, 0x79, 0x70, 0x61, 0x73, 0x73, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, - 0x74, 0xea, 0x41, 0x71, 0x0a, 0x31, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x69, 0x74, 0x79, 0x54, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2f, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, - 0x74, 0x65, 0x73, 0x74, 0x7d, 0x22, 0xe5, 0x0b, 0x0a, 0x08, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, - 0x72, 0x75, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x6f, 0x72, 0x77, - 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x16, 0x66, - 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x40, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x03, 0xe0, - 0x41, 0x03, 0x48, 0x00, 0x52, 0x14, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, - 0x52, 0x75, 0x6c, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, - 0x10, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x0e, - 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x6b, 0x0a, 0x12, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x02, 0x52, 0x10, 0x6c, 0x6f, 0x61, 0x64, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, - 0x0a, 0x12, 0x67, 0x6b, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x67, 0x6b, 0x65, 0x4d, - 0x61, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, - 0x66, 0x71, 0x64, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x71, 0x64, 0x6e, - 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x73, 0x71, 0x6c, 0x5f, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x53, 0x71, 0x6c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x25, - 0x0a, 0x0e, 0x72, 0x65, 0x64, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x64, 0x69, 0x73, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x64, 0x69, 0x73, 0x5f, 0x63, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, - 0x64, 0x69, 0x73, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x68, 0x0a, 0x0e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x70, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1d, + 0x0a, 0x0a, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x74, 0x72, 0x69, 0x70, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x09, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x72, 0x69, 0x70, 0x12, 0x7b, 0x0a, + 0x1b, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x46, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x72, 0x0a, 0x12, 0x61, 0x70, 0x70, 0x5f, 0x65, 0x6e, 0x67, 0x69, - 0x6e, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x41, 0x70, - 0x70, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x10, 0x61, 0x70, 0x70, 0x45, 0x6e, 0x67, 0x69, 0x6e, - 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x72, 0x0a, 0x12, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x10, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x5a, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, + 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, + 0x19, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x62, 0x79, + 0x70, 0x61, 0x73, 0x73, 0x5f, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5f, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x62, 0x79, 0x70, 0x61, + 0x73, 0x73, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x74, 0xea, 0x41, 0x71, + 0x0a, 0x31, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, + 0x65, 0x73, 0x74, 0x12, 0x3c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x65, 0x73, 0x74, 0x73, 0x2f, 0x7b, 0x74, 0x65, 0x73, 0x74, + 0x7d, 0x22, 0xe5, 0x0b, 0x0a, 0x08, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1d, + 0x0a, 0x0a, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x70, 0x6f, 0x72, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x27, 0x0a, + 0x0f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6c, 0x65, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x16, 0x66, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, + 0x75, 0x6c, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x00, + 0x52, 0x14, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, + 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x10, 0x6c, 0x6f, 0x61, + 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x48, 0x01, 0x52, 0x0e, 0x6c, 0x6f, 0x61, 0x64, + 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, + 0x12, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, + 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, + 0xe0, 0x41, 0x03, 0x48, 0x02, 0x52, 0x10, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x12, 0x67, 0x6b, + 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x67, 0x6b, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, + 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x71, 0x64, 0x6e, + 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x71, 0x64, 0x6e, 0x12, 0x2c, 0x0a, 0x12, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x73, 0x71, 0x6c, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x53, + 0x71, 0x6c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, + 0x64, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x11, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x64, 0x69, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x64, 0x69, 0x73, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x64, 0x69, 0x73, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x68, 0x0a, 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x52, 0x0d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x72, 0x0a, 0x12, 0x61, 0x70, 0x70, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, - 0x64, 0x1a, 0x29, 0x0a, 0x15, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, - 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x1a, 0x2c, 0x0a, 0x18, - 0x41, 0x70, 0x70, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x1a, 0x2c, 0x0a, 0x18, 0x43, 0x6c, + 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x41, 0x70, 0x70, 0x45, 0x6e, 0x67, + 0x69, 0x6e, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x52, 0x10, 0x61, 0x70, 0x70, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x72, 0x0a, 0x12, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x72, 0x75, + 0x6e, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x10, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x52, 0x75, 0x6e, + 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x12, 0x5a, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, + 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x1a, 0x29, 0x0a, + 0x15, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x22, 0x51, 0x0a, 0x0b, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x4e, 0x45, 0x54, 0x57, 0x4f, - 0x52, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x47, 0x43, 0x50, 0x5f, 0x4e, 0x45, 0x54, - 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x4e, 0x4f, 0x4e, 0x5f, 0x47, 0x43, - 0x50, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x02, 0x22, 0x79, 0x0a, 0x14, 0x46, - 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x12, 0x26, 0x0a, 0x22, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, - 0x47, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x49, - 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x4f, 0x41, - 0x44, 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x52, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, - 0x56, 0x50, 0x4e, 0x5f, 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x10, 0x03, 0x12, 0x07, 0x0a, - 0x03, 0x50, 0x53, 0x43, 0x10, 0x04, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, - 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xf8, 0x02, - 0x0a, 0x13, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x55, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3b, 0x0a, 0x0b, - 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x76, - 0x65, 0x72, 0x69, 0x66, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x12, 0x40, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x06, 0x74, - 0x72, 0x61, 0x63, 0x65, 0x73, 0x22, 0x61, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, - 0x16, 0x0a, 0x12, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x41, 0x43, 0x48, - 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x52, 0x45, 0x41, 0x43, - 0x48, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x4d, 0x42, 0x49, 0x47, - 0x55, 0x4f, 0x55, 0x53, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x55, 0x4e, 0x44, 0x45, 0x54, 0x45, - 0x52, 0x4d, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x05, 0x22, 0x54, 0x0a, 0x11, 0x4c, 0x61, 0x74, 0x65, - 0x6e, 0x63, 0x79, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x6e, - 0x63, 0x79, 0x5f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x22, 0x7c, - 0x0a, 0x13, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x65, 0x0a, 0x13, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, - 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x65, - 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x52, 0x12, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, - 0x79, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x22, 0xf6, 0x07, 0x0a, - 0x0e, 0x50, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, - 0x57, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x1a, 0x2c, 0x0a, 0x18, 0x41, 0x70, 0x70, 0x45, + 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x1a, 0x2c, 0x0a, 0x18, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x52, + 0x75, 0x6e, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x72, 0x69, 0x22, 0x51, 0x0a, 0x0b, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x47, 0x43, 0x50, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, + 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x4e, 0x4f, 0x4e, 0x5f, 0x47, 0x43, 0x50, 0x5f, 0x4e, 0x45, + 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x02, 0x22, 0x79, 0x0a, 0x14, 0x46, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, + 0x26, 0x0a, 0x22, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x55, + 0x4c, 0x45, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x49, 0x4e, 0x53, 0x54, 0x41, + 0x4e, 0x43, 0x45, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x42, 0x41, + 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x52, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x50, 0x4e, 0x5f, + 0x47, 0x41, 0x54, 0x45, 0x57, 0x41, 0x59, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x53, 0x43, + 0x10, 0x04, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x13, 0x0a, + 0x11, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xf8, 0x02, 0x0a, 0x13, 0x52, 0x65, + 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x12, 0x55, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, @@ -1533,73 +1528,110 @@ var file_google_cloud_networkmanagement_v1_connectivity_test_proto_rawDesc = []b 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, - 0x64, 0x0a, 0x0b, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x61, 0x75, 0x73, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x41, - 0x62, 0x6f, 0x72, 0x74, 0x43, 0x61, 0x75, 0x73, 0x65, 0x52, 0x0a, 0x61, 0x62, 0x6f, 0x72, 0x74, - 0x43, 0x61, 0x75, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, - 0x6f, 0x62, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0e, 0x73, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x34, 0x0a, 0x16, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x5f, 0x70, 0x72, - 0x6f, 0x62, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x14, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x50, 0x72, 0x6f, 0x62, 0x65, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x54, 0x0a, 0x0d, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5f, 0x0a, 0x0f, 0x70, - 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, - 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x70, 0x72, - 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x7e, 0x0a, 0x1b, - 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x45, 0x64, 0x67, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x19, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3b, 0x0a, 0x0c, - 0x45, 0x64, 0x67, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, - 0x6d, 0x65, 0x74, 0x72, 0x6f, 0x70, 0x6f, 0x6c, 0x69, 0x74, 0x61, 0x6e, 0x5f, 0x61, 0x72, 0x65, - 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x72, 0x6f, 0x70, 0x6f, - 0x6c, 0x69, 0x74, 0x61, 0x6e, 0x41, 0x72, 0x65, 0x61, 0x22, 0x80, 0x01, 0x0a, 0x0d, 0x50, 0x72, - 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x1a, 0x50, - 0x52, 0x4f, 0x42, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x52, - 0x45, 0x41, 0x43, 0x48, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, - 0x52, 0x45, 0x41, 0x43, 0x48, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x52, - 0x45, 0x41, 0x43, 0x48, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x49, 0x4e, 0x43, 0x4f, - 0x4e, 0x53, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x55, 0x4e, - 0x44, 0x45, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x04, 0x22, 0x67, 0x0a, 0x11, - 0x50, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x43, 0x61, 0x75, 0x73, - 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x52, 0x4f, 0x42, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x42, 0x4f, - 0x52, 0x54, 0x5f, 0x43, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, - 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x01, 0x12, 0x16, 0x0a, - 0x12, 0x4e, 0x4f, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x42, 0xfd, 0x01, 0x0a, 0x25, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, + 0x40, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x63, 0x65, + 0x73, 0x22, 0x61, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x12, 0x52, + 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x41, 0x43, 0x48, 0x41, 0x42, 0x4c, 0x45, + 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x52, 0x45, 0x41, 0x43, 0x48, 0x41, 0x42, 0x4c, + 0x45, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x4d, 0x42, 0x49, 0x47, 0x55, 0x4f, 0x55, 0x53, + 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x55, 0x4e, 0x44, 0x45, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, + 0x45, 0x44, 0x10, 0x05, 0x22, 0x54, 0x0a, 0x11, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x50, + 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x65, 0x72, + 0x63, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x65, 0x72, 0x63, + 0x65, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6d, + 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6c, 0x61, 0x74, + 0x65, 0x6e, 0x63, 0x79, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x22, 0x7c, 0x0a, 0x13, 0x4c, 0x61, + 0x74, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x65, 0x0a, 0x13, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x65, 0x72, + 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x69, 0x6c, 0x65, 0x52, 0x12, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x65, 0x72, + 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x22, 0xf6, 0x07, 0x0a, 0x0e, 0x50, 0x72, 0x6f, + 0x62, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x57, 0x0a, 0x06, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x42, - 0x0e, 0x54, 0x65, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x50, - 0x01, 0x5a, 0x53, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x6e, + 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x50, + 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x28, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x64, 0x0a, 0x0b, 0x61, + 0x62, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x61, 0x75, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x41, 0x62, 0x6f, 0x72, 0x74, + 0x43, 0x61, 0x75, 0x73, 0x65, 0x52, 0x0a, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x43, 0x61, 0x75, 0x73, + 0x65, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x65, 0x6e, + 0x74, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x73, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x73, 0x75, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x54, 0x0a, 0x0d, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6e, + 0x66, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, + 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x5f, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x62, 0x69, + 0x6e, 0x67, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x69, 0x73, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x62, 0x69, 0x6e, + 0x67, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x7e, 0x0a, 0x1b, 0x64, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x62, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x2e, 0x45, 0x64, 0x67, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x19, 0x64, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3b, 0x0a, 0x0c, 0x45, 0x64, 0x67, 0x65, + 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x72, + 0x6f, 0x70, 0x6f, 0x6c, 0x69, 0x74, 0x61, 0x6e, 0x5f, 0x61, 0x72, 0x65, 0x61, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x65, 0x74, 0x72, 0x6f, 0x70, 0x6f, 0x6c, 0x69, 0x74, 0x61, + 0x6e, 0x41, 0x72, 0x65, 0x61, 0x22, 0x80, 0x01, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x62, 0x69, 0x6e, + 0x67, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x52, 0x4f, 0x42, 0x49, + 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x41, 0x43, 0x48, + 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x52, 0x45, 0x41, 0x43, + 0x48, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x45, 0x41, 0x43, 0x48, + 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x4e, 0x53, 0x49, 0x53, + 0x54, 0x45, 0x4e, 0x54, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x55, 0x4e, 0x44, 0x45, 0x54, 0x45, + 0x52, 0x4d, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x04, 0x22, 0x67, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x62, + 0x69, 0x6e, 0x67, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x43, 0x61, 0x75, 0x73, 0x65, 0x12, 0x23, 0x0a, + 0x1f, 0x50, 0x52, 0x4f, 0x42, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x42, 0x4f, 0x52, 0x54, 0x5f, 0x43, + 0x41, 0x55, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, + 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4e, 0x4f, 0x5f, + 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, + 0x02, 0x42, 0xfd, 0x01, 0x0a, 0x25, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x0e, 0x54, 0x65, 0x73, + 0x74, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x50, 0x01, 0x5a, 0x53, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x67, 0x6f, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x3b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x70, 0x62, 0x3b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x70, 0x62, 0xaa, 0x02, 0x21, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x21, 0x47, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0xea, 0x02, - 0x24, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x62, 0xaa, 0x02, 0x21, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x21, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x61, 0x6e, + 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5c, 0x56, 0x31, 0xea, 0x02, 0x24, 0x47, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x3a, 0x56, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1647,29 +1679,30 @@ var file_google_cloud_networkmanagement_v1_connectivity_test_proto_depIdxs = []i 16, // 4: google.cloud.networkmanagement.v1.ConnectivityTest.update_time:type_name -> google.protobuf.Timestamp 7, // 5: google.cloud.networkmanagement.v1.ConnectivityTest.reachability_details:type_name -> google.cloud.networkmanagement.v1.ReachabilityDetails 10, // 6: google.cloud.networkmanagement.v1.ConnectivityTest.probing_details:type_name -> google.cloud.networkmanagement.v1.ProbingDetails - 1, // 7: google.cloud.networkmanagement.v1.Endpoint.forwarding_rule_target:type_name -> google.cloud.networkmanagement.v1.Endpoint.ForwardingRuleTarget - 17, // 8: google.cloud.networkmanagement.v1.Endpoint.load_balancer_type:type_name -> google.cloud.networkmanagement.v1.LoadBalancerType - 12, // 9: google.cloud.networkmanagement.v1.Endpoint.cloud_function:type_name -> google.cloud.networkmanagement.v1.Endpoint.CloudFunctionEndpoint - 13, // 10: google.cloud.networkmanagement.v1.Endpoint.app_engine_version:type_name -> google.cloud.networkmanagement.v1.Endpoint.AppEngineVersionEndpoint - 14, // 11: google.cloud.networkmanagement.v1.Endpoint.cloud_run_revision:type_name -> google.cloud.networkmanagement.v1.Endpoint.CloudRunRevisionEndpoint - 0, // 12: google.cloud.networkmanagement.v1.Endpoint.network_type:type_name -> google.cloud.networkmanagement.v1.Endpoint.NetworkType - 2, // 13: google.cloud.networkmanagement.v1.ReachabilityDetails.result:type_name -> google.cloud.networkmanagement.v1.ReachabilityDetails.Result - 16, // 14: google.cloud.networkmanagement.v1.ReachabilityDetails.verify_time:type_name -> google.protobuf.Timestamp - 18, // 15: google.cloud.networkmanagement.v1.ReachabilityDetails.error:type_name -> google.rpc.Status - 19, // 16: google.cloud.networkmanagement.v1.ReachabilityDetails.traces:type_name -> google.cloud.networkmanagement.v1.Trace - 8, // 17: google.cloud.networkmanagement.v1.LatencyDistribution.latency_percentiles:type_name -> google.cloud.networkmanagement.v1.LatencyPercentile - 3, // 18: google.cloud.networkmanagement.v1.ProbingDetails.result:type_name -> google.cloud.networkmanagement.v1.ProbingDetails.ProbingResult - 16, // 19: google.cloud.networkmanagement.v1.ProbingDetails.verify_time:type_name -> google.protobuf.Timestamp - 18, // 20: google.cloud.networkmanagement.v1.ProbingDetails.error:type_name -> google.rpc.Status - 4, // 21: google.cloud.networkmanagement.v1.ProbingDetails.abort_cause:type_name -> google.cloud.networkmanagement.v1.ProbingDetails.ProbingAbortCause - 20, // 22: google.cloud.networkmanagement.v1.ProbingDetails.endpoint_info:type_name -> google.cloud.networkmanagement.v1.EndpointInfo - 9, // 23: google.cloud.networkmanagement.v1.ProbingDetails.probing_latency:type_name -> google.cloud.networkmanagement.v1.LatencyDistribution - 15, // 24: google.cloud.networkmanagement.v1.ProbingDetails.destination_egress_location:type_name -> google.cloud.networkmanagement.v1.ProbingDetails.EdgeLocation - 25, // [25:25] is the sub-list for method output_type - 25, // [25:25] is the sub-list for method input_type - 25, // [25:25] is the sub-list for extension type_name - 25, // [25:25] is the sub-list for extension extendee - 0, // [0:25] is the sub-list for field type_name + 7, // 7: google.cloud.networkmanagement.v1.ConnectivityTest.return_reachability_details:type_name -> google.cloud.networkmanagement.v1.ReachabilityDetails + 1, // 8: google.cloud.networkmanagement.v1.Endpoint.forwarding_rule_target:type_name -> google.cloud.networkmanagement.v1.Endpoint.ForwardingRuleTarget + 17, // 9: google.cloud.networkmanagement.v1.Endpoint.load_balancer_type:type_name -> google.cloud.networkmanagement.v1.LoadBalancerType + 12, // 10: google.cloud.networkmanagement.v1.Endpoint.cloud_function:type_name -> google.cloud.networkmanagement.v1.Endpoint.CloudFunctionEndpoint + 13, // 11: google.cloud.networkmanagement.v1.Endpoint.app_engine_version:type_name -> google.cloud.networkmanagement.v1.Endpoint.AppEngineVersionEndpoint + 14, // 12: google.cloud.networkmanagement.v1.Endpoint.cloud_run_revision:type_name -> google.cloud.networkmanagement.v1.Endpoint.CloudRunRevisionEndpoint + 0, // 13: google.cloud.networkmanagement.v1.Endpoint.network_type:type_name -> google.cloud.networkmanagement.v1.Endpoint.NetworkType + 2, // 14: google.cloud.networkmanagement.v1.ReachabilityDetails.result:type_name -> google.cloud.networkmanagement.v1.ReachabilityDetails.Result + 16, // 15: google.cloud.networkmanagement.v1.ReachabilityDetails.verify_time:type_name -> google.protobuf.Timestamp + 18, // 16: google.cloud.networkmanagement.v1.ReachabilityDetails.error:type_name -> google.rpc.Status + 19, // 17: google.cloud.networkmanagement.v1.ReachabilityDetails.traces:type_name -> google.cloud.networkmanagement.v1.Trace + 8, // 18: google.cloud.networkmanagement.v1.LatencyDistribution.latency_percentiles:type_name -> google.cloud.networkmanagement.v1.LatencyPercentile + 3, // 19: google.cloud.networkmanagement.v1.ProbingDetails.result:type_name -> google.cloud.networkmanagement.v1.ProbingDetails.ProbingResult + 16, // 20: google.cloud.networkmanagement.v1.ProbingDetails.verify_time:type_name -> google.protobuf.Timestamp + 18, // 21: google.cloud.networkmanagement.v1.ProbingDetails.error:type_name -> google.rpc.Status + 4, // 22: google.cloud.networkmanagement.v1.ProbingDetails.abort_cause:type_name -> google.cloud.networkmanagement.v1.ProbingDetails.ProbingAbortCause + 20, // 23: google.cloud.networkmanagement.v1.ProbingDetails.endpoint_info:type_name -> google.cloud.networkmanagement.v1.EndpointInfo + 9, // 24: google.cloud.networkmanagement.v1.ProbingDetails.probing_latency:type_name -> google.cloud.networkmanagement.v1.LatencyDistribution + 15, // 25: google.cloud.networkmanagement.v1.ProbingDetails.destination_egress_location:type_name -> google.cloud.networkmanagement.v1.ProbingDetails.EdgeLocation + 26, // [26:26] is the sub-list for method output_type + 26, // [26:26] is the sub-list for method input_type + 26, // [26:26] is the sub-list for extension type_name + 26, // [26:26] is the sub-list for extension extendee + 0, // [0:26] is the sub-list for field type_name } func init() { file_google_cloud_networkmanagement_v1_connectivity_test_proto_init() } diff --git a/run/apiv2/runpb/vendor_settings.pb.go b/run/apiv2/runpb/vendor_settings.pb.go index 00b6fdf20a0d..59cfa7aa8c89 100755 --- a/run/apiv2/runpb/vendor_settings.pb.go +++ b/run/apiv2/runpb/vendor_settings.pb.go @@ -609,6 +609,10 @@ type ServiceScaling struct { MinInstanceCount int32 `protobuf:"varint,1,opt,name=min_instance_count,json=minInstanceCount,proto3" json:"min_instance_count,omitempty"` // Optional. The scaling mode for the service. ScalingMode ServiceScaling_ScalingMode `protobuf:"varint,3,opt,name=scaling_mode,json=scalingMode,proto3,enum=google.cloud.run.v2.ServiceScaling_ScalingMode" json:"scaling_mode,omitempty"` + // Optional. total instance count for the service in manual scaling mode. This + // number of instances is divided among all revisions with specified traffic + // based on the percent of traffic they are receiving. + ManualInstanceCount *int32 `protobuf:"varint,6,opt,name=manual_instance_count,json=manualInstanceCount,proto3,oneof" json:"manual_instance_count,omitempty"` } func (x *ServiceScaling) Reset() { @@ -657,6 +661,13 @@ func (x *ServiceScaling) GetScalingMode() ServiceScaling_ScalingMode { return ServiceScaling_SCALING_MODE_UNSPECIFIED } +func (x *ServiceScaling) GetManualInstanceCount() int32 { + if x != nil && x.ManualInstanceCount != nil { + return *x.ManualInstanceCount + } + return 0 +} + // Hardware constraints configuration. type NodeSelector struct { state protoimpl.MessageState @@ -846,7 +857,7 @@ var file_google_cloud_run_v2_vendor_settings_proto_rawDesc = []byte{ 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xfa, 0x41, 0x25, 0x0a, 0x23, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4d, 0x65, 0x73, - 0x68, 0x52, 0x04, 0x6d, 0x65, 0x73, 0x68, 0x22, 0xe4, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, + 0x68, 0x52, 0x04, 0x6d, 0x65, 0x73, 0x68, 0x22, 0xbc, 0x02, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x31, 0x0a, 0x12, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x10, 0x6d, 0x69, 0x6e, @@ -856,60 +867,65 @@ var file_google_cloud_run_v2_vendor_settings_proto_rawDesc = []byte{ 0x75, 0x64, 0x2e, 0x72, 0x75, 0x6e, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0b, 0x73, 0x63, 0x61, 0x6c, 0x69, - 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x46, 0x0a, 0x0b, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, - 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x43, 0x41, 0x4c, 0x49, 0x4e, 0x47, - 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x55, 0x54, 0x4f, 0x4d, 0x41, 0x54, 0x49, 0x43, - 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x10, 0x02, 0x22, 0x35, - 0x0a, 0x0c, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x25, - 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x6c, 0x65, - 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2a, 0xb3, 0x01, 0x0a, 0x0e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x12, 0x1f, 0x0a, 0x1b, 0x49, 0x4e, 0x47, 0x52, - 0x45, 0x53, 0x53, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x4e, 0x47, - 0x52, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x5f, 0x41, 0x4c, 0x4c, - 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x52, - 0x41, 0x46, 0x46, 0x49, 0x43, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x4f, - 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x2a, 0x0a, 0x26, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, - 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, - 0x4c, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x52, 0x10, - 0x03, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x52, 0x41, - 0x46, 0x46, 0x49, 0x43, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x04, 0x2a, 0x7d, 0x0a, 0x14, 0x45, - 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, - 0x65, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x21, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x45, 0x58, - 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, - 0x45, 0x4e, 0x54, 0x5f, 0x47, 0x45, 0x4e, 0x31, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x45, 0x58, - 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, - 0x45, 0x4e, 0x54, 0x5f, 0x47, 0x45, 0x4e, 0x32, 0x10, 0x02, 0x2a, 0x70, 0x0a, 0x1d, 0x45, 0x6e, - 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x76, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x2c, 0x45, - 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x52, 0x45, - 0x56, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, - 0x0b, 0x50, 0x52, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x4e, 0x45, 0x57, 0x10, 0x01, 0x12, 0x0c, - 0x0a, 0x08, 0x53, 0x48, 0x55, 0x54, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x02, 0x42, 0xa0, 0x02, 0xea, - 0x41, 0x63, 0x0a, 0x29, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x19, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0xea, 0x41, 0x5c, 0x0a, 0x23, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4d, 0x65, 0x73, 0x68, 0x12, 0x35, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6d, 0x65, 0x73, 0x68, 0x65, 0x73, 0x2f, 0x7b, 0x6d, - 0x65, 0x73, 0x68, 0x7d, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, 0x75, 0x6e, 0x2e, 0x76, 0x32, 0x42, 0x13, 0x56, - 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x29, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x72, 0x75, 0x6e, 0x2f, 0x61, 0x70, - 0x69, 0x76, 0x32, 0x2f, 0x72, 0x75, 0x6e, 0x70, 0x62, 0x3b, 0x72, 0x75, 0x6e, 0x70, 0x62, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x3c, 0x0a, 0x15, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, + 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x13, 0x6d, 0x61, + 0x6e, 0x75, 0x61, 0x6c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x88, 0x01, 0x01, 0x22, 0x46, 0x0a, 0x0b, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x4d, + 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x43, 0x41, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x55, 0x54, 0x4f, 0x4d, 0x41, 0x54, 0x49, 0x43, 0x10, 0x01, + 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x10, 0x02, 0x42, 0x18, 0x0a, 0x16, + 0x5f, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x35, 0x0a, 0x0c, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x6c, 0x65, + 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x2a, 0xb3, 0x01, + 0x0a, 0x0e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, + 0x12, 0x1f, 0x0a, 0x1b, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x52, 0x41, 0x46, + 0x46, 0x49, 0x43, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x52, 0x41, + 0x46, 0x46, 0x49, 0x43, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, + 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x5f, 0x49, 0x4e, + 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x2a, 0x0a, + 0x26, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, + 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x42, + 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x52, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x4e, 0x47, + 0x52, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x5f, 0x4e, 0x4f, 0x4e, + 0x45, 0x10, 0x04, 0x2a, 0x7d, 0x0a, 0x14, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, + 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x21, 0x45, + 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, + 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x47, 0x45, 0x4e, 0x31, + 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x47, 0x45, 0x4e, 0x32, + 0x10, 0x02, 0x2a, 0x70, 0x0a, 0x1d, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x4b, 0x65, 0x79, 0x52, 0x65, 0x76, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x2c, 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x52, 0x45, 0x56, 0x4f, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x52, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x5f, 0x4e, 0x45, 0x57, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x48, 0x55, 0x54, 0x44, 0x4f, + 0x57, 0x4e, 0x10, 0x02, 0x42, 0xa0, 0x02, 0xea, 0x41, 0x63, 0x0a, 0x29, 0x62, 0x69, 0x6e, 0x61, + 0x72, 0x79, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x19, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x12, 0x1b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0xea, 0x41, 0x5c, + 0x0a, 0x23, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x4d, 0x65, 0x73, 0x68, 0x12, 0x35, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, + 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6d, + 0x65, 0x73, 0x68, 0x65, 0x73, 0x2f, 0x7b, 0x6d, 0x65, 0x73, 0x68, 0x7d, 0x0a, 0x17, 0x63, 0x6f, + 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x72, + 0x75, 0x6e, 0x2e, 0x76, 0x32, 0x42, 0x13, 0x56, 0x65, 0x6e, 0x64, 0x6f, 0x72, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x29, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, + 0x6f, 0x2f, 0x72, 0x75, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x72, 0x75, 0x6e, 0x70, + 0x62, 0x3b, 0x72, 0x75, 0x6e, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1046,6 +1062,7 @@ func file_google_cloud_run_v2_vendor_settings_proto_init() { (*BinaryAuthorization_UseDefault)(nil), (*BinaryAuthorization_Policy)(nil), } + file_google_cloud_run_v2_vendor_settings_proto_msgTypes[4].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/servicedirectory/apiv1beta1/servicedirectorypb/endpoint.pb.go b/servicedirectory/apiv1beta1/servicedirectorypb/endpoint.pb.go index 74ba84c3325d..f72e8e2836b4 100755 --- a/servicedirectory/apiv1beta1/servicedirectorypb/endpoint.pb.go +++ b/servicedirectory/apiv1beta1/servicedirectorypb/endpoint.pb.go @@ -241,7 +241,7 @@ var file_google_cloud_servicedirectory_v1beta1_endpoint_proto_rawDesc = []byte{ 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x7d, 0x2f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x7d, 0x42, 0xf5, 0x02, 0xea, 0x41, 0x61, 0x0a, 0x27, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x6e, 0x74, 0x7d, 0x42, 0xf2, 0x02, 0xea, 0x41, 0x61, 0x0a, 0x27, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x36, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, @@ -256,16 +256,16 @@ var file_google_cloud_servicedirectory_v1beta1_endpoint_proto_rawDesc = []byte{ 0x76, 0x69, 0x63, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x70, 0x62, 0x3b, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x70, 0x62, 0xf8, 0x01, - 0x01, 0xaa, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x79, 0x2e, 0x56, 0x31, 0x42, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0xea, 0x02, 0x28, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x3a, 0x3a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x79, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x63, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x70, 0x62, 0xaa, 0x02, + 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x56, + 0x31, 0x42, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xea, 0x02, + 0x28, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, + 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( diff --git a/servicedirectory/apiv1beta1/servicedirectorypb/lookup_service.pb.go b/servicedirectory/apiv1beta1/servicedirectorypb/lookup_service.pb.go index cfa218434954..265804e9ef92 100755 --- a/servicedirectory/apiv1beta1/servicedirectorypb/lookup_service.pb.go +++ b/servicedirectory/apiv1beta1/servicedirectorypb/lookup_service.pb.go @@ -257,7 +257,7 @@ var file_google_cloud_servicedirectory_v1beta1_lookup_service_proto_rawDesc = [] 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x42, 0x96, 0x02, 0x0a, 0x29, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x42, 0x93, 0x02, 0x0a, 0x29, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x12, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, @@ -266,16 +266,15 @@ var file_google_cloud_servicedirectory_v1beta1_lookup_service_proto_rawDesc = [] 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x70, 0x62, 0x3b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x70, 0x62, 0xf8, 0x01, 0x01, 0xaa, 0x02, - 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x56, - 0x31, 0x42, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, - 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xea, 0x02, - 0x28, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, - 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x70, 0x62, 0xaa, 0x02, 0x25, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x56, 0x31, 0x42, 0x65, + 0x74, 0x61, 0x31, 0xca, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x79, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xea, 0x02, 0x28, 0x47, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x3a, 0x3a, 0x56, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/servicedirectory/apiv1beta1/servicedirectorypb/namespace.pb.go b/servicedirectory/apiv1beta1/servicedirectorypb/namespace.pb.go index 99c8048df472..e3805ed31429 100755 --- a/servicedirectory/apiv1beta1/servicedirectorypb/namespace.pb.go +++ b/servicedirectory/apiv1beta1/servicedirectorypb/namespace.pb.go @@ -171,7 +171,7 @@ var file_google_cloud_servicedirectory_v1beta1_namespace_proto_rawDesc = []byte{ 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x7d, 0x42, 0x92, 0x02, 0x0a, 0x29, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x63, 0x65, 0x7d, 0x42, 0x8f, 0x02, 0x0a, 0x29, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, @@ -180,15 +180,15 @@ var file_google_cloud_servicedirectory_v1beta1_namespace_proto_rawDesc = []byte{ 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x70, 0x62, 0x3b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x64, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x70, 0x62, 0xf8, 0x01, 0x01, 0xaa, 0x02, 0x25, - 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x56, 0x31, - 0x42, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xea, 0x02, 0x28, - 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x3a, - 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x70, 0x62, 0xaa, 0x02, 0x25, 0x47, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x56, 0x31, 0x42, 0x65, 0x74, + 0x61, 0x31, 0xca, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, + 0x64, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x79, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xea, 0x02, 0x28, 0x47, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x3a, 0x3a, 0x56, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/servicedirectory/apiv1beta1/servicedirectorypb/registration_service.pb.go b/servicedirectory/apiv1beta1/servicedirectorypb/registration_service.pb.go index 167dc0c33006..a2f4dbf96ce3 100755 --- a/servicedirectory/apiv1beta1/servicedirectorypb/registration_service.pb.go +++ b/servicedirectory/apiv1beta1/servicedirectorypb/registration_service.pb.go @@ -1809,7 +1809,7 @@ var file_google_cloud_servicedirectory_v1beta1_registration_service_proto_rawDes 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x9c, 0x02, 0x0a, + 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0x99, 0x02, 0x0a, 0x29, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x18, 0x52, 0x65, 0x67, 0x69, @@ -1819,16 +1819,15 @@ var file_google_cloud_servicedirectory_v1beta1_registration_service_proto_rawDes 0x69, 0x63, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x70, 0x62, 0x3b, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x70, 0x62, 0xf8, 0x01, 0x01, - 0xaa, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, - 0x2e, 0x56, 0x31, 0x42, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0xea, 0x02, 0x28, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, - 0x3a, 0x3a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x79, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x63, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x70, 0x62, 0xaa, 0x02, 0x25, + 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x56, 0x31, + 0x42, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xea, 0x02, 0x28, + 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x3a, + 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/servicedirectory/apiv1beta1/servicedirectorypb/service.pb.go b/servicedirectory/apiv1beta1/servicedirectorypb/service.pb.go index 37aa5f0eb27b..87602b2fdeba 100755 --- a/servicedirectory/apiv1beta1/servicedirectorypb/service.pb.go +++ b/servicedirectory/apiv1beta1/servicedirectorypb/service.pb.go @@ -213,7 +213,7 @@ var file_google_cloud_servicedirectory_v1beta1_service_proto_rawDesc = []byte{ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x7d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x7d, - 0x42, 0x90, 0x02, 0x0a, 0x29, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x42, 0x8d, 0x02, 0x0a, 0x29, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x55, @@ -222,15 +222,15 @@ var file_google_cloud_servicedirectory_v1beta1_service_proto_rawDesc = []byte{ 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x70, 0x62, 0x3b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x79, 0x70, 0x62, 0xf8, 0x01, 0x01, 0xaa, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x56, 0x31, 0x42, 0x65, 0x74, 0x61, 0x31, - 0xca, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, - 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xea, 0x02, 0x28, 0x47, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x72, 0x79, 0x70, 0x62, 0xaa, 0x02, 0x25, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x56, 0x31, 0x42, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x25, + 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x5c, 0x56, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0xea, 0x02, 0x28, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, + 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var (